FFMPEG-流到RTMP输出,同时保存到MP4-重新连接
我正在尝试设置一个管道,在这里我可以获取输入并保存到MP4,同时流式传输到RTMP服务器 到目前为止,我已经能够使用一个tee过滤器来实现这一点,还可以使用onfail=ignore来确保管道在RTMP/记录失败的情况下保持正常 太棒了 但是,我不希望RTMP放弃掉或断开连接,我希望它继续尝试重新连接并恢复流 我不认为FFMPEG有这样的功能,所以我需要用bash脚本或其他东西来编写它,以便在数据丢失时继续重新启动进程 我只是不知道如何做到这一点 以前有人有什么想法或解决过这个问题吗 谢谢FFMPEG-流到RTMP输出,同时保存到MP4-重新连接,ffmpeg,rtmp,Ffmpeg,Rtmp,我正在尝试设置一个管道,在这里我可以获取输入并保存到MP4,同时流式传输到RTMP服务器 到目前为止,我已经能够使用一个tee过滤器来实现这一点,还可以使用onfail=ignore来确保管道在RTMP/记录失败的情况下保持正常 太棒了 但是,我不希望RTMP放弃掉或断开连接,我希望它继续尝试重新连接并恢复流 我不认为FFMPEG有这样的功能,所以我需要用bash脚本或其他东西来编写它,以便在数据丢失时继续重新启动进程 我只是不知道如何做到这一点 以前有人有什么想法或解决过这个问题吗 谢谢 Ma
Matt使用fifo格式,可以重新连接 我的工作示例:
-f fifo -fifo_format flv \
-drop_pkts_on_overflow 1 -attempt_recovery 1 -recover_any_error 1 \
rtmp://bla.bla/bla
+1表示接受的答案,但: 在FFmpeg中,编码器根据选定的输出格式自动检测其参数。这里的输出格式未知(这对于“fifo”和“tee”等格式是正确的),因此编码器不会像使用“flv”输出格式那样设置所有参数 例如:Wowza流媒体引擎将在尝试发布该RTMP流时报告错误:
H264Utils.decodeAVCC : java.lang.ArrayIndexOutOfBoundsException: 9
为了克服这个问题,您应该添加-flags+global_header
选项。
这应该有助于解决@Matt的问题。谢谢你,Ipor。经过一番反复试验和谷歌搜索后,我终于能够做到这一点。非常感谢!不幸的是,虽然这样做的工作,它似乎打破了HLS播放媒体服务器上。当使用FIFO缓冲区时,它传输的元数据的某些内容会被破坏。