王木旺
(中國(guó)電影科學(xué)技術(shù)研究所,北京100086)
近年來(lái),在國(guó)家政策的鼓勵(lì)下,點(diǎn)播影院飛速發(fā)展。2018年初國(guó)家頒布了 《點(diǎn)播影院、點(diǎn)播院線管理規(guī)定》,2019年5月國(guó)家又正式發(fā)布了 《點(diǎn)播影院暫行技術(shù)規(guī)范》。技術(shù)規(guī)范涵蓋了使用范圍、點(diǎn)播影院的系統(tǒng)架構(gòu)、發(fā)行版和安全級(jí)別要求、計(jì)費(fèi)系統(tǒng)數(shù)據(jù)上報(bào)要求、放映質(zhì)量要求、主要設(shè)備技術(shù)要求以及對(duì)應(yīng)的測(cè)量方法共7個(gè)部分。其中在技術(shù)規(guī)范第三部分 (點(diǎn)播影院發(fā)行版和安全級(jí)別要求)中,對(duì)點(diǎn)播影院的發(fā)行包制作還做了要求和說(shuō)明。
規(guī)范中對(duì)于安全級(jí)別一級(jí)的點(diǎn)播影院系統(tǒng)和設(shè)備所采用的影片打包方式不做限制,由用戶自行選擇打包方式,本文不做贅述;對(duì)于安全級(jí)別為二級(jí)和三級(jí)的點(diǎn)播影院系統(tǒng)和設(shè)備則要求 “參考ISO 26429系列標(biāo)準(zhǔn)的DCP打包格式,圖像編碼可采用JPEG2000、H.264、HEVC 等”,本文則側(cè)重于研究該部分的影片打包和封裝規(guī)則;對(duì)于安全級(jí)別為四級(jí)的點(diǎn)播影院系和設(shè)備要求 “符合現(xiàn)行專業(yè)影院系統(tǒng)和設(shè)備的安全級(jí)別要求,并通過(guò)相關(guān)認(rèn)證”,實(shí)際上就是按照目前市場(chǎng)上的專業(yè)影院放映規(guī)范來(lái)要求的,本文不做過(guò)多討論。
點(diǎn)播影院暫行技術(shù)規(guī)范中參考的ISO 26429系列標(biāo)準(zhǔn)是國(guó)際標(biāo)準(zhǔn)化組織發(fā)布的數(shù)字電影打包(Digital Cinema Packaging)相關(guān)系列標(biāo)準(zhǔn),共有7個(gè),分別是:
(1)ISO 26429-3:2008數(shù)字電影打包 (Digital Cinema Packaging)——第3部分:聲音和圖像軌跡文件(Sound and Picture Track File),該標(biāo)準(zhǔn)對(duì)應(yīng)的國(guó)家行業(yè)標(biāo)準(zhǔn)是GY/T 293.1-2015,該標(biāo)準(zhǔn)主要是規(guī)定了采用素材交換格式 (MXF)發(fā)行數(shù)字電影內(nèi)容的聲音和圖像軌跡文件格式的通用特性,定義了其數(shù)據(jù)結(jié)構(gòu)。根據(jù)該條標(biāo)準(zhǔn)的要求,點(diǎn)播影院發(fā)行包的聲音和圖像文件必須采用MXF文件格式,并且還需要按照標(biāo)準(zhǔn)中規(guī)定的特定數(shù)據(jù)結(jié)構(gòu)來(lái)存放數(shù)據(jù)。標(biāo)準(zhǔn)中明確要求MXF 文件格式應(yīng)符合SMPTE 377:素材交換格式——文件格式規(guī)范(Material Exchange Format-File Format Specification);特定的操作模式應(yīng)符合SMPTE 390:素材交換格式——特定操作模式 “OP-Atom”(Material Exchange Format-Specialized Operational Pattern“OP-Atom”);容器應(yīng)采用SMPTE 379:素材交換格 式——MXF 通 用 容 器 (Material Exchange Format- MXF Generic Container)中定義的通用容器。
(2)ISO 26429-4:2008數(shù)字電影打包 (Digital Cinema Packaging)——第4 部 分: MXF JPEG2000 應(yīng)用 (MXF JPEG 2000 Application),該標(biāo)準(zhǔn)對(duì)應(yīng)的國(guó)家行業(yè)標(biāo)準(zhǔn)是GY/T 293.2-2015,該標(biāo)準(zhǔn)規(guī)定了采用JPEG2000 編碼的碼流映射到MXF通用容器的規(guī)則、提供的鍵值、通用標(biāo)簽和基本數(shù)據(jù)的描述定義。標(biāo)準(zhǔn)中規(guī)定了JPEG2000碼流到MXF通用容器圖像元素的映射方法采用SMPTE 422:素材 交換格 式——映 射JPEG2000 碼 流 到MXF 通 用 容 器 (Material Exchange Format -Mapping JPEG2000 Codestreams into the MXF Generic Container)中規(guī)定的映射方法。
(3))ISO 26429-6:2008 數(shù) 字 電 影 打 包(Digital Cinema Packaging)——第6 部分:MXF軌跡文件基本數(shù)據(jù)加密 (MXF Track File Essence Encryption),該標(biāo)準(zhǔn)定義了基于幀封裝的非交織MXF數(shù)字電影軌跡文件的加密語(yǔ)法,并指定了匹配的參考解密模型。標(biāo)準(zhǔn)中要求采用高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)加密算法進(jìn)行內(nèi)容加密,還可選用哈希運(yùn)算消息認(rèn)證碼
(Hash-based Message Authentication Code ,HMAC)——安全散列算法1 (Secure Hash Algorithm 1,SHA-1)對(duì)內(nèi)容的完整性進(jìn)行加密。
(4)ISO 26429-7:2008數(shù)字電影打包 (Digital Cinema Packaging)——第7部分:合成播放列表(Composition Playlist),該標(biāo)準(zhǔn)指定了合成播放列表的結(jié)構(gòu)。合成播放列表是一個(gè)獨(dú)立的完整電影文件播放列表,它是由一系列有序的電影分本組成,每個(gè)分本對(duì)應(yīng)一個(gè)聲音或圖像軌跡文件,合成播放列表通過(guò)分本的順序和時(shí)間來(lái)控制電影的播放。
(5)ISO 26429-8:2009數(shù)字電影打包 (Digital Cinema Packaging)——第8 部分:打包列表(Packing List),該標(biāo)準(zhǔn)指定了數(shù)字電影打包列表的數(shù)據(jù)交換格式。打包列表指定了發(fā)行包的內(nèi)容,一個(gè)發(fā)行包應(yīng)包含一個(gè)打包列表,以及和打包列表一起的合成播放列表資產(chǎn)、內(nèi)容資產(chǎn)和其它需要的資產(chǎn)。
(6)ISO 26429-9:2009數(shù)字電影打包 (Digital Cinema Packaging)——第9部分:資產(chǎn)映射和文件分割(Asset Mapping and File Segmentation),該標(biāo)準(zhǔn)定義了數(shù)字電影發(fā)行包到存儲(chǔ)文件之間的通用映射方法,定義的數(shù)據(jù)結(jié)構(gòu)用于將數(shù)字電影資產(chǎn)標(biāo)識(shí)值映射到文件存儲(chǔ)路徑。
(7)ISO 26429-10:2009 數(shù) 字 電 影 打 包(Digital Cinema Packaging)——第9部分:立體圖像軌跡文件 (Stereoscopic Picture Track File),該標(biāo)準(zhǔn)定義了為封裝立體圖像內(nèi)容的單個(gè)MXF 文件設(shè)計(jì),還定義了一個(gè)新合成播放列表的擴(kuò)展元素,用于引用立體圖像軌跡文件。
另外,《點(diǎn)播影院暫行技術(shù)規(guī)范》中還容許圖像編碼可采用除JPEG2000以外的H.264、HEVC 等方式,則需要參考SMPTE 381-3:素材交換格式——映射AVC 碼流到MXF 通用容器 (Material Exchange Format- Mapping MPEG Streams into the MXF Constrained Generic Container)。
根據(jù)《點(diǎn)播影院暫行技術(shù)規(guī)范》對(duì)安全級(jí)別二級(jí)和三級(jí)的影片打包要求,其發(fā)行包的組成和專業(yè)影片是相同,兩者都包含了一個(gè)打包列表 (Packing List,PKL),一個(gè)或多個(gè)合成播放列表 (Composition Playlist,CPL),一個(gè)資產(chǎn)映射列表 (Asset-Map),一個(gè)卷索引(Volume Index)以及一個(gè)或多個(gè)采用MXF格式封裝的電影音視頻數(shù)據(jù)軌跡文件(Track File)。只是專業(yè)影片對(duì)視頻數(shù)據(jù)采用的是JPEG2000的編碼方式,而點(diǎn)播影片可以采用JPEG2000、H.264、HEVC等多種編碼方式,由于編碼方式的不同,其軌跡文件在封裝過(guò)程也會(huì)采用多種內(nèi)容映射方式和鍵值標(biāo)識(shí)。
另外,對(duì)于采用內(nèi)容加密的發(fā)行包,接收方在使用它時(shí),還需要有相應(yīng)的密鑰傳遞消息 (Key Delivery Message,KDM)用于解密,該KDM 并不屬于影片發(fā)行包的資產(chǎn),也通常不與影片發(fā)行包一起發(fā)送。
打包列表 (PKL)是由可擴(kuò)展標(biāo)記語(yǔ)言 (Extensible Markup Language,XML)來(lái)描述的,它包含了10個(gè)元素,其中有5項(xiàng)為必填項(xiàng),分別是:唯一標(biāo)識(shí) (Id)、發(fā)行日期 (IssueDate)、發(fā)行者(Issuer)、創(chuàng) 建 者 (Creator)、資 產(chǎn) 列 表 (Asset List);另外5 項(xiàng)為可選項(xiàng),分別是:注釋文本(Annotation Text)、圖標(biāo)標(biāo)識(shí)(IconId)、分組標(biāo)識(shí)(GroupId)、簽名者 (Signer)、簽名值 (Signature)。
圖1 打包列表的數(shù)據(jù)結(jié)構(gòu)圖
資產(chǎn)列表 (Asset List)是由一系列的資產(chǎn)(Asset)元素組成,其又包含6個(gè)子元素,其中有4個(gè)是必填項(xiàng),分別是:資產(chǎn)標(biāo)識(shí) (Id)、哈希值(Hash)、大小(Size)、類型(Type);2個(gè)可選項(xiàng),分別是:注釋文本 (Annotation Text)、原始文件名(Original FileName)。
合成播放列表 (CPL)也是由可擴(kuò)展標(biāo)記語(yǔ)言(XML)來(lái)描述的,它包含了13個(gè)元素,其中有7項(xiàng)為必填項(xiàng),分別是:唯一標(biāo)識(shí) (Id)、發(fā)行日期(IssueDate)、節(jié)目標(biāo)題 (Content Title Text)、節(jié)目類型 (Content Kind)、節(jié)目版本 (Content Version)、節(jié)目等級(jí) (Rating List)、分本列表 (Reel-List);另外6 項(xiàng)為可選項(xiàng),分別是:注釋文本(Annotation Text)、圖標(biāo)標(biāo)識(shí) (IconId)、發(fā)行者(Issuer)、創(chuàng)建者(Creator)、簽名者(Signer)、簽名值(Signature)。
分本列表 (Reel List)是由一系列的分本 (Real)元素組成,它包含三個(gè)元素,其中唯一標(biāo)識(shí)(Id)和資產(chǎn)列表(Asset List)為必填項(xiàng),注釋文本(Annotation Text)為可選項(xiàng)。
資產(chǎn)列表(Asset List)是根據(jù)包含的資產(chǎn)信息不同,而由不同的元素組成,它主要有四個(gè)可選項(xiàng),分別是標(biāo)記(Main Markers)、圖像(MainPicture)、聲音 (MainSound)、字幕 (MainSubtitle)四個(gè)元素,另外標(biāo)準(zhǔn)還預(yù)留了擴(kuò)展新的資產(chǎn)類型。
圖2 合成播放列表的數(shù)據(jù)結(jié)構(gòu)圖
資產(chǎn)映射表也是由可擴(kuò)展標(biāo)記語(yǔ)言 (XML)來(lái)描述的,它包含了7 個(gè)元素,其中6 個(gè)為必填項(xiàng),分別是:唯一標(biāo)識(shí) (Id)、創(chuàng)建者 (Creator)、卷數(shù)(VolumeCount)、發(fā)行日期 (IssueDate)、發(fā)行者(Issuer)、資產(chǎn)列表(Asset List);另外1項(xiàng)為可選項(xiàng):注釋文本(Annotation Text)。
資產(chǎn)列表 (Asset List)是由一系列的資產(chǎn)(Asset)元素組成,它包含4個(gè)子元素,其中2個(gè)為必填項(xiàng),分別是:唯一標(biāo)識(shí) (Id)、塊列表(Chunk List);另外2項(xiàng)為可選項(xiàng),分別是:注釋文本(Annotation Text)、打包列表標(biāo)識(shí) (Packing-List)。
塊列表 (Chunk List) 是由一系列的塊(Chunk)元素組成,它包含4個(gè)子元素,其中1個(gè)為必填項(xiàng):存儲(chǔ)路徑 (Path);另外3項(xiàng)為可選項(xiàng),分別是:卷索引 (VolumeIndex)、偏移量 (Offset)、長(zhǎng)度(Length)。
圖3 資產(chǎn)映射表的數(shù)據(jù)結(jié)構(gòu)圖
卷索引文件也是由可擴(kuò)展標(biāo)記語(yǔ)言 (XML)來(lái)描述的,它的根元素是卷索引 (VolumeIndex),該元素僅包含一個(gè)子元素Index (索引)。
圖4 卷索引文件的數(shù)據(jù)結(jié)構(gòu)圖
點(diǎn)播影院發(fā)行包和專業(yè)影院發(fā)行包一樣,存放音視頻等數(shù)據(jù)的文件叫做軌跡文件,它采用素材交換格式 (MXF)進(jìn)行封裝。無(wú)論是點(diǎn)播影院發(fā)行包,還是專業(yè)影院發(fā)行包,其MXF 的文件結(jié)構(gòu)和包含的數(shù)據(jù)項(xiàng)都相同。MXF文件從數(shù)據(jù)結(jié)構(gòu)上可以分為文件頭 (File Header)、文件體 (File Body)、文件尾(File Footer)三部分。簡(jiǎn)單的MXF文件數(shù)據(jù)結(jié)構(gòu)如圖5所示。
圖5 簡(jiǎn)單的MXF文件數(shù)據(jù)結(jié)構(gòu)圖
一個(gè)MXF文件除了可從數(shù)據(jù)結(jié)構(gòu)上劃分文件組成,還可以從邏輯上進(jìn)行分區(qū),從邏輯上劃分,更容易解析文件和管理索引。一個(gè)MXF 文件從邏輯上又可以劃分為多個(gè)分區(qū),分區(qū)包含了1個(gè)頭分區(qū)、0個(gè)或多個(gè)主體分區(qū)、0個(gè)或多個(gè)尾分區(qū)。
有的MXF文件頭部可能會(huì)有插入部分 (Runin)用于偽裝MXF為別的文件類型,尾部可能會(huì)有隨機(jī)索引包 (Random Index Pack)用于對(duì)各部分的索引。其各分區(qū)的數(shù)據(jù)組成如圖6所示。
圖6 MXF文件各分區(qū)的數(shù)據(jù)組成
3.6.2 KLV 編碼協(xié)議
MXF文件是由一系列KLV (Key Length Value)編碼的數(shù)據(jù)包組成,除文件的插入部分 (Runin)外,所有數(shù)據(jù)都應(yīng)該采用KLV 編碼并沒(méi)有間隔。KLV 數(shù)據(jù)包由鍵值 (Key)、長(zhǎng)度 (Length)、值(Value)三部分組成。其數(shù)據(jù)結(jié)構(gòu)及描述如表1所示。
表1 KLV 數(shù)據(jù)結(jié)構(gòu)及描述
其中,鍵值(Key)由16個(gè)字節(jié)長(zhǎng)度的值來(lái)組成,其每一個(gè)字節(jié)都規(guī)定了不同的標(biāo)識(shí)作用和取值范圍,它的每部分詳細(xì)描述和編碼取值如表2所示。
表2 鍵值描述及編碼
鍵值(Key)中Byte5至Byte7字節(jié)的編碼如表3所示。
表3 UL標(biāo)示符中5到7字節(jié)編碼協(xié)議
0x03 Wrappers and Containers 01-簡(jiǎn)單封裝包和容器 0x01~0x7F 02-復(fù)雜封裝包和容器 0x01~0x7F 0x04 Labels 標(biāo)簽注冊(cè) 0x01~0x7F 0x05 Registered Private Information注冊(cè)私有信息 0x01~0x7F 06~7E Reserved 保留
根據(jù)鍵值(Key)的不同可以標(biāo)識(shí)出KLV 數(shù)據(jù)包存儲(chǔ)的是文件描述數(shù)據(jù)、音視頻原始數(shù)據(jù)還是其它數(shù)據(jù),并按照MXF 文件的格式要求,將不同的數(shù)據(jù)放置到文件的不同的部分,其中最主要的音視頻等數(shù)據(jù)需要放置到素材容器中,但由于點(diǎn)播影院的音視頻數(shù)據(jù)文件在KLV 編碼過(guò)程中,采用了JPEG2000、H.264、H.265 等多種音視頻壓縮方式,其對(duì)應(yīng)的數(shù)據(jù)映射方式也更多樣,所以其鍵值(Key)也根據(jù)存儲(chǔ)的數(shù)據(jù)類型、數(shù)據(jù)的編碼方式以及數(shù)據(jù)映射方式來(lái)形成不同的值,并生成各種KLV組合。
3.6.3 通用容器(General Container,GC)
圖7 通用容器、內(nèi)容包和KLV 之間關(guān)系圖
通用容器 (General Container)是一種數(shù)據(jù)流容器,它通過(guò)將不同類型的素材數(shù)據(jù)交織在一起,形成時(shí)間同步的數(shù)據(jù)流,保障音頻、視頻素材能夠連續(xù)解碼播放。每一個(gè)通用容器 (General Container)是由1 個(gè)或多個(gè)內(nèi)容包 (Content Package,CP)組成,每個(gè)內(nèi)容包(Content Package)又由最多5個(gè)數(shù)據(jù)項(xiàng) (Item)組成,每個(gè)數(shù)據(jù)項(xiàng) (Item)又由最多127 個(gè)KLV 包組成,其3者之間的關(guān)系如圖7所示。
點(diǎn)播影院發(fā)行包的各種素材數(shù)據(jù)在生成各種KLV 組合時(shí),需要按照數(shù)據(jù)到通用容器 (General Container)的格式要求來(lái)組織數(shù)據(jù),并最終存放于MXF文件的素材容器部分。
3.6.4 內(nèi)容映射
素材數(shù)據(jù)映射到通用容器 (General Container)的形式有三種:基于幀的映射 (Frame Wrapping)、基于片段的映射(Clip Wrapping)和自定義的映射
(Custom Wrapping)。
在基于幀的映射 (Frame Wrapping)方法中,每個(gè)通用容器 (General Container)包含1個(gè)或多個(gè)內(nèi)容包 (Content Package),每個(gè)內(nèi)容包中的內(nèi)容為1 幀 (Frame)或1 場(chǎng) (Field)的素材數(shù)據(jù)?;趲挠成涫疽鈭D如圖8所示。
圖8 基于幀的通用容器映射示意圖
基于片段的映射 (Clip Wrapping)方法中,每個(gè)通用容器中只能包含1個(gè)內(nèi)容包 (Content Package),每個(gè)內(nèi)容包的內(nèi)容為1或多幀 (Frame)/場(chǎng)(Field),其映射示意圖如圖9所示。
圖9 基于片段的通用容器映射示意圖
不符合基于幀映射 (Frame Wrapping)和片段映射(Clip Wrapping)的,都應(yīng)該定義為自定義映射。自定義映射要求至少制定以下要求:每個(gè)內(nèi)容包(Content Package)都按時(shí)間基數(shù)計(jì)量的時(shí)長(zhǎng);每個(gè)內(nèi)容元素 (Content Element)是否時(shí)長(zhǎng)固定;每個(gè)內(nèi)容元素(Content Element)的數(shù)據(jù)結(jié)構(gòu),以及素材數(shù)據(jù)到該數(shù)據(jù)結(jié)構(gòu)的映射方法;在SMPTE 377-1規(guī)則下,是否可以索引,如何在映射方法中應(yīng)用。自定義映射也應(yīng)當(dāng)遵循ISO 26429系列標(biāo)準(zhǔn)中規(guī)定的內(nèi)容包 (Content Package)結(jié)構(gòu)、KLV編碼結(jié)構(gòu)、元素鍵值和容器標(biāo)簽。常用的自定義映射類型有分組原始流 (Packetized Elementary Streams,PES)、 圖 像 組 (Group Of Picture,GOP)等。
目前點(diǎn)播影院暫行技術(shù)規(guī)范并沒(méi)有嚴(yán)格要求采用哪種映射方式,這就要求不同的系統(tǒng)和設(shè)備廠商要具備多種映射方式處理能力,才能保證播放不同廠商制造的發(fā)行包。
本文按照 《點(diǎn)播影院暫行技術(shù)規(guī)范》中,針對(duì)于安全級(jí)別為二級(jí)和三級(jí)的點(diǎn)播影院系統(tǒng)和設(shè)備制作點(diǎn)播影院發(fā)行包的要求,介紹了要參照的ISO 26429系列標(biāo)準(zhǔn),以及按照標(biāo)準(zhǔn),詳細(xì)介紹了點(diǎn)播影院發(fā)行包的文件組成及數(shù)據(jù)結(jié)構(gòu)。但由于本文的篇幅有限,不能對(duì)數(shù)據(jù)結(jié)構(gòu)中具體的數(shù)據(jù)生成方法和規(guī)則詳細(xì)說(shuō)明,希望對(duì)點(diǎn)播影院各參與方在點(diǎn)播影院發(fā)行包的制作方面提供一個(gè)總體性了解。