我在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
关于如何解决这个问题的任何想法?和/或如何优化上述?
非常感谢!
答案 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将如何处理它。你必须检查。