如何使用Python ProtoBuf库使用pssh python脚本?

时间:2018-10-31 23:28:46

标签: protocol-buffers drm widevine shaka eme

在本文档https://github.com/google/shaka-packager/tree/master/packager/tools/pssh

中,我无法弄清楚Python ProtoBuf库与使用pssh python脚本之间的关系。

如何在没有原始文件的情况下构建pssh.py脚本?

1 个答案:

答案 0 :(得分:1)

您可以将build-script与shaka-packager一起使用,也可以直接从widevine header proto file直接生成python protobuf文件。

协议缓冲区tutorial for python很好地描述了如何使用协议来编译必要的python代码。

如果您不需要或不需要任何其他shaka-packager东西,而只想使用pssh.py,则可以修改此部分:

# Append the local protobuf location.  Use a path relative to the tools/pssh
# folder where this file should be found.  This allows the file to be executed
# from any directory.
_pssh_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(_pssh_dir, '../../third_party/protobuf/python'))
# Import the widevine protobuf.  Use either Release or Debug.
_proto_path_format = os.path.join(
    _pssh_dir, '../../../out/%s/pyproto/packager/media/base')
if os.path.isdir(_proto_path_format % 'Release'):
  sys.path.insert(0, _proto_path_format % 'Release')
else:
  sys.path.insert(0, _proto_path_format % 'Debug')
try:
  import widevine_pssh_data_pb2  # pylint: disable=g-import-not-at-top
except ImportError:
  print >> sys.stderr, 'Cannot find proto file, make sure to build first'
  raise

只需保留import widevine_pssh_data_pb2并确保您使用protoc生成的代码位于pssh.py文件的路径中。然后它应该能很好地工作。

您打算将pssh.py用于什么?