如何不拔卡调取摄像头监控-回放取流

如何不拔卡调取摄像头监控(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页面:

image-20241217210948894

docker 删除旧的镜像

运行简单的命令

  1. docker images -a

  2. 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, 会提示:

image-20241217223608783

调用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是水印图像的文件名,WH分别代表视频的宽度和高度。该命令将在视频的右下角添加一个距离视频右下角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

### -r 调整帧率
#不指定帧率的话,ffmpeg会使用默认的25帧,也就是1秒钟拼接25张图片

灵感来源

本站搜索: 动态公网IP 和 SRS

SRS - H.265直播省一半带宽费用

FFmpeg推流命令总结

个性化需求沟通 扫客服加V加群: