当流静音时ffmpeg关闭

时间:2017-02-07 05:04:58

标签: youtube ffmpeg streaming icecast

我在Linux环境中运行ffmpeg,在那里我合并了来自Icecast-stream和静态图像的音频流,以便能够将其传输到Youtube。

有时,Icecast流非常安静,有时几乎一分钟。由于内容的性质,这是打算发生的。但是,当流变得过于沉默时,ffmpeg会在没有任何通知的情况下关闭。

这是我开始ffmpeg的方式:

ffmpeg -loop 1 -r 30  -s 1280x720 -i /var/www/html/files/youtube/image.png -i http://my-stream-to-icecast:8000/my-mount -c:v libx264 -preset fast -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p -f flv rtmp://a.rtmp.youtube.com/live2/my-youtube-key

关于如何解决这个问题的任何想法?和/或如何优化上述?

非常感谢!

2 个答案:

答案 0 :(得分:1)

抱歉,请忽略此答案。如果将流发送回Icecast服务器而不是Youtube,则适用。

这很可能是由于Icecast的源超时造成的。如果您使用高效的编解码器,则静音编码为“无”,并且icecast服务器将不会获取任何数据并断开源。

您可以通过查看Icecast error.log

来确认这一点

根据您使用的编解码器,您可以配置最小比特率(编解码器然后插入虚拟数据),或者您需要将低电平噪声注入音频端。一个或两个最低有效位足够且人类无法察觉,但会使编码器忙碌并且比特率更高。

答案 1 :(得分:0)

您可以尝试将其与虚拟流混合使用:

ffmpeg -loop 1 -framerate 30 -i /var/www/html/files/youtube/image.png
 -reconnect_streamed 1 -reconnect_delay_max 120 -i http://my-stream-to-icecast:8000/my-mount
 -f lavfi -i anullsrc
 -filter_complex "[1]aresample=async=1[i];[i][2]amix=2:shortest,volume=2[a]"
 -map 0:v -map "[a]"
 -c:v libx264 -s hd720  -preset fast -tune stillimage -crf 18 -pix_fmt yuv420p
 -c:a aac -shortest
 -f flv rtmp://a.rtmp.youtube.com/live2/my-youtube-key

如果Icecast饲料死亡,我不知道amix将如何处理它。你必须检查。