APP下载

浅议点播影院发行包的规范要求

2020-04-29王木旺

现代电影技术 2020年4期
关键词:数据结构列表容器

王木旺

(中国电影科学技术研究所,北京100086)

1 引言

近年来,在国家政策的鼓励下,点播影院飞速发展。2018年初国家颁布了 《点播影院、点播院线管理规定》,2019年5月国家又正式发布了 《点播影院暂行技术规范》。技术规范涵盖了使用范围、点播影院的系统架构、发行版和安全级别要求、计费系统数据上报要求、放映质量要求、主要设备技术要求以及对应的测量方法共7个部分。其中在技术规范第三部分 (点播影院发行版和安全级别要求)中,对点播影院的发行包制作还做了要求和说明。

规范中对于安全级别一级的点播影院系统和设备所采用的影片打包方式不做限制,由用户自行选择打包方式,本文不做赘述;对于安全级别为二级和三级的点播影院系统和设备则要求 “参考ISO 26429系列标准的DCP打包格式,图像编码可采用JPEG2000、H.264、HEVC 等”,本文则侧重于研究该部分的影片打包和封装规则;对于安全级别为四级的点播影院系和设备要求 “符合现行专业影院系统和设备的安全级别要求,并通过相关认证”,实际上就是按照目前市场上的专业影院放映规范来要求的,本文不做过多讨论。

2 相关标准及说明

点播影院暂行技术规范中参考的ISO 26429系列标准是国际标准化组织发布的数字电影打包(Digital Cinema Packaging)相关系列标准,共有7个,分别是:

(1)ISO 26429-3:2008数字电影打包 (Digital Cinema Packaging)——第3部分:声音和图像轨迹文件(Sound and Picture Track File),该标准对应的国家行业标准是GY/T 293.1-2015,该标准主要是规定了采用素材交换格式 (MXF)发行数字电影内容的声音和图像轨迹文件格式的通用特性,定义了其数据结构。根据该条标准的要求,点播影院发行包的声音和图像文件必须采用MXF文件格式,并且还需要按照标准中规定的特定数据结构来存放数据。标准中明确要求MXF 文件格式应符合SMPTE 377:素材交换格式——文件格式规范(Material Exchange Format-File Format Specification);特定的操作模式应符合SMPTE 390:素材交换格式——特定操作模式 “OP-Atom”(Material Exchange Format-Specialized Operational Pattern“OP-Atom”);容器应采用SMPTE 379:素材交换格 式——MXF 通 用 容 器 (Material Exchange Format- MXF Generic Container)中定义的通用容器。

(2)ISO 26429-4:2008数字电影打包 (Digital Cinema Packaging)——第4 部 分: MXF JPEG2000 应用 (MXF JPEG 2000 Application),该标准对应的国家行业标准是GY/T 293.2-2015,该标准规定了采用JPEG2000 编码的码流映射到MXF通用容器的规则、提供的键值、通用标签和基本数据的描述定义。标准中规定了JPEG2000码流到MXF通用容器图像元素的映射方法采用SMPTE 422:素材 交换格 式——映 射JPEG2000 码 流 到MXF 通 用 容 器 (Material Exchange Format -Mapping JPEG2000 Codestreams into the MXF Generic Container)中规定的映射方法。

(3))ISO 26429-6:2008 数 字 电 影 打 包(Digital Cinema Packaging)——第6 部分:MXF轨迹文件基本数据加密 (MXF Track File Essence Encryption),该标准定义了基于帧封装的非交织MXF数字电影轨迹文件的加密语法,并指定了匹配的参考解密模型。标准中要求采用高级加密标准(Advanced Encryption Standard,AES)加密算法进行内容加密,还可选用哈希运算消息认证码

(Hash-based Message Authentication Code ,HMAC)——安全散列算法1 (Secure Hash Algorithm 1,SHA-1)对内容的完整性进行加密。

(4)ISO 26429-7:2008数字电影打包 (Digital Cinema Packaging)——第7部分:合成播放列表(Composition Playlist),该标准指定了合成播放列表的结构。合成播放列表是一个独立的完整电影文件播放列表,它是由一系列有序的电影分本组成,每个分本对应一个声音或图像轨迹文件,合成播放列表通过分本的顺序和时间来控制电影的播放。

(5)ISO 26429-8:2009数字电影打包 (Digital Cinema Packaging)——第8 部分:打包列表(Packing List),该标准指定了数字电影打包列表的数据交换格式。打包列表指定了发行包的内容,一个发行包应包含一个打包列表,以及和打包列表一起的合成播放列表资产、内容资产和其它需要的资产。

(6)ISO 26429-9:2009数字电影打包 (Digital Cinema Packaging)——第9部分:资产映射和文件分割(Asset Mapping and File Segmentation),该标准定义了数字电影发行包到存储文件之间的通用映射方法,定义的数据结构用于将数字电影资产标识值映射到文件存储路径。

(7)ISO 26429-10:2009 数 字 电 影 打 包(Digital Cinema Packaging)——第9部分:立体图像轨迹文件 (Stereoscopic Picture Track File),该标准定义了为封装立体图像内容的单个MXF 文件设计,还定义了一个新合成播放列表的扩展元素,用于引用立体图像轨迹文件。

另外,《点播影院暂行技术规范》中还容许图像编码可采用除JPEG2000以外的H.264、HEVC 等方式,则需要参考SMPTE 381-3:素材交换格式——映射AVC 码流到MXF 通用容器 (Material Exchange Format- Mapping MPEG Streams into the MXF Constrained Generic Container)。

3 点播影院发行包组成及结构

3.1 发行包组成

根据《点播影院暂行技术规范》对安全级别二级和三级的影片打包要求,其发行包的组成和专业影片是相同,两者都包含了一个打包列表 (Packing List,PKL),一个或多个合成播放列表 (Composition Playlist,CPL),一个资产映射列表 (Asset-Map),一个卷索引(Volume Index)以及一个或多个采用MXF格式封装的电影音视频数据轨迹文件(Track File)。只是专业影片对视频数据采用的是JPEG2000的编码方式,而点播影片可以采用JPEG2000、H.264、HEVC等多种编码方式,由于编码方式的不同,其轨迹文件在封装过程也会采用多种内容映射方式和键值标识。

另外,对于采用内容加密的发行包,接收方在使用它时,还需要有相应的密钥传递消息 (Key Delivery Message,KDM)用于解密,该KDM 并不属于影片发行包的资产,也通常不与影片发行包一起发送。

3.2 打包列表(PKL)的组成及结构

打包列表 (PKL)是由可扩展标记语言 (Extensible Markup Language,XML)来描述的,它包含了10个元素,其中有5项为必填项,分别是:唯一标识 (Id)、发行日期 (IssueDate)、发行者(Issuer)、创 建 者 (Creator)、资 产 列 表 (Asset List);另外5 项为可选项,分别是:注释文本(Annotation Text)、图标标识(IconId)、分组标识(GroupId)、签名者 (Signer)、签名值 (Signature)。

图1 打包列表的数据结构图

资产列表 (Asset List)是由一系列的资产(Asset)元素组成,其又包含6个子元素,其中有4个是必填项,分别是:资产标识 (Id)、哈希值(Hash)、大小(Size)、类型(Type);2个可选项,分别是:注释文本 (Annotation Text)、原始文件名(Original FileName)。

3.3 合成播放列表(CPL)的组成及结构

合成播放列表 (CPL)也是由可扩展标记语言(XML)来描述的,它包含了13个元素,其中有7项为必填项,分别是:唯一标识 (Id)、发行日期(IssueDate)、节目标题 (Content Title Text)、节目类型 (Content Kind)、节目版本 (Content Version)、节目等级 (Rating List)、分本列表 (Reel-List);另外6 项为可选项,分别是:注释文本(Annotation Text)、图标标识 (IconId)、发行者(Issuer)、创建者(Creator)、签名者(Signer)、签名值(Signature)。

分本列表 (Reel List)是由一系列的分本 (Real)元素组成,它包含三个元素,其中唯一标识(Id)和资产列表(Asset List)为必填项,注释文本(Annotation Text)为可选项。

资产列表(Asset List)是根据包含的资产信息不同,而由不同的元素组成,它主要有四个可选项,分别是标记(Main Markers)、图像(MainPicture)、声音 (MainSound)、字幕 (MainSubtitle)四个元素,另外标准还预留了扩展新的资产类型。

图2 合成播放列表的数据结构图

3.4 资产映射表的组成及结构

资产映射表也是由可扩展标记语言 (XML)来描述的,它包含了7 个元素,其中6 个为必填项,分别是:唯一标识 (Id)、创建者 (Creator)、卷数(VolumeCount)、发行日期 (IssueDate)、发行者(Issuer)、资产列表(Asset List);另外1项为可选项:注释文本(Annotation Text)。

资产列表 (Asset List)是由一系列的资产(Asset)元素组成,它包含4个子元素,其中2个为必填项,分别是:唯一标识 (Id)、块列表(Chunk List);另外2项为可选项,分别是:注释文本(Annotation Text)、打包列表标识 (Packing-List)。

块列表 (Chunk List) 是由一系列的块(Chunk)元素组成,它包含4个子元素,其中1个为必填项:存储路径 (Path);另外3项为可选项,分别是:卷索引 (VolumeIndex)、偏移量 (Offset)、长度(Length)。

图3 资产映射表的数据结构图

3.5 卷索引的组成及结构

卷索引文件也是由可扩展标记语言 (XML)来描述的,它的根元素是卷索引 (VolumeIndex),该元素仅包含一个子元素Index (索引)。

图4 卷索引文件的数据结构图

3.6 轨迹文件组成及结构

3.6 .1 MXF文件

点播影院发行包和专业影院发行包一样,存放音视频等数据的文件叫做轨迹文件,它采用素材交换格式 (MXF)进行封装。无论是点播影院发行包,还是专业影院发行包,其MXF 的文件结构和包含的数据项都相同。MXF文件从数据结构上可以分为文件头 (File Header)、文件体 (File Body)、文件尾(File Footer)三部分。简单的MXF文件数据结构如图5所示。

图5 简单的MXF文件数据结构图

一个MXF文件除了可从数据结构上划分文件组成,还可以从逻辑上进行分区,从逻辑上划分,更容易解析文件和管理索引。一个MXF 文件从逻辑上又可以划分为多个分区,分区包含了1个头分区、0个或多个主体分区、0个或多个尾分区。

有的MXF文件头部可能会有插入部分 (Runin)用于伪装MXF为别的文件类型,尾部可能会有随机索引包 (Random Index Pack)用于对各部分的索引。其各分区的数据组成如图6所示。

图6 MXF文件各分区的数据组成

3.6.2 KLV 编码协议

MXF文件是由一系列KLV (Key Length Value)编码的数据包组成,除文件的插入部分 (Runin)外,所有数据都应该采用KLV 编码并没有间隔。KLV 数据包由键值 (Key)、长度 (Length)、值(Value)三部分组成。其数据结构及描述如表1所示。

表1 KLV 数据结构及描述

其中,键值(Key)由16个字节长度的值来组成,其每一个字节都规定了不同的标识作用和取值范围,它的每部分详细描述和编码取值如表2所示。

表2 键值描述及编码

键值(Key)中Byte5至Byte7字节的编码如表3所示。

表3 UL标示符中5到7字节编码协议

0x03 Wrappers and Containers 01-简单封装包和容器 0x01~0x7F 02-复杂封装包和容器 0x01~0x7F 0x04 Labels 标签注册 0x01~0x7F 0x05 Registered Private Information注册私有信息 0x01~0x7F 06~7E Reserved 保留

根据键值(Key)的不同可以标识出KLV 数据包存储的是文件描述数据、音视频原始数据还是其它数据,并按照MXF 文件的格式要求,将不同的数据放置到文件的不同的部分,其中最主要的音视频等数据需要放置到素材容器中,但由于点播影院的音视频数据文件在KLV 编码过程中,采用了JPEG2000、H.264、H.265 等多种音视频压缩方式,其对应的数据映射方式也更多样,所以其键值(Key)也根据存储的数据类型、数据的编码方式以及数据映射方式来形成不同的值,并生成各种KLV组合。

3.6.3 通用容器(General Container,GC)

图7 通用容器、内容包和KLV 之间关系图

通用容器 (General Container)是一种数据流容器,它通过将不同类型的素材数据交织在一起,形成时间同步的数据流,保障音频、视频素材能够连续解码播放。每一个通用容器 (General Container)是由1 个或多个内容包 (Content Package,CP)组成,每个内容包(Content Package)又由最多5个数据项 (Item)组成,每个数据项 (Item)又由最多127 个KLV 包组成,其3者之间的关系如图7所示。

点播影院发行包的各种素材数据在生成各种KLV 组合时,需要按照数据到通用容器 (General Container)的格式要求来组织数据,并最终存放于MXF文件的素材容器部分。

3.6.4 内容映射

素材数据映射到通用容器 (General Container)的形式有三种:基于帧的映射 (Frame Wrapping)、基于片段的映射(Clip Wrapping)和自定义的映射

(Custom Wrapping)。

在基于帧的映射 (Frame Wrapping)方法中,每个通用容器 (General Container)包含1个或多个内容包 (Content Package),每个内容包中的内容为1 帧 (Frame)或1 场 (Field)的素材数据。基于帧的映射示意图如图8所示。

图8 基于帧的通用容器映射示意图

基于片段的映射 (Clip Wrapping)方法中,每个通用容器中只能包含1个内容包 (Content Package),每个内容包的内容为1或多帧 (Frame)/场(Field),其映射示意图如图9所示。

图9 基于片段的通用容器映射示意图

不符合基于帧映射 (Frame Wrapping)和片段映射(Clip Wrapping)的,都应该定义为自定义映射。自定义映射要求至少制定以下要求:每个内容包(Content Package)都按时间基数计量的时长;每个内容元素 (Content Element)是否时长固定;每个内容元素(Content Element)的数据结构,以及素材数据到该数据结构的映射方法;在SMPTE 377-1规则下,是否可以索引,如何在映射方法中应用。自定义映射也应当遵循ISO 26429系列标准中规定的内容包 (Content Package)结构、KLV编码结构、元素键值和容器标签。常用的自定义映射类型有分组原始流 (Packetized Elementary Streams,PES)、 图 像 组 (Group Of Picture,GOP)等。

目前点播影院暂行技术规范并没有严格要求采用哪种映射方式,这就要求不同的系统和设备厂商要具备多种映射方式处理能力,才能保证播放不同厂商制造的发行包。

4 小结

本文按照 《点播影院暂行技术规范》中,针对于安全级别为二级和三级的点播影院系统和设备制作点播影院发行包的要求,介绍了要参照的ISO 26429系列标准,以及按照标准,详细介绍了点播影院发行包的文件组成及数据结构。但由于本文的篇幅有限,不能对数据结构中具体的数据生成方法和规则详细说明,希望对点播影院各参与方在点播影院发行包的制作方面提供一个总体性了解。

猜你喜欢

数据结构列表容器
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
扩列吧
难以置信的事情
列表法解分式方程问题探索
液体对容器底及容器对桌面的压力和压强
取米
列表画树状图各有所长
2011年《小说月刊》转载列表
数据结构与算法课程设计教学模式的探讨