我有一个 AVI 文件,我想对其重新编码以适合大小为 650 MB 的 CD。如何编码以使文件大小不超过给定大小?我可以使用哪个程序?
4 回答
我假设您想以编程方式执行此操作:
对于 Windows:
您可以使用 directshow 通过构建过滤器图对视频进行转码。
获取(如果您还没有)适用于 Windows 的平台 SDK。然后浏览此处查看一些构建过滤器图以进行转码的 directshow 示例。
要构建,您将需要基类。你可以在这里构建它们:
C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses
然后在这里查看示例:
C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow
您还可以手动创建过滤器图以了解它们的使用方式并查看这些东西的意义(例如您将在示例中了解的编码器的枚举):
C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\graphedt.exe
一旦您走到这一步并了解了 directshow 的工作原理,您就可以使用一些数学来计算如何对视频进行转码以适合您想要的大小。为此,您可能需要查看输入视频的帧数/秒以及每帧的大小。
不同的编码器以不同的方式工作:
假设您正在将 avi 文件转码为更小或质量更低的 avi 文件。查看您的输入帧大小和 fps 以确定整个文件大小,然后使用一些代数来计算如何减小帧大小或减少每秒帧数(或两者的组合)以达到所需的大小(可以是你的输入变量)。
至于其他编码器,您可能想看看它们是如何工作的。mp4 等有损编码器执行估计以找出哪些视频在帧之间发生了变化,并且该信息存储在文件中以重建帧。您将不得不阅读它们的工作原理 - 或查看如何使用您的特定编码器以获取更多详细信息。
对于 Linux(以及 Windows):
您可以使用ffmpeg,它是用于将视频转码和其他内容的一体机。您甚至可以找到命令行应用程序的预构建 exe,尽管主页没有托管它(只是源代码)。这个应用程序使用开源视频库来做很多视频转码以及许多其他事情。如果你能找到一个好的可靠的 exe 文件,如果你想要一些易于用于你的应用程序的东西,你可能应该检查一下。在这里查看他们的主页。
我希望这能让你开始。
要使其适合特定大小,您必须使用适当的比特率。
对于固定比特率视频,要获得目标比特率,您将采用目标大小(以比特为单位)和源的长度(以秒为单位)。
target bit-rate = size / seconds
例如:
seconds = (90mins * 60) = 5400
size = ((650MB * 1024) * 8) = 5324800
target bit-rate = ~986 kilobytes per second
使用可变比特率,事情变得更加复杂。不太确定是否有办法准确地将输出文件设置为固定大小。最简单的方法是使用上述方法计算最大比特率,
AutoGK可以非常有效地做到这一点。主要设计用于 DVD ****cough**** 备份目的,但它也将接受 AVI 作为源。它更像是一组具有协调 GUI 的开源程序,所以当安装程序安装多个项目时不要担心。
计算 AVI 的秒数。然后,取文件大小并除以长度。转换为每秒千比特,并将其用作比特率中位数。(使用 Google 轻松进行数学计算和转换。)
您可以根据需要权衡视频和音频比特率。通常 96 kbps 对 AAC 来说已经足够了,但您可能需要更多或更少。实验。