2017-09-06 20:57:30 +00:00
|
|
|
Raw key
|
|
|
|
=======
|
|
|
|
|
|
|
|
*Packager* allows encrypting contents with raw key.
|
|
|
|
|
|
|
|
Synopsis
|
|
|
|
--------
|
|
|
|
|
|
|
|
::
|
|
|
|
|
2018-05-02 17:55:51 +00:00
|
|
|
$ packager <stream_descriptor> ... \
|
2017-10-17 23:03:08 +00:00
|
|
|
--enable_raw_key_encryption \
|
2018-05-02 17:55:51 +00:00
|
|
|
--keys <key_info_string>[,<key_info_string>]... \
|
|
|
|
[--pssh <concatenated_PSSHs>] \
|
2017-09-06 20:57:30 +00:00
|
|
|
[Other options, e.g. DASH options, HLS options]
|
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
**key_info_string** is of the form::
|
|
|
|
|
2018-05-02 17:55:51 +00:00
|
|
|
label=<label>:key_id=<key_id>:key=<key>
|
2017-10-17 22:47:43 +00:00
|
|
|
|
2017-09-06 20:57:30 +00:00
|
|
|
Custom PSSH(s) can be provided in *--pssh*. If absent,
|
|
|
|
`v1 common PSSH box <https://goo.gl/s8RIhr>`_ is generated.
|
|
|
|
|
|
|
|
Examples
|
|
|
|
--------
|
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
The examples below uses the H264 streams created in :doc:`encoding`. Here are
|
|
|
|
examples with DASH. It can be applied to HLS in a similar way.
|
2017-09-06 20:57:30 +00:00
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
Common PSSH (one key for all streams)::
|
2017-09-06 20:57:30 +00:00
|
|
|
|
|
|
|
$ packager \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4 \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4 \
|
|
|
|
in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4 \
|
|
|
|
in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4 \
|
|
|
|
in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4 \
|
2017-10-17 23:03:08 +00:00
|
|
|
--enable_raw_key_encryption \
|
2017-10-17 22:47:43 +00:00
|
|
|
--keys label=:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392 \
|
2017-09-06 20:57:30 +00:00
|
|
|
--mpd_output h264.mpd
|
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
Common PSSH (different keys for different streams)::
|
2017-09-06 20:57:30 +00:00
|
|
|
|
|
|
|
$ packager \
|
2017-10-17 22:47:43 +00:00
|
|
|
in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4,drm_label=AUDIO \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4,drm_label=SD \
|
|
|
|
in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4,drm_label=SD \
|
|
|
|
in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4,drm_label=HD \
|
|
|
|
in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4,drm_label=HD \
|
2017-10-17 23:03:08 +00:00
|
|
|
--enable_raw_key_encryption \
|
2017-10-17 22:47:43 +00:00
|
|
|
--keys label=AUDIO:key_id=f3c5e0361e6654b28f8049c778b23946:key=a4631a153a443df9eed0593043db7519,label=SD:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392,label=HD:key_id=6d76f25cb17f5e16b8eaef6bbf582d8e:key=cb541084c99731aef4fff74500c12ead \
|
|
|
|
--mpd_output h264.mpd
|
|
|
|
|
2018-08-06 23:12:19 +00:00
|
|
|
Widevine (with pre-generated Widevine PSSH)::
|
2017-10-17 22:47:43 +00:00
|
|
|
|
|
|
|
$ packager \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4,drm_label=AUDIO \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4,drm_label=SD \
|
|
|
|
in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4,drm_label=SD \
|
|
|
|
in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4,drm_label=HD \
|
|
|
|
in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4,drm_label=HD \
|
2017-10-17 23:03:08 +00:00
|
|
|
--enable_raw_key_encryption \
|
2017-10-17 22:47:43 +00:00
|
|
|
--keys label=AUDIO:key_id=f3c5e0361e6654b28f8049c778b23946:key=a4631a153a443df9eed0593043db7519,label=SD:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392,label=HD:key_id=6d76f25cb17f5e16b8eaef6bbf582d8e:key=cb541084c99731aef4fff74500c12ead \
|
2018-08-02 21:23:14 +00:00
|
|
|
--pssh 000000317073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED00000011220F7465737420636F6E74656E74206964 \
|
2017-09-06 20:57:30 +00:00
|
|
|
--mpd_output h264.mpd
|
|
|
|
|
2018-08-06 23:12:19 +00:00
|
|
|
Widevine and PlayReady::
|
2018-07-20 00:31:28 +00:00
|
|
|
|
|
|
|
$ packager \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4,drm_label=AUDIO \
|
|
|
|
in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4,drm_label=SD \
|
|
|
|
in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4,drm_label=SD \
|
|
|
|
in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4,drm_label=HD \
|
|
|
|
in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4,drm_label=HD \
|
|
|
|
--enable_raw_key_encryption \
|
|
|
|
--keys label=AUDIO:key_id=f3c5e0361e6654b28f8049c778b23946:key=a4631a153a443df9eed0593043db7519,label=SD:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392,label=HD:key_id=6d76f25cb17f5e16b8eaef6bbf582d8e:key=cb541084c99731aef4fff74500c12ead \
|
2018-08-06 23:12:19 +00:00
|
|
|
--additional_protection_systems Widevine,PlayReady \
|
2018-07-20 00:31:28 +00:00
|
|
|
--mpd_output h264.mpd
|
|
|
|
|
2018-08-06 23:12:19 +00:00
|
|
|
.. note::
|
|
|
|
|
|
|
|
User is responsible for setting up Widevine and PlayReady license server and
|
|
|
|
managing keys there.
|
2018-07-20 00:31:28 +00:00
|
|
|
|
2017-09-06 20:57:30 +00:00
|
|
|
Refer to
|
|
|
|
`player setup <https://shaka-player-demo.appspot.com/docs/api/tutorial-drm-config.html>`_
|
|
|
|
on how to config the DRM in Shaka Player.
|
|
|
|
|
|
|
|
Test vectors used in this tutorial
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
:Key ID:
|
2017-09-06 20:57:30 +00:00
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
| SD: abba271e8bcf552bbd2e86a434a9a5d9
|
|
|
|
| HD: 6d76f25cb17f5e16b8eaef6bbf582d8e
|
|
|
|
| AUDIO: f3c5e0361e6654b28f8049c778b23946
|
2017-09-06 20:57:30 +00:00
|
|
|
|
|
|
|
Key ID must be 16 bytes or 32 digits in HEX.
|
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
:Key:
|
2017-09-06 20:57:30 +00:00
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
| SD: 69eaa802a6763af979e8d1940fb88392
|
|
|
|
| HD: cb541084c99731aef4fff74500c12ead
|
|
|
|
| AUDIO: a4631a153a443df9eed0593043db7519
|
2017-09-06 20:57:30 +00:00
|
|
|
|
|
|
|
Key must be 16 bytes or 32 digits in HEX.
|
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
:Widevine PSSH:
|
2017-09-06 20:57:30 +00:00
|
|
|
|
2018-08-02 21:23:14 +00:00
|
|
|
000000317073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED00000011220F7465737420636F6E74656E74206964
|
2017-09-06 20:57:30 +00:00
|
|
|
|
|
|
|
The PSSH is generated using
|
|
|
|
`pssh-box script <https://github.com/google/shaka-packager/tree/master/packager/tools/pssh>`_::
|
|
|
|
|
|
|
|
$ pssh-box.py --widevine-system-id \
|
2018-08-02 21:23:14 +00:00
|
|
|
--content-id 7465737420636f6e74656e74206964 --hex
|
2017-09-06 20:57:30 +00:00
|
|
|
|
2017-10-17 22:47:43 +00:00
|
|
|
.. include:: /options/drm_stream_descriptors.rst
|
2018-02-07 21:24:42 +00:00
|
|
|
.. include:: /options/general_encryption_options.rst
|
2017-09-06 20:57:30 +00:00
|
|
|
.. include:: /options/raw_key_encryption_options.rst
|
|
|
|
|
|
|
|
pssh-box (Utility to generate PSSH boxes)
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
https://github.com/google/shaka-packager/tree/master/packager/tools/pssh
|