首页
/ Shaka Packager容器中pssh-box.py工具运行报错问题解析

Shaka Packager容器中pssh-box.py工具运行报错问题解析

2025-07-03 16:30:28作者:董宙帆

问题背景

在使用Shaka Packager项目的Docker容器时,用户发现从3.0版本开始,容器中的pssh-box.py工具无法正常运行。该工具用于解析PSSH(Protection System Specific Header)盒子数据,是DRM相关开发中的重要工具。

错误现象

当在最新版容器中执行以下命令时:

docker run --rm google/shaka-packager:latest pssh-box.py --from-base64 "AAAAnnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAH4IARIQNeHmMAKWzF5NJTqHEIQDChoMaW5rYWVudHdvcmtzIlpuZWV0LXBnLWRyLXNvdW1lbi1tYW5uYS0xMDgwLWxpdmUtdmVyc2lvbi02LWdlbmVyYWwtcGh5aXNvbG9neS1uZXctcnItNi0wLWhpbmRpOTgxMTQtOTAxMjk="

系统会报错:

ModuleNotFoundError: No module named 'google'

技术分析

  1. 依赖关系变化:从2.5.1版本到3.0版本,容器构建过程中可能遗漏了Python protobuf库的安装。pssh-box.py工具依赖google.protobuf模块来解析Widevine的protobuf数据。

  2. 版本对比

    • 2.5.1版本:正常工作,因为包含了完整的Python环境依赖
    • 3.0+版本:缺少必要的Python依赖,导致无法导入google.protobuf模块
  3. 根本原因:Docker镜像构建过程中,Python环境的配置不完整,缺少protobuf相关的Python包。

解决方案

项目维护者已经修复了这个问题,解决方案包括:

  1. 在Dockerfile中明确添加Python protobuf包的安装:

    RUN pip3 install protobuf
    
  2. 确保Python环境包含所有必要的依赖项。

用户建议

对于遇到此问题的用户:

  1. 可以使用修复后的最新版镜像
  2. 临时解决方案是手动安装缺失的依赖:
    docker run -it --rm google/shaka-packager:latest bash
    pip3 install protobuf
    

技术延伸

PSSH盒子是DRM系统中的重要组成部分,包含:

  • 系统ID:标识使用的DRM系统
  • 密钥ID:用于内容解密
  • 其他DRM特定数据

pssh-box.py工具能够解析这些信息,对于DRM集成和调试非常有用。理解PSSH盒子的结构对于流媒体和DRM开发人员至关重要。

总结

这个问题展示了容器化环境中依赖管理的重要性。即使是小型工具也需要完整的运行时环境支持。Shaka Packager团队通过及时修复确保了工具的可用性,体现了开源项目对用户反馈的积极响应。

登录后查看全文
热门项目推荐