【问题标题】:Could a compression algorithm be lossless and lossy at the same time?压缩算法能否同时无损和有损?
【发布时间】:2014-09-24 09:11:53
【问题描述】:

我看到ffmpeg有一些编解码器(例如H.264),它们被定义为同时无损和有损,据我了解,无损和有损是互斥的:一种压缩算法要么丢失信息,要么不丢失。

怎么可能同时无损和有损?

运行ffmpeg -codecs 2>/dev/null| grep h264,我明白了:

DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [...]

DEV.LS代表解码器,编码器,视频,不仅是帧内压缩,有损压缩,无损压缩。

【问题讨论】:

标签: ffmpeg codec lossless-compression lossy-compression


【解决方案1】:

签入Wikipedia for H.264 上面写着:

H.264 通常用于严格数学意义上的有损压缩,尽管 损失的数额有时可能难以察觉。也可以真正创造 使用它的无损编码 - 例如,在内部具有局部无损编码区域 有损编码的图片或支持整个编码都是无损的罕见用例。

【讨论】:

  • 正确。有些东西不能同时是无损和有损的,但是媒体中可能有一些元素是无损的,而其他元素是有损的。还有一些编解码器(如新的 JPEG 标准)可以在通常有损的技术中实现无损。
【解决方案2】:

是的,它可以同时是有损和无损的。对于 H.264、MPEG 和 AVC,颜色、帧受到很大影响,并且在放大视频时会产生视觉观看问题。 我也发了一篇关于它的研究——Check it out

【讨论】:

    【解决方案3】:

    @MoDJ 在 cmets 中提到了答案。

    h.264 编解码器与许多其他编解码器一样,具有编码选项。其中最主要的是恒定速率因子,又名CRFThe documentation from FFmpeg(使用 libx264 编码 h.264/AVC 的编码器)在这种情况下是一个很好的参考。它说:

    CRF 量表的范围是 0–51,其中 0 是无损的,23 是 默认值,51 是可能的最差质量。通常较低的值 导致更高的质量,主观理智的范围是 17-28。 考虑 17 或 18 在视觉上无损或几乎无损;它应该看起来 与输入相同或几乎相同,但在技术上不是 无损。

    (...)

    您可以使用 -crf 0 创建无损视频。两个有用的预设 这是超快或非常慢的,因为无论是快速编码速度还是 最佳压缩通常是最重要的因素。 (...)
    请注意,无损输出文件可能会很大,而且大多数非 FFmpeg 基于播放器将无法无损解码。因此,如果 兼容性或文件大小是一个问题,您不应该使用无损。 (...)

    总结:一个特定的流不能同时是有损和无损的,但是可以通过编解码器设置来调整流是有损还是无损。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-28
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2011-02-07
      相关资源
      最近更新 更多