【问题标题】:Default ffmpeg codec when nothing is specified未指定任何内容时的默认 ffmpeg 编解码器
【发布时间】:2013-07-22 16:53:23
【问题描述】:

如果我导入一个文件以与 ffmpeg 一起使用,但没有指定任何有关任何流的编解码器的任何内容,那么 ffmpeg 会做任何事情吗?是只复制编解码器的默认操作吗?或者 ffmpeg 会使用一些默认编解码器对输入文件进行编码吗?

以下两个命令是否相同?或者第二个会重新编码并花费很长时间?

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

ffmpeg -i input.mkv output.mp4

【问题讨论】:

    标签: ffmpeg codec


    【解决方案1】:

    如果我导入一个文件以与 ffmpeg 一起使用,但没有指定任何有关任何流的编解码器的任何内容,ffmpeg 会做任何事情吗?

    ffmpeg 将使用默认编码器重新编码输入中的每个流。使用的编码器将取决于您如何配置 ffmpeg。例如,如果可用 libx264 将是 mp4 输出的默认编码器,但如果不可用,则将使用 mpeg4。默认情况下,ffmpeg 只会重新编码每种类型的一个流,而忽略其余的流(参见stream selection)。

    在您的两个命令中,第一个将使用stream copy mode 来显示视频和音频。您的第二个命令将重新编码。

    【讨论】:

    • 如果我导入一个已经有 h.264 视频流的 mp4 文件怎么办?它会尝试再次对其进行编码,而不改变任何内容,但无论如何都要花费很长时间吗?还是它会识别出它已经是默认编解码器并直接复制它?
    • @Sam ffmpeg 将始终重新编码,除非您另有说明。
    • 是否会有质量损失主要取决于输出格式。无损格式是一个例外,但如果需要进行色彩空间转换,仍然会出现质量损失。但是,例如,如果您输出到有损 H.264 视频,则可以通过正确的选项使其看起来“视觉无损”;这意味着它在技术上不是无损的,但它已经足够好了,大多数人都无法区分。请参阅FFmpeg and x264 Encoding Guide
    • “使用的编码器将取决于您如何配置 ffmpeg:”那么文档在哪里解释呢?音频和视频?
    • 我一定很密集。该文档仍然没有提及默认值,无论是在 ./configure 的选项中还是在 ffmpeg -encoders 中。
    【解决方案2】:

    要在您的计算机上发现第二个命令
    ffmpeg -i input.mkv output.mp4 使用的默认编解码器(音频和视频):

    • 运行该命令,可能使用-t 5,以便更快完成(编码只需 5 秒)。

    • 运行ffprobe output.mp4。扫描“视频”和“音频”的输出以查看最终使用了哪些编解码器。例如,我的 Ubuntu 12 安装使用 h264 和 aac。

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多