【发布时间】:2011-05-04 22:09:12
【问题描述】:
我需要一个简单快速的支持 alpha 的视频编解码器来替代 Quicktime Animation,因为 Quicktime Animation 对普通视频的压缩率很差。
由于我没有找到任何支持 alpha 的优秀开源编码器/解码器,我一直在尝试编写自己的(灵感来自 huff-yuv)。
我的策略如下:
- 转换为 YUVA420
- 从前一帧中减去当前帧(不需要关键帧)。
- 霍夫曼对上一步的结果进行编码。将每一帧分割成 64x64 的块,并为每个块创建一个新的霍夫曼表并对其进行编码。
通过这种策略,我实现了 60-80% 的不错压缩率。我可以通过在步骤 1 之后将每个帧分成块并添加运动矢量来减少步骤 2 的数据输出来提高压缩率。但是,优于 60% 的压缩率比性能要低。
四核 cpu 上可接受的压缩速度 60 毫秒/帧。
但是解码速度会受到影响,40 毫秒/帧(几乎没有实时的 CPU 使用率)。
我的问题是,是否有办法以更快的解码速度压缩视频,同时仍能达到不错的压缩率?
解码霍夫曼编码的符号似乎相当慢。我还没有尝试使用表查找,不确定表查找是否是一个好主意,因为我为每个块都有一个新的霍夫曼表,并且构建查找表非常昂贵。据我所知,它不可能使用任何 SIMD 或 GPU 功能。有没有其他选择?请注意,它不一定是无损的。
【问题讨论】:
标签: c++ compression video-encoding