DCP影院放映格式研究与分析(持续更新中)

属于是没啥干的,正好前段时间刷到了编剧雷神的一条视频,关于电影放映格式的科普,引起了我的兴趣,这里记录一下研究以及分析,观测一下这个格式的细节以及利用点,进行一个题目的出,欢迎其他师傅进行出题,拓展题目的知识面

介绍

直接丢一个百度百科的截图和连接,这里比较详细,后面也不进行重复内容的赘述,这里可以看看他的主要应用场景以及原理的一个情况DCP(数字电影包)_百度百科 (baidu.com)

图片[1]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

DCP毕竟是影院放映格式,电影作为商业的产物,自然大部分的软件是需要收费的,这里百科提到了一个叫DCP-o-matic的免费软件,这是好的,而且自带中文,安装速度也非常快,这里是他的一个网址,可以进行一个下载

DCP-o-matic (dcpomatic.com)

图片[2]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

并且可以看见,支持的平台还是非常多的,作者还是很牛逼的

二(不知道起什么标题

软件安装完成后,桌面会直接出现五个图标,还是比较哈人

图片[3]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

一个一个来,直接最后一个

图片[4]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

完整启动

图片[5]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

整个界面看起来还是比较牛逼的,初次上手是完全不明白需要干些什么。。。

当然,按照常规软件使用,第一步自然是创建全新的工程

图片[6]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇
图片[7]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

这样,左边就出现了经典视频编辑软件的预览框了属于是

随便导入个视频然后导出即可,当然,具有非常多的设置内容需要我们进行设置与调试,自行摸索,里面涉及电影方面的知识,不在我的知识范畴。

图片[8]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

核心处是这里的,它具有签名以及加密的选项,

图片[9]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

在创建中也存在KDM

当然不知道什么是KDM的可以看看这个文章

(15条消息) 数字电影的KDM是什么?_feinanghun3788的博客-CSDN博客_kdm是什么意思

这里我直接生成一个未加密的DCP导出来看看情况

图片[10]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

框中选中的最长文件名就是导出后的DCP文件包,通过拷贝到影院的管理系统就可以进行正确的放映

video则为缓存文件,导出后删除即可,节约硬盘文件

如果需要本地播放dcp文件包,利用自带的player播放即可

图片[11]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

(虚拟机效率有点低,演示到这里,毕竟2k码率不是虚拟机带的动的.jpg

那么接下来就是主观的文件分析与解析,纯原创,无任何参考

解析

观察一下文件列表

图片[12]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

逐一观看分析

首先是ASSETMAP文件

图片[13]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

记录着所有当前DCP包的所有uuid,文件名称以及文件的大小,作用是读取软件读取ASSETMAP对待播放的文件以及读取的文件进行解析,

uuid貌似是随机,没啥规律。但是我这边测试如果uuid被更改的话软件是无法正常播放的。

主要结构

<Asset>
      <Id>urn:uuid:a30d02bb-4bd2-4123-a64a-59fad470df67</Id>
      <PackingList>true</PackingList>
      <ChunkList>
        <Chunk>
          <Path>pkl_a30d02bb-4bd2-4123-a64a-59fad470df67.xml</Path>
          <VolumeIndex>1</VolumeIndex>
          <Offset>0</Offset>
          <Length>8740</Length>
        </Chunk>
      </ChunkList>
</Asset>

还是比较显而易见的xml格式

下个文件,cpl文件的一个分析

内容还是比较多的,

图片[14]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

当然常规格式是不变的,该文件主要解析判别音频和视频详细信息和签名加密的

  <ReelList>
    <Reel>
      <Id>urn:uuid:d5baf17c-83d9-4306-9684-3428a8591708</Id>
      <AssetList>
        <MainPicture>
          <Id>urn:uuid:76c03e9e-89fa-476f-82c1-3830c08ec5a7</Id>
          <AnnotationText>j2c_76c03e9e-89fa-476f-82c1-3830c08ec5a7.mxf</AnnotationText>
          <EditRate>30 1</EditRate>
          <IntrinsicDuration>4095</IntrinsicDuration>
          <EntryPoint>0</EntryPoint>
          <Duration>4095</Duration>
          <Hash>5aGsAqrh48aUfuPSKtVMoAOaOoY=</Hash>
          <FrameRate>30 1</FrameRate>
          <ScreenAspectRatio>1.85</ScreenAspectRatio>
        </MainPicture>
        <MainSound>
          <Id>urn:uuid:9b04a14b-2bfd-42d0-9788-bfd3e5d54ad6</Id>
          <AnnotationText>pcm_9b04a14b-2bfd-42d0-9788-bfd3e5d54ad6.mxf</AnnotationText>
          <EditRate>30 1</EditRate>
          <IntrinsicDuration>4095</IntrinsicDuration>
          <EntryPoint>0</EntryPoint>
          <Duration>4095</Duration>
          <Hash>7EH1FaDkSggILH7pC+isiipNODI=</Hash>
        </MainSound>
      </AssetList>
    </Reel>
  </ReelList>

uuid其实对应的就是文件名,核心的内容则是Hash值,其余并不重要,当然,在DCP包中,视频会被统一认为成是图片序列,这也是为什么视频文件会被认为成MainPicture。MainSound不必多说,音频的参数以及Hash值写着呢。

图片[15]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

下段开始则是具体的密钥,本质上是openssl的x509加密方式,同理,经过测试,如果密钥不正确,无法被解析播放。
这里本质上的作用是签名作用,如果是在最开始导出的时候勾选加密的话,会有一定的密钥对应进行解密,后面进行展示。

接下来是PKL文件
图片[16]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

同样分成两段来进行解析

<AssetList>
    <Asset>
      <Id>urn:uuid:b930717c-2ebd-41ee-bf96-4f7eb552912b</Id>
      <AnnotationText>b930717c-2ebd-41ee-bf96-4f7eb552912b</AnnotationText>
      <Hash>NbJAmgRI82AB5Bhyzo/FpBmd0w4=</Hash>
      <Size>9233</Size>
      <Type>text/xml;asdcpKind=CPL</Type>
    </Asset>
    <Asset>
      <Id>urn:uuid:76c03e9e-89fa-476f-82c1-3830c08ec5a7</Id>
      <AnnotationText>76c03e9e-89fa-476f-82c1-3830c08ec5a7</AnnotationText>
      <Hash>5aGsAqrh48aUfuPSKtVMoAOaOoY=</Hash>
      <Size>2518301586</Size>
      <Type>application/x-smpte-mxf;asdcpKind=Picture</Type>
    </Asset>
    <Asset>
      <Id>urn:uuid:9b04a14b-2bfd-42d0-9788-bfd3e5d54ad6</Id>
      <AnnotationText>9b04a14b-2bfd-42d0-9788-bfd3e5d54ad6</AnnotationText>
      <Hash>7EH1FaDkSggILH7pC+isiipNODI=</Hash>
      <Size>118034594</Size>
      <Type>application/x-smpte-mxf;asdcpKind=Sound</Type>
    </Asset>
  </AssetList>

根据ASSETMAP的顺序,我们可以知道他的解析顺序是PKL,CPL,J2C,PCM

同时,PKL与CPL分别是不通作用的解析,按照一定顺序,缺一不可。

此处的内容与CPL中大体相似,而至于Hash的计算,我这里经过一定的推演,发现了计算公式

图片[17]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇
openssl sha1 -binary "文件名" | openssl base64

通过这个公式便可以计算pkl文件中存在的hash值。

图片[18]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

可以发现是完全一致的,其他文件也同理

图片[19]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

当然,后半部分是与cpl的后半部分一致的,包括签名以及编码证书,均为一直。

媒体文件

图片[20]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

两个mxf则为最后的重中之重,在前面的cpl文件中可以发现j2c是被认为成图片序列文件。

pcm文件则是音频文件,我们其实可以通过常规的播放器直接进行播放,但是视频与图片是分开的,

图片[21]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

例如这样,仅有声音。所以影院的TMS系统就是作为合并播放解析用的。

这里补充一下

视频文件的序列帧编码一般是JPEG 2000,

音频文件也可以弄多个音轨用来存放不同的声道和语言,以达到立体声和多语言的目的。

关于最后的VOLINDEX,我这里还不知道是啥,也没查到相关资料,暂且不做过多介绍。

图片[22]-DCP影院放映格式研究与分析(持续更新中)-魔法少女雪殇

关于加密密钥的KMS内容,后续更新。

© 版权声明
THE END
喜欢就支持一下吧
点赞2 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情