FFMPEG - 流式传输到RTMP输出并同时保存到MP4 - 重新连接



我正在尝试设置一个管道,我可以在其中获取输入并保存到MP4,同时流式传输到RTMP服务器。

到目前为止,我已经能够使用 tee 过滤器来实现这一点,并且还使用 onfail=ignore 来确保管道在 RTMP/录制失败时保持正常运行。

太好了!

但是,我不希望 RTMP 在丢弃或断开连接时放弃,我希望它继续尝试重新连接并恢复流。

我不认为 FFMPEG 有这样的东西,所以我需要用 bash 脚本编写它,或者在下降时不断重新启动进程。

我只是不知道如何实现这一目标!

以前有没有人有任何想法或解决这个问题?

谢谢

马 特

使用 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的问题。

最新更新