我有一个AVI文件,我想重新编码以适合大小为650 MB的CD。如何对文件大小不超过给定大小进行编码?我可以使用哪个程序?
答案 0 :(得分:2)
我假设您想以编程方式执行此操作:
适用于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文件,你应该检查一下,如果你想要一些易于使用的东西。看看他们的主页。
我希望这能让你开始。
答案 1 :(得分:2)
要使其适合特定大小,您必须使用适当的比特率。
对于固定比特率视频,要获得目标比特率,您将获取目标大小,以位为单位,以及以秒为单位的源长度。
target bit-rate = size / seconds
例如:
seconds = (90mins * 60) = 5400
size = ((650MB * 1024) * 8) = 5324800
target bit-rate = ~986 kilobytes per second
利用可变比特率,事情变得更加复杂。不确定是否有办法准确地使输出文件成为一个设定的大小。最简单的方法是使用上述方法计算最大比特率,
答案 2 :(得分:0)
AutoGK可以非常有效地完成这项工作。主要为DVD ****咳嗽****备份的目的,但它也将接受AVI作为来源。它更像是一个带有协调GUI的开源程序集合,所以当安装程序安装多个项目时不要担心。
答案 3 :(得分:0)
计算AVI的秒数。然后,取文件大小并除以长度。转换为每秒千比特,并将其用作比特率中位数。 (使用Google轻松进行数学和转换。)
您可以根据需要权衡视频和音频比特率。通常96 Kbps对于AAC来说足够好,但您可能需要更多或更少。实验