ffmpeg - 以更高的 FPS 重新流式传输 RTSP
问题描述
我的 RTSP 流具有非常低且非恒定的 FPS(在 0.2 ... 0.5 之间变化)。它是使用-skip_frame
flag 生成的,以尽可能减少网络和 CPU 的使用:
ffmpeg -skip_frame nointra -i <rtsp-source> -vsync 2 -f rtsp <low-fps-destination>
因此,连接到该流并看到第一个有意义的图像需要很长时间(1 ... 3 分钟)。我希望此流无需任何调整即可与通用播放器一起使用,因此我决定以更高的 FPS(准确地说是 10)重新流式传输它:
ffmpeg -i <low-fps-source> -vf "fps=fps=10,setpts=N/(10*TB)" -f rtsp <normal-fps-destination>
不完全确定该命令是如何工作的,但它以某种方式起到了作用,并将连接时间减少到大约 5 秒。但是,我怀疑它是在突发输出帧,这并不理想。例如,如果原始低 fps 流包含相隔 3 秒的 2 帧,我的重新流命令(可能)执行以下操作:
- 当第一个输入帧到来时,尽可能快地输出一堆帧
- 整整 3 秒不输出任何内容
- 第二帧来的时候,尽快输出3 * 10 = 30帧
- 再次休眠,直到出现新的输入框...
有没有办法让我的重新流式传输命令输出帧均匀(具有恒定的 FPS)?或者也许还有另一种方法可以减少 RTSP 连接(缓冲?)时间?
解决方案
推荐阅读
- r - 计算R中特定日期和今天日期之间的天数
- jenkins-pipeline - 在 Jenkinsfile 中执行 shell 命令
- html - Django - 不违反 DRY 的表单首选编程设计
- bash - 具有多个空格的变量的 Bash 参数扩展
- python - 无法在 python virtualenv 中安装 mysqlclient
- testing - 模拟 go 方法
- angular - 根据在 Angular 的反应形式中选择的数字推送迭代的行
- android - SpotsDialog 在 'dmax.dialog.SpotsDialog 中具有私有访问权限
- xml - XSLT 求和函数
- javascript - 具有动态嵌套键的对象