Handbrake 可以将大约 30 分钟的 DVD 剪辑转换为 300MB 的.mkv
文件。为了进行实验,我还尝试了 1GB 和 2GB 的文件大小,结果都是 1GB 或 2GB。
但我估计 DVD 上的原始视频应该只有 600MB 左右,那么如何才能使文件“比以前更大”呢?(mkv、mp4 格式应该比 DVD 的 mpeg2 具有更好的压缩效果)。
我还记得我以前尝试过 divx 或 xvid,文件大小有限制:例如,我可以指定 1.5 小时的视频为 3GB 或 8Mbit/s,但内容根本就没有那么多“位”可供存储(因为它可以高度压缩视频),所以最终文件不能超过 1.8GB 或类似的大小,无论我给它的比特率或所需文件大小有多高。但使用 Handbrake,似乎我可以用这么短的剪辑创建 1GB 或 2GB 的文件。这是为什么呢?
答案1
它与上采样/下采样有关。
想象一下编写这个软件:你必须读取一个压缩文件,该文件可能已经压缩成种类格式,然后以另一种格式重新压缩。
等等!你为什么不能去直接地转换为另一种格式??
那么你会怎么做呢?压缩是有损的,为了理解如何压缩它,你首先必须解压缩它,看看它在说什么!
此外,您也不希望算法爆炸式增长;例如,如果您要在 10 种格式之间进行转换,您不希望有 10 * 9 = 90 种压缩算法和 90 种解压缩算法来从每种格式转换为其他每种格式,但您宁愿有 10 种算法来转换为解压缩格式,再有 10 种算法来转换为另一种压缩格式。
那么你有首先解压。然后,如何重新压缩就由您决定了——无论您选择什么,您损失的都会比什么都不做要多得多。
即这个计算有点幼稚,但如果某个东西保留了 50% 的原始内容,而你解压缩并重新压缩它,你得到的是 50%——即 25%。这并没有捕捉到其他一些方面,但它确实解释了为什么重新压缩(又称转码)是很少推荐;如果需要,请尽可能尝试重新压缩原始版本。
希望这是有意义的。
答案2
媒体压缩不像 zip 和类似的压缩算法那样会伺机利用精确重复。简单地说,它更像是找到一种信号表示,可以删除(或添加)细节,同时对解码信号的影响最小。在这种情况下,将小文件“压缩”成大文件非常容易。您可以导出转换后的表示,然后用额外的中性数据填充它。
当您需要将低比特率视频文件转换为高比特率视频文件时,您得到的就是这些。
严格来说,即使对于起始大小为 600MB 的视频,2GB 而不是 1GB 也可能会给你带来一些好处 - 尽管这可能不是你不惜一切代价想要的东西。
原始视频使用 MPEG2(用于 DVD)而不是 MKV 进行压缩。不同的压缩系统有不同的“伪影”。文件的每次转换最多只能保留可用的细节。随着压缩方案的改变,至少会丢失一些内容是不可避免的。文件越大,损失就越少 - 即使文件比原始文件大得多。这意味着您不太可能丢失以前压缩方案的所有不需要的伪影。
另一种看待它的方式...
可以完美与未压缩的视频相比,使用任何压缩方案表示的视频数量都非常有限。将文件大小减少一个字节,原则上,您已经将可以表示的视频数量除以 256。
可以完美MPEG2 中表示的视频与可以表示的视频集非常不同完美以 MKV 表示。即使您拥有完美的编解码器,您也不可能在从一种压缩方法转换为另一种压缩方法时完美地保存视频 - 即使转换为更高的比特率。
答案3
这是因为 Handbrake自由的压缩算法只能达到这个程度。专业人士使用的算法更多昂贵的。
Mehrdad 的回答一针见血。为了直接从 MPEG2 (DVD) 转换为 H.264(我假设您使用的是 H.264),您必须编写专门的程序来转换它。这引出了 Mehrdad 所说的。基本上必须编写万能的压缩算法或编写一堆较小的算法。在我看来,这两种方法都不是成功的解决方案。