nc404 Asked: 2020-08-22 18:50:46 +0800 CST2020-08-22 18:50:46 +0800 CST 2020-08-22 18:50:46 +0800 CST FFmpeg 在没有选项的情况下运行时会做什么? 772 我下载了一些 MP4 视频文件,它们的长度和分辨率看起来大得离谱。因此,为了尝试减小它们的大小,我运行了以下命令: ffmpeg -i input.mp4 output.mp4 花了一些时间,但是当命令完成时,我有一个文件output.mp4,其大小约为原始文件大小的三分之一input.mp4。我在 VLC 中打开了这两个文件,希望看到一些差异,也许是质量下降,但在我看来,它们的内容完全相同。 我想知道的是,这个特殊的命令究竟做了什么,为什么会产生如此意想不到的结果? ffmpeg mp4 2 个回答 Voted Best Answer Giacomo1968 2020-08-22T19:02:22+08:002020-08-22T19:02:22+08:00 我想知道的是,这个特殊的命令究竟做了什么,为什么会产生如此意想不到的结果? 它基本上只是将其转换为具有基于文件扩展名格式的新文件。使用的设置是所有内容的默认设置;声音、音频等…… 至于文件大小更小,虽然您声明在将一个 MP4 视频转换为另一个时看到相同质量的视频,但视频和音频的比特率很可能以某种方式降低。 比特率越高,文件包含的数据就越多,因此视频质量就越高。 您可能不会在视觉上看到差异,但检查源视频与转换后的视频的基本规格,我相当肯定您会在音频和视频源中看到更高的比特率。 llogan 2020-08-24T12:32:02+08:002020-08-24T12:32:02+08:00 ffmpeg 如何制作一个看起来仍然不错的小得多的文件 答案取决于几个因素: 输入的格式和用于创建它的编码器。 确定选择哪些编码器的输出格式。 可用的编码器取决于您ffmpeg的配置方式。 编码器本身具有默认设置。默认设置可能因不同的编码器而异。 文件大小还取决于输入和输出流的数量。默认的流选择行为只为每种类型选择一个流。因此,如果您的输入有 2 个音频流,它将只选择 1 个,除非您手动选择带有-map. 你如何看待质量。对你来说很好的东西在别人看来可能没有那么好。 MP4 专门 对于绝大多数用户来说,MP4 的默认编码器是: libx264 - H.264 视频编码器。 aac - 内置的 FFmpeg AAC 编码器。 x264 不会为速率控制选择特定的比特率。它选择控制质量的默认 CRF 级别。默认值是-crf 23质量和文件大小之间的良好折衷。有关更多信息,请参阅FFmpeg Wiki:H.264。 并非所有格式都是平等的,也不是所有的编码器都是平等的。H.264 已经过时了,但它仍然是一种很好的格式。x264 是最高效的 H.264 编码器。因此,如果您为 x264 提供由蹩脚或效率低下的编码器或旧的遗留格式创建的输入,那么它将减少文件大小(有时显着)而不会产生可怕的生成损失。 查看正在使用哪些编码器 您可以从命令中找出控制台输出正在使用哪些编码器: $ ffmpeg -i input.mkv output.mp4 … Stream mapping: Stream #0:0 -> #0:0 (ffv1 (native) -> h264 (libx264)) Stream #0:1 -> #0:1 (flac (native) -> aac (native)) 在此示例中,您可以看到libx264和aac是用于创建输出的编码器。
它基本上只是将其转换为具有基于文件扩展名格式的新文件。使用的设置是所有内容的默认设置;声音、音频等……
至于文件大小更小,虽然您声明在将一个 MP4 视频转换为另一个时看到相同质量的视频,但视频和音频的比特率很可能以某种方式降低。
比特率越高,文件包含的数据就越多,因此视频质量就越高。
您可能不会在视觉上看到差异,但检查源视频与转换后的视频的基本规格,我相当肯定您会在音频和视频源中看到更高的比特率。
ffmpeg 如何制作一个看起来仍然不错的小得多的文件
答案取决于几个因素:
ffmpeg
的配置方式。-map
.MP4 专门
对于绝大多数用户来说,MP4 的默认编码器是:
x264 不会为速率控制选择特定的比特率。它选择控制质量的默认 CRF 级别。默认值是
-crf 23
质量和文件大小之间的良好折衷。有关更多信息,请参阅FFmpeg Wiki:H.264。并非所有格式都是平等的,也不是所有的编码器都是平等的。H.264 已经过时了,但它仍然是一种很好的格式。x264 是最高效的 H.264 编码器。因此,如果您为 x264 提供由蹩脚或效率低下的编码器或旧的遗留格式创建的输入,那么它将减少文件大小(有时显着)而不会产生可怕的生成损失。
查看正在使用哪些编码器
您可以从命令中找出控制台输出正在使用哪些编码器:
在此示例中,您可以看到libx264和aac是用于创建输出的编码器。