首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能会随着时间的推移而降低样品,为RTSP服务吗?

可能会随着时间的推移而降低样品,为RTSP服务吗?
EN

Stack Overflow用户
提问于 2022-04-06 23:56:00
回答 1查看 113关注 0票数 0

我想拿一个RSTP摄像头,将视频降到更低的速率(例如每5秒一帧),并将结果作为RTSP流提供。是否可以配置ffmpeg (或libffmpeg)来做这样的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-08 10:21:03

是的,我们所要做的就是添加-r 0.2参数,并重新编码视频。

还建议添加-tune zerolatency-g 1,以确保每个帧都是关键帧(在视频延迟相关的情况下需要这样做)。

示例:

从本地主机接收RTSP流,并以0.2fps (到具有不同端口的本地主机)进行流:

代码语言:javascript
复制
ffmpeg -rtsp_flags listen -rtsp_transport tcp -stimeout 1000000 -i rtsp://127.0.0.1:10000/live.stream -r 0.2 -vcodec libx264 -tune zerolatency -pix_fmt yuv420p -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:20000/live.stream

测试:

为了进行测试,我用FFmpeg (25 For的流合成视频)模拟了RTSP摄像机。

RTSP流由另一个FFmpeg进程捕获,该进程将速率降低到0.2fps。

该0.2fps视频被捕获和显示使用FFprobe。

测试是作为批处理文件实现的:

代码语言:javascript
复制
::Play the video for testing
start ffplay -rtsp_flags listen -rtsp_transport tcp -flags low_delay -vf setpts=0 -listen_timeout 1000000 rtsp://127.0.0.1:20000/live.stream

::Wait 5 seconds
ping 127.0.0.1 -n 5 > nul

::Capture the RTSP camera at 25fps, convert to 0.2fps (with re-encoding)
start ffmpeg -rtsp_flags listen -rtsp_transport tcp -stimeout 1000000 -i rtsp://127.0.0.1:10000/live.stream -r 0.2 -vcodec libx264 -tune zerolatency -pix_fmt yuv420p -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:20000/live.stream

::Wait 5 seconds
ping 127.0.0.1 -n 5 > nul

::Simulate an RTSP camera at 25fps
ffmpeg -re -f lavfi -i testsrc=size=192x108:rate=25 -vcodec libx264 -pix_fmt yuv420p -g 30 -rtsp_transport tcp -f rtsp -muxdelay 0.1 rtsp://127.0.0.1:10000/live.stream

它开始尴尬,并得到稳定后,几个帧。

(我们使用select滤波器解决这个问题)。

样本框架:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71774828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档