从帧生成较小的视频文件大小



我正在做一个项目,其中我有一个视频,我将视频划分为帧,然后将图像隐写术应用于帧,并生成编码帧。然后,编码的帧将被再次转换成视频。所有的方法都成功地应用了,但唯一的问题是我得到的编码视频比原始视频大。我正在使用movie2avi函数来生成视频。

有人能提出任何方法来生成与原始视频相比不是很大的视频吗?

首先,如果您使用的是movie2avi,那么您只能有限地选择非常差的编解码器(压缩格式)。如果你有一个足够新的Matlab版本(R2009b+我认为),你应该使用VideoWriter类。编解码器的选择仍然不是很好,但它们的质量要好得多。你没有指出你使用的是哪种编解码器(或操作系统),所以我不能推荐其他选择。

其次,即使在理想的情况下,你也应该期望你的电影文件随着你所做的事情而变大,除非你应用额外的压缩。添加隐写内容类似于添加噪声,因此会使数据更难压缩。在movie2aviVideoWriter中,您可以根据编解码器调整压缩级别或质量。此外,Linux和OSX下的默认movie2avi编解码器不使用压缩,因此如果您没有更改,文件将是巨大的。

如果VideoWriter不能满足您的需求(或者您的版本没有),您可以在GitHub上尝试我的QTWriter类,该类允许在Matlab中导出QuickTime电影。它的工作原理与VideoWriter非常相似,但允许您使用一些基于图像的编解码器创建高质量的QuickTime电影。不使用帧间压缩,PNG和TIFF格式是无损的(这对隐写应用程序可能很重要),同时在编码Matlab中经常生成的内容方面非常高效。还有一种JPEG格式可能更适合于一般图像。如果需要,QuickTime文件可以转换为其他格式。您可以在这里阅读更多并查看示例,也可以在这里下载单个M文件。

这完全取决于您试图在原始视频中隐藏的内容。请记住,原始视频使用的压缩编解码器可以利用帧与帧之间的最小变化和其他各种功能,但如果你试图通过隐写术在视频中隐藏某些内容,则会使压缩算法更难做到这一点,这肯定会导致文件更大。因此,你必须小心你试图做什么,以及如何对其进行编码。

最新更新