所以我按如下方式将视频和音频流式传输到YouTube
1.首先我将图形GIF转换为MP4文件
ffmpeg -f gif -i graphic.gif -c:v libx264 -pix_fmt yuv420p -vf scale=1280:-1 temp.mp4
2.然后我在MP4上叠加带有文字的PNG
ffmpeg -i temp.mp4 -i overlay.png -filter_complex "overlay=10:10" '.$graphicsPath.'/graphic.mp4
3.然后我开始播放视频流并使用以下代码将其与音频相结合(sources.txt只是一个连续列表*)
ffmpeg -f concat -i sources.txt -i music.mp3 \
-c:v libx264 -c:a aac -shortest -deinterlace \
-pix_fmt yuv420p -preset '.$encoding.' -r 30 -g 60 -b:v 2500k \
-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b:a 712000 \
-maxrate 800k -bufsize 1400k \
-f flv rtmp://a.rtmp.youtube.com/live2/KEY
4.流结束后,代码重新开始播放新歌,以模仿247流。
所以我遇到的问题是它看起来流速太快了。它与缓冲问题相反,缓冲区太长了(就像在打开流时第一个完成时缓冲的完整歌曲一样)
有谁知道如何限制输出?我尝试使用maxrate
和bufsize
,但没有真正的结果。
* sources.txt示例
file' graphic.mp4'
file' graphic.mp4'
file' graphic.mp4'
file' graphic.mp4'
file' graphic.mp4'
file' graphic.mp4'
等等
答案 0 :(得分:2)
Ffmpeg过程输入尽可能快。要将其减慢到实时,请添加' -re'流式传输到rtmp时标记