是否可以在 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) 的所有信息都声称整个编码应该是无损的,但我无法验证这一点。