2

我为我的 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

对此有什么想法吗?谢谢!

4

1 回答 1

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(我认为)和音频采样率-阿尔

于 2012-06-08T15:03:33.870 回答