h264无损编码

问题描述 投票:41回答:7

是否有可能在h264中进行完全无损的编码? “无损”是指,如果将其馈入一系列帧并对其进行编码,然后从编码的视频中提取所有帧,则将获得与输入中完全相同的帧(逐像素,逐帧) 。真的有可能吗?举个例子:

[我生成一堆帧,然后将图像序列编码为未压缩的AVI(使用virtualdub之类的东西),然后应用无损h264(帮助文件声称设置--qp 0可以进行无损压缩,但我不是确保这意味着在过程的任何点都没有损失,或者只是量化是无损的)。然后,我可以使用类似mplayer的格式从生成的h264视频中提取帧。

我先尝试了Handbrake,但事实证明它不支持无损编码。我尝试了x264,但是它崩溃了。可能是因为我的源AVI文件是RGB色彩空间而不是YV12。我不知道如何将一系列YV12位图以及以什么格式提供给x264,所以我什至无法尝试。

总而言之,我想知道是否有路可走

无损位图系列(在任何色彩空间中)->一些转换-> h264编码-> h264解码->一些转换->原始的无损位图系列

如果有办法实现这一目标?

编辑:关于无损H264的合理性,没有太大意义。我很清楚,我无法(仅凭眼睛)分辨出未压缩的剪辑与H264中以高速率压缩的另一个剪辑之间的区别,但我认为并非没有用处。例如,对于存储视频进行编辑而不用占用大量空间,不损失质量且每次保存文件时都不会花费太多编码时间可能很有用。

更新2:现在x264不会崩溃。我可以将avisynth或无损yv12 lagarith用作源(以避免出现色彩空间压缩警告)。但是,即使使用--qp 0和rgb或yv12源,我仍然会得到一些差异,虽然很小,但仍然存在。这令人不安,因为我在无损预测编码(--qp 0)上发现的所有信息都声称整个编码应该是无损的,但是我无法对此进行验证。

h.264 x264 lossless-compression
7个回答
24
投票

我将花费一整天试图弄清楚如何将YUV 4:4:4像素转换为x264,为此添加一个较晚的答案。尽管x264确实接受文件中的原始4:2:0像素,但要传递4:4:4像素确实非常困难。对于最新版本的ffmpeg,以下内容可用于完全无损编码和提取以验证编码。


5
投票

如果x264进行无损编码但不喜欢您的输入格式,那么最好的选择是使用ffmpeg处理输入文件。尝试以类似


4
投票

FFmpeg具有x264的“无损”模式,请参见FFmpeg和x264编码指南


2
投票

我不知道您对压缩和解压缩的要求,但是通用存档器(例如带有LZMA2的7-zip)应该能够压缩得比无损视频编解码器小或什至小得多。而且它比整个视频处理链更简单,更安全。缺点是速度要慢得多,您必须先提取速度才能看到它。但是对于图像,我认为您应该尝试一下。


2
投票

要使用HandBrake GUI生成无损H.264,请设置视频编解码器:H.264,恒定质量,RF:0,H.264配置文件:自动。尽管Apple本身不支持此文件,但可以将其重新编码为几乎无损以进行播放。


1
投票

如果使用h.264编码器和解码器无法获得无损压缩,也许您可以考虑两种选择:


1
投票

我同意有时数据丢失是可以接受的,但这不仅仅是压缩后立即看起来如何的问题。

© www.soinside.com 2019 - 2024. All rights reserved.