在ts流生产中ffmpeg两次通过

时间:2015-11-06 11:34:04

标签: bash ffmpeg video-streaming hls

如何在使用.ts块输出时进行双向转换?

我在bash脚本中使用以下命令生成块(我认为所有变量都足够清楚了解):

ffmpeg -i $1 -threads 1 -b:v ${selected_bitrate} -b:a ${audio_bitrate} -s ${selected_width}x${selected_height} -r ${framerate} -preset fast -level ${level} -vcodec libx264 -f ssegment -segment_list b${selected_bitrate}.m3u8 -segment_time 9 -force_key_frames "expr:gte(t,n_forced*9)" -y b${selected_bitrate}_%05d.ts

我想尝试两遍,因为我需要更准确地匹配所需的比特率。现在,当我使用例如200k比特率的视频流时,它会在ts块中产生~380k(当然没有音频)。

1 个答案:

答案 0 :(得分:1)

只需使用“-pass 1”调用libx264,如下所示:

ffmpeg -i $1 -threads 1 -ar -b:v ${selected_bitrate} -s ${selected_width}x${selected_height} -r ${framerate} -preset fast -level ${level} -vcodec libx264 -pass 1 -f null -

然后用“-pass 2”重复你的命令:

ffmpeg -i $1 -threads 1 -b:v ${selected_bitrate} -b:a ${audio_bitrate} -s    ${selected_width}x${selected_height} -r ${framerate} -preset fast -level ${level} -vcodec libx264 -pass 2 -f ssegment -segment_list b${selected_bitrate}.m3u8 -segment_time 9 -force_key_frames "expr:gte(t,n_forced*9)" -y b${selected_bitrate}_%05d.ts

那可以给你你想要的东西。