关于 产品 支持 Blog

DropBox H.264 无损压缩的详细信息

image

 

  By Olga Krovyakova - modified October 6, 2023, created April 3, 2019.

 

免费试用 ZOND 265

 

几周前,我们偶然看到一篇文章 ,内容是关于 Dropbox 工程师重新创建热门电视节目中的 Pied Piper 算法。 Dropbox 为 H.264 和 JPEG 文件开发了一种无损压缩算法,我们的团队开始评估该解决方案并收集一些切实的细节.

猛然一看,我们发现重新压缩后的H.264文件不再是H.264,只能用于临时存储。 此外,这种压缩方法在两种情况下有效:如果文件使用CAVLC作为编码器,或者文件使用最大尺寸的PU和TU块进行编码。 仅当 H.264 编解码器设置为最大速度编码时,才能满足这两个条件. 

关于花衣魔笛手项目

视频是 最重的 数据格式之一,因此视频处理、传输和存储服务必须将压缩视为可行的解决方案也就不足为奇了。 然而,有一些选择。 2015 年 8 月,DropBox 公布了他们对该问题的愿景 - 一种针对 H.264 标准视频文件的原始但不完整的算法。 该公司的主要重点是客户文件的存储。 普通用户不太关心这些文件如何存储,重要的是按照上传的方式完整地下载相同的文件 – 。 因此 DropBox 算法是一种无损算法。 此外, 压缩的结果不是源格式的视频文件.

我们的文章旨在评估该算法在压缩不同文件格式方面的效率。 为此,我们将使用 Solveig Multimedia 的 ZOND 265、 H.264 和 H.265 视频文件分析器作为辅助工具.

您可以通过 链接下载与本文相关的所有文件(为 Linux Ubuntu x64 12.04 编译的压缩器可执行文件、测试视频文件).
image

估算 Pied Piper 项目压缩机的效率

压缩器的源代码和测试文件可在 GitHub处获取。 对于初学者,我们将编译一个压缩器并估计测试文件。 之后,我们将根据现实视频文件来衡量效果.

压缩

 Pied Piper 压缩器编译的具体指南仅适用于 Linux。 事实上,它是一个文件 - “piedpiper_make”脚本。 因此我们需要加载 Linux Ubuntu x64 并输入三个命令:

cd ./lossless264
./piedpiper_make

编译后,检查当前文件夹中是否有压缩器文件:

  • h264dec – 压缩器和解压缩器可执行文件
  • so.0、libopenh264.so – 动态辅助库及其链接.

如果通过命令执行压缩:

./h264dec ./源文件.264 ./目标文件.pip,

减压:

./h264dec ./压缩文件.pip ./解压缩文件.264.

请记住,压缩输出不是与源格式相同的文件,而是一组 .pip 文件.
 

花衣魔笛手 测试文件

根据 Git 存储库,DropBox 团队使用这些文件作为测试材料:“black.264”、“tibby.264”、“walk.264”、“BA1_FT_C.264”、“BAMQ2_JVC_C.264”。 我们将它们上传到 Zond 265 中,发现它们已通过相同的方法进行压缩(请参阅 Zond 265 屏幕截图, Bitstream 选项卡,图片 1 - 3 中的“tibby.264”文件)。 文件的主要属性是使用 CAVLC(PPS,entropy_coding_mode_flag:0)并且没有 B 帧(SPS,max_num_reorder_frames:0)。 我们选择了前三个文件进行效率测试.

image

图。 1.“tibby.264”文件的序列参数集 (SPS) 块

image

图。 2.“tibby.264”文件的图片参数设置块

image

图。 3.“tibby.264”文件的视频流结构

其他测试文件

用户可以使用多种工具来获取视频文件:用相机拍摄视频(例如在手机上),从众多视频服务(YouTube、VK、Vimeo、Facebook 等)下载视频,或使用 具有重新编码功能的软件.

我们选择“VID_20150917_131139.264”文件作为普通的手机视频片段。 与之前的示例一样,它不包含 B 帧,但使用 CABAC 而不是 CAVLC 作为算术编码器。 压缩器返回 YouTube 文件的错误(它们包括 B 帧并使用 CABAC),因此我们将这些文件留在测试框架中.

选择支持重新编码的软件,我们选择 ffmpeg 控制台实用程序(“libx264”模块)。 向前跳跃,压缩只能在“超快”预设下进行,而“超快”预设则不会显示任何结果。 测试文件是“tractor-ultrafast.264”、“tractor-superfast.264”".

除了提到的文件之外,该表还包括另外三个示例。 后者用于确定建议的算法是否将保持启用的“CABAC”选项的效率以及使用最大尺寸的 PU 和 TU 块进行编码:“black-cabac.264”、“tibby-cabac.264”和“tibby-cabac” -最大块”".
 

检测结果

测试结果显示在表 1 和表 2 中。PU 和 TU 块的定量数据已使用 Zond 265 软件(Stream Stats 选项卡)收集。 图。 图4显示了“tibby.264”文件数据的屏幕截图.

image

图。 4.“tibby.264”文件的 PU 和 TU 块数据

表 1. Pied Piper 压缩器。 效率测试结果.

image

表 2. Pied Piper 压缩器。 效率测试结果.

image

 如上表所示,当前版本的 Pied Piper 算法仅在两种情况下工作:如果文件使用 CAVLC 作为编码器,或者文件使用最大大小的 PU 和 TU 块进行编码。 这些场景需要 H.264 编解码器的最大速度编码。 显然,所有这些都归结为相当大的文件。 这些是由 ffmpeg 编解码器使用 libx264 创建的文件,预设为“ultrafast”.

现在就这样。 我们感谢您花时间与我们的团队一起完成这项研究。 期待您的反馈意见!

 

免费试用 ZOND 265

 

 

 About the author

imageOlga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.

She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.

She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!