【问题标题】:ffmpeg two-pass in ts stream productionts流制作中的ffmpeg两遍
【发布时间】:2023-03-03 09:53:01
【问题描述】:

如何在使用 .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 比特率用于视频流时,它会产生约 380k 的 ts 块(当然没有音频)。

【问题讨论】:

    标签: bash ffmpeg video-streaming http-live-streaming


    【解决方案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
    

    这应该会给你你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2014-02-20
      • 2012-03-06
      • 2023-04-08
      • 2017-12-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多