繁体   English   中英

如何使用HTML5播放CENC加密的MP4视频 <video> 标签?

[英]How do I play back CENC-encrypted MP4 video using the HTML5 <video> tag?

我正在尝试使用以下选项播放使用MP4box CENC加密的视频:

MP4Box -crypt drm_file_gpac_clear.xml BigBuckBunny.mp4 -out BigBuckBunny_cenc.mp4

XML文件指定clearKey加密的位置。 它取自GPAC网站https://gpac.wp.mines-telecom.fr/mp4box/encryption/common-encryption/

<?xml version="1.0" encoding="UTF-8"?>
<GPACDRM type="CENC AES-CTR">
<DRMInfo type="pssh" version="1" cypherOffset="9" cypherKey="0x6770616363656E6364726D746F6F6C31" cypherIV="0x00000000000000000000000000000001">
<BS ID128="0x6770616363656E6364726D746F6F6C31"/>
<BS value="2" bits="32"/>
<BS ID128="0x279926496a7f5d25da69f2b3b2799a7f"/>
<BS ID128="0x676cb88f302d10227992649885984045"/>
<BS bits="8" string="CID=Toto"/>
<BS ID128="0xccc0f2b3b279926496a7f5d25da692f6"/>
<BS ID128="0xccc0f2b3b279926496a7f5d25da692d6"/>
</DRMInfo>
<CrypTrack trackID="1" IsEncrypted="1" IV_size="16" first_IV="0x0a610676cb88f302d10ac8bc66e039ed" saiSavedBox="senc">
<key KID="0x279926496a7f5d25da69f2b3b2799a7f" value="0xccc0f2b3b279926496a7f5d25da692f6"/>
</CrypTrack>
</GPACDRM>

要回放此内容,我有一个HTML文件,其中包括:

<video  autoplay id="video1" controls src="BigBuckBunny_cenc.mp4" type="video/mp4"></video>

和JS:

var KEY = new Uint8Array([
  0xcc, 0xc0, 0xf2, 0xb3, 0xb2, 0x79, 0x92, 0x64,   // this is key for MP4 file
  0x96, 0xa7, 0xf5, 0xd2, 0x5d, 0xa6, 0x92, 0xf6    // encrypted with drm_file_gpac_clear.xml
]);

var config = [
  {
    initDataType: "cenc",
    videoType: "video/mp4",
  }
];

var video = document.getElementById('video1');
video.addEventListener('encrypted', handleEncrypted, false);

加上其他与此处无关的代码,因为我的问题是未触发“加密”事件。

如果我将未加密的文件替换为已加密的文件,这会很好,如果我替换http://simpl.info/eme/clearkey/中的WEBM文件并相应地更改密钥和配置,也可以很好地工作(“ view详细信息)。 因此,它播放一个加密的文件(在这种情况下,“加密”事件被激发,当然),但不是一个我已经与MP4box加密。

我已经在IE 11.0.9600.18036,Firefox 41.0,Chrome 45.0.2454.93 m和Chrome 47.0.2516.0 canary(64位)中进行了尝试。

我使用MP4 Explorer查看了MP4文件,并且其中包含我被告知可以使用的框,例如encv,sinf和schm。

在过去的几周里,我一直只是在尝试了解CENC,所以这一切都是相对较新的,我可能犯了一些明显的错误。 如果有人可以提供帮助,我将不胜感激。

我在https://github.com/gpac/gpac/issues/265 (一个GPAC / MP4box论坛)上提出了相同的问题,并从rbouqueau获得了此回复

我现在没有时间做一个详细的答案,但是它可以工作。 您应该可以在github或我们之前的sourceforge tracker / forums上找到其他人的示例。

您的问题是加密方案:您使用的是GPAC特定的加密方案,而您可能打算根据目标平台使用ClearKey或Widevine / Playready。

就目前而言,这似乎是正确的。 由于原始文件中的注释,我认为xml文件正在使用ClearKey:

无论如何,它不是,所以我一直在寻找使用ClearKey的等效文件。

这些可能会帮助:

googlegroups.com/a/chromium.org/group/graphics-dev/attach/dcaad1f1cb85e3eb/Clearkey_encryption_using_MP4BOX.pdf

html5.cablelabs.com/mse-eme/doc/creation.html

dvcs.w3.org/hg/html-media/raw-file/ff10d356cc07/encrypted-media/cenc-format.html(请参阅第4节)

但是,我还没有开始使用它……但是希望以上内容可能仍然可以帮助其他任何人解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM