DRM_INIT_DATA_MISSING 2015

No init data was found for the used key system in the manifest or the segments.

In order to start a DRM license request, DRM init data is needed. This init data may be present in the manifest, the segments of the stream, or both. If no init data could be found in the manifest nor the segments, the player will be unable to start a DRM license request and therefore throw this error.

Please make sure that the DRM init data is present in the manifest and/or the segments of the stream.

Troubleshooting steps for missing DRM init data

  • Check out if your DASH-manifest contains DRM init data by searching for a <ContentProtection>-tag. <ContentProtection>-tags can be present on <Representation> or <AdaptationSet>-level in the manifest.

    @example
    <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="eb676abb-cb34-5e96-bbcf-616630f1a3da" xmlns:cenc="urn:mpeg:cenc:2013"/>
    <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
    <cenc:pssh xmlns:cenc="urn:mpeg:cenc:2013">AAAAW3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADsIARIQ62dqu8s0Xpa7z2FmMPGj2hoNd2lkZXZpbmVfdGVzdCIQZmtqM2xqYVNkZmFsa3IzaioCSEQyAA==</cenc:pssh>
    </ContentProtection>

    Link to full manifest

  • To find DRM init data in HLS-playlists, look out for a EXT-X-SESSION-KEY or EXT-X-KEY-tag.

    @example
    #EXT-X-KEY:METHOD=AES-128,URI="../video/1080_4800000/enc_hls/encryption.key",IV=0x613E8B8CE9CE208C4EAD4A0E03636371
    

    Link to full HLS playlist

  • You can also inspect the segments of your asset. If embedded directly into the segments, DRM init data is stored in pssh-boxes. One way to check for pssh-boxes in a segment is the usage of ffprobe. The command ffprobe -v trace my_segment.mp4 will read the given file and output its box-structure. Additionally, check out this blog post that lists further tools for inspecting (f)MP4 based assets. Example output of ffprobe:

    @example
    ...
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56277ce36ac0] type:'trex' parent:'mvex' sz: 32 24 48
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56277ce36ac0] type:'pssh' parent:'moov' sz: 802 736 1621
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56277ce36ac0] type:'pssh' parent:'moov' sz: 91 1538 1621
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56277ce36ac0] on_parse_exit_offset=1661
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56277ce36ac0] Before avformat_find_stream_info() pos: 1661 bytes read:1661 seeks:0 nb_streams:1
    
  • It's also possible to explicitly pass certain DRM-related parameters to the player by setting the player's drm property in its SourceConfig. You can see a live example of this approach in our DRM demo and get further information from our DRMConfig documentation.