如何不拔卡调取摄像头监控(TP1Z为例子)
有什么用&怎么用
如何不拔卡调取摄像头监控-回放取流
通过获取摄像头的回放取流地址, 来读取摄像头中的回放数据
背景: 某位调皮的顾客, 非要上来就诬陷我更换了他的Switch电池. 百口莫辩, 实属无奈还得去调阅监控. 上次的方法是直接把卡, 然后找到监控的目录文件(按日期时间命名的), 最后拷贝出多个大的文件, 然后在组合多个此类MP4文件成为完整的全过程监控.
这样做太累人了, 而且导致了监控的中断.
今天尝试使用取流回放流的方式, 成功取到了回放的流; 但是要录制成完整的mp4,需要等量的时间(1.5小时多); 这可真累人啊, 一个命令要执行1.75个小时, 我哪有那个耐心和时间?
于是乎, 想各种其他的方法, 推流到SRS, 让他自己去看SRS上回放的流(网页播发失败).
最后还是使用抽帧最快, 每5秒抽一张照片, 抽出来一共将近1千张截图, 基本可以完全涵盖了整个修复过程(也证明了我没有去动电池)
某某同学: 请移步去网盘看看您设备的修复全过程吧, switchSDadapter20241213.mp4
(因为他已自行觉悟并确认收货, 我不会在发他视频去所谓的自证清白; 终于明白为啥需要法院这样的第三方来沟通矛盾, 有时2个方面直接联系, 根本无效, 累死宝宝)
后话: 这种方式还不完美(目前已经够用, 足以当证据来提交第三方), 不够高效; 后期还需努力把回放的流推流到SRS更高效, 根本只需要参数就OK(限时特定时间段可查阅, 不长期保存)
相关内容
获取摄像头的回放取流URL地址
比如这是我的实例
1. 回放取流url
1
| rtsp://admin:d@172.22.0.26:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_11_19_00&endtime=2024_12_13_12_51_48
|
说明:
- playback表示回放
- channel=number表示通道号
- subtype=0表示主码流
- starttime=YYYY_MM_DD_HH_mm_SS表示回放开始时间
- endtime=YYYY_MM_DD_HH_mm_SS表示回放结束时间
20240705 实测有效,vlc播放成功。这是一个实用的功能
可随时查看回放
2. 录制取流地址内视频
1
| ffmpeg -i "rtsp://地址" -t 录制秒数 文件名.mp4
|
录制MP4
1 2 3 4 5
| ffmpeg -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00" -t 5568 Switch的SD卡底座修复.mp4
# 关键帧录制 ffmpeg -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48" -vf "select='eq(pict_type,PICT_TYPE_I)'" -t 1:32:48 -vcodec copy -acodec copy -f mp4 Switch的SD卡底座修复.mp4
|
ffmpeg+加速录制+rtsp流
FLV录制FLV
1 2 3 4 5 6 7
| ffmpeg -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00" -t 1:32:48 -vcodec copy -acodec copy -f flv Switch的SD卡底座修复.flv #也是太慢了,要一秒一秒录制, 真的要等待1个半小时
#关键帧录制 ffmpeg -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00" -vf "select='eq(pict_type,PICT_TYPE_I)'" -t 1:32:48 -vcodec copy -acodec copy -f flv Switch的SD卡底座修复2.flv
|
ffmpeg+加速录制+rtsp流
推流这段回放到SRS服务器上, 让服务器不停循环播放即可
可否把思路转变为: 推流这段回放到SRS服务器上, 让服务器不停循环播放即可
rtsp://*:d@172.22.0.26:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_11_19_00&endtime=2024_12_13_12_51_48
3. 推流回放流到SRS
ffmpeg -re -i “rtsp://*:d@172.22.0.26:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_11_19_00&endtime=2024_12_13_12_51_48” -c copy -f flv -y rtmp://192.168.6.221:1935/live/switchSDadapter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ffmpeg -re -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48" -c copy -f flv -y rtmp://192.168.6.116:1935/live/switchSDadapter
Metadata: title : Media Server Duration: 02:30:30.00, start: 0.000000, bitrate: N/A Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 10 fps, 100 tbr, 90k tbn Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp [flv @ 0x563db2eb0400] Video codec hevc not compatible with flv [out#0/flv @ 0x563db2e9f000] Could not write header (incorrect codec parameters ?): Function not implemented [aost#0:1/copy @ 0x563db2e9bac0] Error initializing output stream: Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Last message repeated 1 times
|
可以推流成功, 但是无法获取图像, 如何修复?
原来是我的SRS目前版本(5.0)不支持H.265, 导致上面的错误, 临时的解决方案是使用H.264
1
| ffmpeg -re -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48" -c copy -vcodec libx264 -f flv -y rtmp://192.168.6.116:1935/live/switchsdcar
|
这样就是H.264了可是画面经常花屏, 画面有故障.
还是去升级SRS更靠谱
升级后
管理SRS页面:
docker 删除旧的镜像
运行简单的命令
docker images -a
docker image rm
删除未使用的Docker镜像:.
docker image prune
docker image prune -a.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y .... Total reclaimed space: 1.034GB
root@Debian11:/www/server/panel/data/compose/srs# docker images -a REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/ossrs/srs 6 298b47d809f9 3 months ago 158MB jc21/nginx-proxy-manager latest 28147ecda659 5 months ago 1.09GB registry.cn-hangzhou.aliyuncs.com/ossrs/srs 5 5a4b3440626f 6 months ago 156MB yidadaa/chatgpt-next-web latest 0737281804a6 7 months ago 200MB teddysun/hysteria latest fd9e3fc55d0c 8 months ago 27MB artalk/artalk-go latest 84a28d6e4f57 9 months ago 52.8MB alpine latest 05455a08881e 10 months ago 7.38MB mariadb jammy c74611c2858a 12 months ago 404MB zmisgod/iptvchecker latest 842f43ba9daf 12 months ago 944MB node latest b866e35a0dc4 12 months ago 1.1GB matomo latest 10c0eb643cc0 12 months ago 576MB metacubex/clash-meta Alpha f2b726e6300e 13 months ago 90.9MB yourls latest 922ce96efa9b 13 months ago 513MB ghcr.io/metacubex/metacubexd latest 7ef93884b264 13 months ago 51.9MB snowdreamtech/frps latest ee2878617a63 14 months ago 24.1MB adams549659584/go-proxy-bingai latest 0dd1ec40e63b 18 months ago 14.7MB stilleshan/hideipnetwork-web latest 34e0e6b19b99 20 months ago 140MB searx/searx latest 146813a62a41 20 months ago 172MB openjdk 8u342-jdk b273004037cc 2 years ago 526MB yaonew/mmplayer latest 05f26aed5bfd 2 years ago 200MB
root@Debian11:/www/server/panel/data/compose/srs# docker image rm 5a4b3440626f Untagged: registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 Untagged: registry.cn-hangzhou.aliyuncs.com/ossrs/srs@sha256:b429bdb565f0a533e60634856760a500a1b673f8cadce072b2a2eb2674cd7b31 Deleted: sha256:5a4b3440626f0468254ac3c2eb99d9d744b9640d2d6ece0dd269af947b62ebe5 Deleted: sha256:f7762c297912069c267d347427fd4f959650cc2aa0a5b2fbc41527e025a26574 Deleted: sha256:b9a47b202efd2bdddbdcfecd4c111e964f8f6a875f1a8284c683ea666525751d Deleted: sha256:fd56f7f39f1ebe03640162ad77a1f733d7c3929fc0e35bb6415aaa555300c727 Deleted: sha256:fb4b0d13ce99bc5901e085a3e587b9f9af63ebd5eed3293c779b542eab085c80
root@Debian11:/www/server/panel/data/compose/srs# docker images -a REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/ossrs/srs 6 298b47d809f9 3 months ago 158MB jc21/nginx-proxy-manager latest 28147ecda659 5 months ago 1.09GB yidadaa/chatgpt-next-web latest 0737281804a6 7 months ago 200MB teddysun/hysteria latest fd9e3fc55d0c 8 months ago 27MB artalk/artalk-go latest 84a28d6e4f57 9 months ago 52.8MB alpine latest 05455a08881e 10 months ago 7.38MB mariadb jammy c74611c2858a 12 months ago 404MB zmisgod/iptvchecker latest 842f43ba9daf 12 months ago 944MB node latest b866e35a0dc4 12 months ago 1.1GB matomo latest 10c0eb643cc0 12 months ago 576MB metacubex/clash-meta Alpha f2b726e6300e 13 months ago 90.9MB yourls latest 922ce96efa9b 13 months ago 513MB ghcr.io/metacubex/metacubexd latest 7ef93884b264 13 months ago 51.9MB snowdreamtech/frps latest ee2878617a63 14 months ago 24.1MB adams549659584/go-proxy-bingai latest 0dd1ec40e63b 18 months ago 14.7MB stilleshan/hideipnetwork-web latest 34e0e6b19b99 20 months ago 140MB searx/searx latest 146813a62a41 20 months ago 172MB openjdk 8u342-jdk b273004037cc 2 years ago 526MB yaonew/mmplayer latest 05f26aed5bfd 2 years ago 200MB
|
降低每秒的帧率 -r 1 来推流
1 2
| ffmpeg -re -i "rtsp://*:*@192.168.6.211:554/cam/playback?chan nel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48" -r 1 -c copy -f flv -y rtmp://192.168.6.116:1935/live/switchSDadapter
|
VLC可以正常流程播放 https://cam1.carlzeng.com:3/live/switchSDadapter.m3u8
可是本地的网页播放器和官方的网页播放器都无法正常播放
暂时搞不定, 不管怎么调整ffmpeg的参数, 都是无法成功使用网页播放器来播放回流
我何必需要推流给SRS, 直接外网映射进来; 可直接播发的回放取流地址不就行了?
何必推来推去(因为本身已经是视频的情况下)
如何保护播放‘回放取流地址’的具体地址? 因为它具有最高权限, 这是极其危险的行为.
rtsp://*:password@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48
目前紧急情况, 使用 Yourls缩短以后, 浏览器打开 https://c.carlzeng.com:4443/12131, 会提示:
调用VLC以后, 可以正常播放(在本地播放) ; 配置切换地址后, 也可以网络播放.
使用在线srs播放器拉流
在线SRS播放器播放, 由于RTMP已经被禁用了,请使用HTTP-FLV链接。
如何去除录制的视频中的音频?
-an
似乎 只能用在转化的时候使用, 无法在推流时使用
ffmpeg能不能嵌套呢? 一边转化一边把转化的结果推流
就是视频过滤 filter
ffmpeg 添加水印/字母/OSD
我们需要创建一个滤镜链来添加水印。我们可以使用movie
滤镜来加载水印图像,然后使用overlay
滤镜将水印添加到视频中。以下是示例命令:
1 2
| shell ffmpeg -i input.mp4 -vf "movie=watermark.png[watermark];[in][watermark]overlay=W-w-10:H-h-10[out]" output.mp4
|
其中,watermark.png
是水印图像的文件名,W
和H
分别代表视频的宽度和高度。该命令将在视频的右下角添加一个距离视频右下角10个像素的水印。
在执行命令后,FFmpeg会将视频重新编码,并将添加水印后的视频保存为output.mp4
。
除了在右下角添加水印,我们还可以控制水印的位置、大小和透明度等。例如,以下命令将在视频左上角添加一个大小为100x100像素,透明度为50%的水印:
1 2
| shell ffmpeg -i input.mp4 -vf "movie=watermark.png[watermark];[in][watermark]overlay=10:10:alpha=0.5[out]" output.mp4
|
需要注意的是,添加水印会增加视频的处理时间和文件大小。如果您对视频质量要求较高,可以使用额外的参数进行优化,如调整视频的帧率、码率等。这些参数可以根据实际情况进行调整。
总的来说,使用FFmpeg命令给视频添加水印是一种简单而有效的方法。
[新思路] 每5秒抽帧
可以对回放的视频(时长1.5小时), 进行时间很短间隔的抽帧, 最后再把照片组合成视频
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ffmpeg -i "rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48" -y -f image2 -r 1/5 /Users/carlzeng/Downloads/switchSDadapter/202412131%03d.jpg
Input #0, rtsp, from 'rtsp://*:*@192.168.6.211:554/cam/playback?channel=1&subtype=1&starttime=2024_12_13_10_19_00&endtime=2024_12_13_12_51_48': Metadata: title : Media Server Duration: 02:30:30.00, start: 0.000000, bitrate: N/A Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 10 fps, 100 tbr, 90k tbn Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp Stream mapping: Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native)) Press [q] to stop, [?] for help Output #0, image2, to '/Users/carlzeng/Downloads/switchSDadapter/202412131%03d.jpg': Metadata: title : Media Server encoder : Lavf60.16.100 Stream #0:0: Video: mjpeg, yuvj420p(pc, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 0.20 fps, 0.20 tbn Metadata: encoder : Lavc60.31.102 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A frame= 273 fps=0.2 q=5.5 size=N/A time=00:22:40.00 bitrate=N/A dup=0 drop=13305 speed= 1x
|
最后再组合成MP4文件
1 2 3 4 5 6 7
| ffmpeg -r 1 -f image2 -i 202412131%03d.jpg switchSDadapter.mp4
#如果需要每秒0.5张,也就是每张图片2秒钟后切换 ffmpeg -r 0.5 -f image2 -i 202412131%03d.jpg switchSDadapter.mp4
# #不指定帧率的话,ffmpeg会使用默认的25帧,也就是1秒钟拼接25张图片
|
灵感来源
本站搜索: 动态公网IP 和 SRS
SRS - H.265直播省一半带宽费用
FFmpeg推流命令总结
个性化需求沟通 扫客服加V加群: