【问题标题】:Simple and Fast Video Encoding/Decoding简单快速的视频编码/解码
【发布时间】:2011-05-04 22:09:12
【问题描述】:

我需要一个简单快速的支持 alpha 的视频编解码器来替代 Quicktime Animation,因为 Quicktime Animation 对普通视频的压缩率很差。

由于我没有找到任何支持 alpha 的优秀开源编码器/解码器,我一直在尝试编写自己的(灵感来自 huff-yuv)。

我的策略如下:

  1. 转换为 YUVA420
  2. 从前一帧中减去当前帧(不需要关键帧)。
  3. 霍夫曼对上一步的结果进行编码。将每一帧分割成 64x64 的块,并为每个块创建一个新的霍夫曼表并对其进行编码。

通过这种策略,我实现了 60-80% 的不错压缩率。我可以通过在步骤 1 之后将每个帧分成块并添加运动矢量来减少步骤 2 的数据输出来提高压缩率。但是,优于 60% 的压缩率比性能要低。

四核 cpu 上可接受的压缩速度 60 毫秒/帧。

但是解码速度会受到影响,40 毫秒/帧(几乎没有实时的 CPU 使用率)。

我的问题是,是否有办法以更快的解码速度压缩视频,同时仍能达到不错的压缩率?

解码霍夫曼编码的符号似乎相当慢。我还没有尝试使用表查找,不确定表查找是否是一个好主意,因为我为每个块都有一个新的霍夫曼表,并且构建查找表非常昂贵。据我所知,它不可能使用任何 SIMD 或 GPU 功能。有没有其他选择?请注意,它不一定是无损的。

【问题讨论】:

    标签: c++ compression video-encoding


    【解决方案1】:

    您想尝试使用哥伦布密码而不是霍夫曼密码。哥伦布码比哈夫曼码在 IMO 上的解码速度更快。如果它不必是无损的,你想使用希尔伯特曲线和 DCT,然后是 Golomb 代码。您想使用空间填充曲线细分帧。 IMO 使用 sfc 对帧进行连续细分,并且解码速度非常快。

    【讨论】:

    • 您想使用希尔伯特曲线而不是莫顿曲线。
    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    相关资源
    最近更新 更多