我正在做一个项目,需要从YouTube获取rtsp链接,并使用ffmpeg将这些视频流式传输到rtmp服务器。我的解决方案有效,但是存在一些问题。
我正在使用以下设置:
-max_delay 0 -initial_pause 0 -rtsp_transport udp -i " + inputLink + " -vcodec libx264 -acodec mp3 -ab 48k -bit_rate 450 -r 25 -s 640x480 -f flv " + stream
inputLink 替换为 rtsp 链接,流替换为 rtmp 服务器链接
所以这有效,但这是我遇到的问题:
- 在每个视频的开头,都有一个很大的滞后峰值/大量帧掉落,然后视频重新同步并正常播放
有些视频会崩溃ffmpeg,显示"转换失败"消息,并且在转换/流过程中丢失了许多帧。
在每个视频结束时,它会开始滞后/丢帧,就在视频末尾附近,换句话说,它不会正常结束,每个视频都以滞后/丢帧结束
我一直在努力工作很长时间,现在我终于做到了,我只需要通过处理这两个问题来完善它,如果有人有关于rtsp_transport协议以及如何让它流的有用信息没有问题,我将不胜感激。谢谢!
你弄错了一些设置。
-bit_rate 450
:你要求每秒450位,难怪会掉很多帧!它应该是 450k。
如果您想要 450 kbps 的流,请使用 -ab 48k -vb 402k
, 其中 402 = 450 - 48
.
flv 格式仅支持某些音频速率。您还需要将-ar
与以下值之一一起使用:44100、22050 或 11025。
ffmpeg -i rtsp://... -c:v libx264 -c:a mp3 -ab 48k -ar 44100 -vb 402k -r 25 -s 640x480 -f flv test.flv