我将多播视频流分割成我的HTTP直播流服务的小ts文件,并且效果很好。然后我发现源的比特率太高(1.5mbps)所以我设置了一个后台作业,使用FFmpeg将ts文件转码为较小的比特率(500kbps)。问题是500k .m3u8播放断断续续(在每个新文件的加载时)并不像1.5mbps那样平滑。
我的转码命令行如下:
ffmpeg -i /home/rca/tst.ts -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -vcodec libx264 -b 500k /home/rca/tst.ts
对此有何想法?谢谢!
答案 0 :(得分:1)
降低分辨率和/或丢帧。这是低带宽连接的交易空间。
幸运的是,一位同事(@enobrev)在审查各种降低带宽的方法方面做了一些出色的工作:
从原始未编码格式开始是最好的,否则在ffmpeg中设置比特率不会有太大作用(尽管会降低分辨率和帧速率)。
ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi" -vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 64000 -r 10 -vf "scale=240:-1" -ab 24k -ar 22050 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_lowres_64kbps%d.ts
ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi" -vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 300000 -r 24 -vf "scale=480:-1" -ab 96k -ar 22050 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_midres_300kbps%d.ts
ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi" -vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 1200000 -r 24 -vf "scale=640:-1" -ab 192k -ar 44100 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_hires_1.2mbps%d.ts
你可以调整更多的参数,但在上面我设置了比特率-b:v,帧率-r,视频分辨率-vf和音频比特率-ab(我认为)和音频采样率-ar