vp9编码并使用cenc加密的视频使用dash.js,在拿到mpd文件和初始片后,不能拿以后的webm片

mpd文件

<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/google/shaka-packager version v2.2.0-9e9833ea63-release-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-live:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT10S">
  <BaseURL>gsp.vp9.init.webm</BaseURL>
  <Period id="0">
    <AdaptationSet id="0" contentType="video" width="320" height="240" frameRate="1000000/40000" segmentAlignment="true" par="4:3">
      <ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b" cenc:default_KID="27992649-6a7f-5d25-da69-f2b3b2799a7f">
        <cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAEnmSZJan9dJdpp8rOyeZp/AAAAAA==</cenc:pssh>
      </ContentProtection>
      <Representation id="0" bandwidth="652189" codecs="vp09.00.10.08.00.02.02.02.00" mimeType="video/webm" sar="1:1">
        <SegmentTemplate timescale="1000000" initialization="vp69/gsp.vp9.init.webm" media="vp69/gsp.vp9.$Number$.webm" startNumber="1">
          <SegmentTimeline>
            <S t="0" d="5120000"/>
            <S t="5120000" d="4880000"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

webm文件结构

clipboard.png

请求第一个webm出错
clipboard.png

出错的响应信息

clipboard.png

错误源头 dash.js
var KeyMessage =
/**

  • @param {SessionToken} sessionToken the session
  • to which the key message is associated
  • @param {ArrayBuffer} message the key message

@param {string} defaultURL license acquisition URL provided by the CDM 整个参数导致错误*

*/
function KeyMessage(sessionToken, message, defaultURL, messageType) {
_classCallCheck(this, KeyMessage);
this.sessionToken = sessionToken;
this.message = message;
this.defaultURL = defaultURL;
this.messageType = messageType ? messageType : 'license-request';
};

初步分析可能是视频切片时有其他没考虑到的地方

切片:使用packager命令切片,并用 raw-key进行加密
packager input=vp9.webm,stream=video,init_segment=vp59/gsp.vp9.init.webm,segment_template=vp59/gsp.vp9.$Number$.webm --segment_duration 5 --protection_scheme cenc --enable_raw_key_encryption --keys label=SD:key_id=279926496a7f5d25da69f2b3b2799a7f:key=ccc0f2b3b279926496a7f5d25da692f6 --generate_static_mpd --mpd_output vp59.mpd

阅读 3.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题