具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种能够自适应播放的YUV文件的存储方法。如图1所示,该能够自适应播放的YUV文件的存储方法包括以下步骤:
在步骤101中,获取播放参数信息,其中播放参数信息包括:YUV帧数据开始位置、YUV帧数据结束位置、帧宽、帧高、YUV格式和帧率等。
YUV文件是按原始YUV数据顺序无封装层的叠加形式进行存储,在播放YUV数据的时候,如果在未知YUV宽高的情况下,是无法正确显示YUV图像。如果不知道帧率则无法还原原有视频的播放效果。同时,YUV文件都是按顺序一帧一帧地存储在单个文件中,是一种YUV帧数据的顺序堆积,由于帧与帧之间没有明显的分隔符,所以在丢失或未知帧宽、高信息的时候,就很难对YUV文件进行正确的显示播放,而对于在单个YUV文件实现变分辨率、变帧率及变存储格式的YUV的播放,则需要保存更多的参数信息,如不同的分辨率的YUV数据的YUV帧数据开始位置、YUV帧数据结束位置、帧宽、帧高、YUV格式和帧率。
播放参数信息也可以包含上述信息的一个或者几个,或者还包含上述信息之外的其他信息,比如特定的数据结构等。
此后进入步骤102,根据获取的YUV文件中YUV数据帧的播放参数信息,判断YUV文件中相同序列的YUV数据帧是否为该帧序列的首帧,若是,则标识该帧为首帧,若否,则标识该帧为后续帧。
此后进入步骤103,对YUV文件中相同序列的YUV数据首帧和后续帧分别设置固定长度的系统预设的第一标识符和第二标识符。
标识符的长度至少为4个字节。由于四字节的数据一共是32位,出现伪标识符的概率是
因此可以较好地避免伪标识符出现的情况。
也可以设置标识符长度为不同数目的字节,比如,当视频传输数据需要高鲁棒性和可靠安全性时,则可以相对增加标识符的字节数,以减少伪标识符出现的概率。
通过标识符的设置,可使得读取装置能够获知本YUV文件为携带参数信息的YUV文件,进而采用本发明的读取方法,以较好地与现有播放技术相兼容。
此后进入步骤104,根据YUV文件中YUV数据帧的已标识的标识符和播放参数信息生成该YUV帧序列的水印信息。
在本发明的一个优选实例中,每一序列相同参数信息的首帧以第一标识符如“start”的水印信息开始,后续帧以第二标识符如“same”的水印信息开始。其中水印信息的首帧存储的信息较多,一般包括标识符和播放参数信息,其中,播放参数信息包含:YUV帧数据开始位置、YUV帧数据结束位置、帧宽、帧高、YUV格式和帧率等。
水印信息存储格式根据标识符的类别分为两种,其一包含信息为第一标识符和播放参数信息,其二包含信息为第二标识符。
另外也可以设置水印信息不同的存储格式和长度。
由于水印信息数据帧格式不同,与后续帧格式相比,首帧格式增加了该YUV文件序列的参数信息字段,用于存储该YUV帧数据序列的播放参数信息,相应地,我们可以根据水印信息帧格式不同进行标识符的选择。
在具有相同播放参数的帧序列中,并非一定只有首帧可以携带包含第一标识符和,在本发明的另一个优选实例中,还通过增加水印信息标识符,可以使得YUV数据帧丢失或者播放顺序散乱时,可以快速帧定位进行YUV数据校验,并根据标识符信息类型来调整YUV数据为原始的播放顺序。而且,通过标识符的系统预先设置方式,避免了系统生成标识符的工作流程,这样大大提高了本系统的工作效率。
此后进入步骤105,根据实际的一帧YUV数据中Y分量的八个字节与一个水印信息字节的八位的奇偶性相对应,将水印信息分别嵌入到Y分量的最低位,使得每个Y字节的最后一比特与水印的一个比特相同。
水印信息可以嵌入到YUV数据Y、U或V分量中的任何一个分量,或者YUV数据分量的任意组合,但一般而言,对于多种格式的YUV文件,人对YUV文件中的U和V分量的变化敏感度相对于Y更弱一些,U和V分量存储数据量较Y分量要小,在文件存储时,U和V常被压缩,为了不影响YUV文件的最终显示效果,所以通常将水印信息嵌入到Y分量的最低位。
水印信息的长度小于或等于帧宽和帧高的乘积除以8。可以进一步保证嵌入YUV文件中的水印信息的完整性及安全性。若不然,当水印长度信息大于帧宽和帧高的乘积除以8时,根据实际的一帧YUV数据中Y分量的八个字节与一个水印信息字节的八位的奇偶性相对应,将水印信息分别嵌入到Y分量的最低位的方法中,在存储该YUV文件时,就不能将所有的水印信息完整安全地嵌入到该YUV文件中,这样就使得该YUV文件数据帧的播放紊乱无序且不能与现有播放方式相兼容,实现不了多分辨率或变帧率的播放。
此后进入步骤106,将嵌入水印信息的YUV数据帧存储到YUV文件中,以备播放。
此后进入步骤107,判断嵌入水印信息的YUV数据帧是否存储结束。
若否,则返回步骤106;若是,则结束本流程。
作为本实施方式优选例,在步骤101前,预先执行播放参数信息和水印信息初始化步骤,后续获取参数信息和生成水印信息的步骤则可认为是信息刷新(或者写入)。
由于YUV的播放不存在解码,不存在数据丢失或者变化,所以水印信息不会在播放时候变化或者丢失。
因为“start”表示成水印总共有40位,一般出现伪标识符的概率为
基本不会出现伪标识符,而且标识符的长度越长,则伪标识符出现的概率越小。
在本发明的其他某些实施例中,对于安全性和鲁棒性要求较高的多媒体版权水印信息,上述标识符可以不通过系统预先设置,也可以根据视频播放的动态属性信息生成标识符,例如利用水印技术在多媒体内容的数据中嵌入创建者、所有者的标示信息,或者嵌入购买者的标示(即序列号)的过程中,可以根据水印信息在使用该多媒体内容中的动态属性信息生成标识符并将该标识符嵌入到水印信息当中,这样大大提高了安全性和鲁棒性。
对于YUV文件完整性要求高的系统,当YUV数据丢失或者播放顺序散乱时,可以采取水印信息帧定位和校验策略进行校验和修正该YUV数据帧,若校验或者修正失败,还可以根据水印信息的播放参数信息,通过YUV数据帧重传机制重传该YUV数据帧,以满足该系统的YUV文件完整性要求。
为保证YUV数据文件完整性所使用的水印信息帧定位策略,可以通过设置标识符来提高水印信息帧定位的定位效率,比如使用不同的标识符长度或不同ASCII码值的字符来分别设置作用不一的标识符,或者使用循环校验位策略进行标识符校验和修正。
同时,为方便YUV文件一些实际应用比如剪辑等,还可以根据实际需要,在相同序列的YUV数据帧之间,分别间隔固定长度的位置以插入该序列YUV数据水印信息的首帧数据。例如,使用相同播放参数的某个序列的YUV数据帧共有300帧,在一个实例中,只在第1帧的水印中有完整的播放参数信息,其它帧的水印中只有表示播放参数与前一帧相同的标识符;在另一个实例中,可以在第1帧、第61帧、第121帧、第181帧、第211帧、第241帧、第271帧的水印中分别嵌入完整的播放参数信息。这样,如果在第200帧的位置剪断,就不需要一直向前从第1帧的水印中找到完整的播放参数信息,而是在不远的第181帧的水印中就可以找到完整的播放参数信息。
作为本实施方式的一个优选例,图2是一种能够自适应播放的YUV文件的存储方法。
具体地说:
在步骤201中,初始化YUV播放参数信息。
此后进入步骤202,初始化水印信息。
此后进入步骤203,输入YUV数据帧。
此后进入步骤204,获取YUV数据帧信息。
此后进入步骤205,判断YUV文件播放参数是否改变。
若是,则进入步骤206;若否,则进入步骤207。
在步骤206中,更新水印信息,此后进入步骤207。
在步骤207中,嵌入水印信息。
此后进入步骤208,写入YUV文件。
此后进入步骤209,判断当前YUV文件是否输入完毕。
若否,则返回步骤201,输入下一帧YUV数据帧;若否,则结束本流程。
本发明第二实施方式涉及一种能够自适应播放的YUV文件的播放方法。如图3所示,该能够自适应播放的YUV文件的播放方法包括以下步骤:
在步骤301中,在已存储嵌入水印信息的YUV帧数据YUV文件中,顺序读取已嵌入水印信息的YUV帧数据。
此后进入步骤302,从YUV文件的YUV帧数据中提取水印信息。
在上述已顺序读取的已嵌入水印信息的YUV帧数据中,依次采集帧中Y分量的八个字节最低位信息,同时根据根据水印信息的长度小于或等于帧宽和帧高的乘积除以8,将采集到的LSB组合成水印信息。
这样在不改变原有YUV显示效果及文件大小的情况下,实现YUV文件的自适应播放,在单个文件中支持多分辨率、不同帧率的变换播放。避免了传统YUV播放器在每次播放YUV文件时候需要输入一大堆参数的繁琐操作,大大提高了播放时的系统实时响应速度。
此后进入步骤303,根据标识符长度,在水印信息数据帧中搜索标识符水印信息。
此外,可以理解,如果本步骤中搜索YUV水印信息数据帧时,两种标识符都没有搜索到,则说本YUV文件是普通的文件,不是通过水印方式携带播放参数的,按照传统方式(例如预先规定的播放参数)进行YUV文件正常播放。
此后进入步骤304,对获取的标识符水印信息进行标识符判别,得到不同的第一标识符和第二标识符。如果某帧的水印中包含第一标识符,则表示该帧为首帧。如果某帧的水印中包含第二标识符,则表示该帧为后续帧。
此后进入步骤305,根据第一标识符如“start”,则进行水印信息解析,提取并更新视频播放参数信息,解析宽高等,如果是第二标识符如“same”可以略过。
此后进入步骤306,通过获取的播放参数信息来控制YUV文件的播放。
如果当前帧为首帧,则根据从该帧的水印信息中获取的播放参数信息播放该帧。如果当前帧为后续帧,则根据从上一个(或者说,此帧之前最近的一个)首帧中获取的播放参数信息播放该帧。
YUV文件中的嵌入水印信息的YUV数据帧是按原视频的显示顺序在文件中的顺序堆积而形成的,则对已嵌入水印信息的YUV帧数据按原先的顺序读取。
此后进入步骤307,判断YUV文件是否播放完毕。
若否,则返回步骤306;若是,则结束本流程。
在本发明的另一个实例中,在进入步骤301前,可以设置一个条件判断分支,用于判断待播放的YUV数据帧是否含有水印信息,若是,则进入步骤301,若否,则按照传统方式(例如预先规定的播放参数)进行YUV文件正常播放。
由于水印数据量很小,在无须对YUV文件全帧数据的每个字节进行解析的情况下,其解析速度很快,从而不会影响系统播放效率。
当YUV文件数据,由于某种原因遭到破坏,则可以通过搜索对直接在保存YUV文件中的水印信息中第一和第二标识符进行帧定位,避免了播放参数信息的遗忘和丢失,且实现了与传统播放模式的兼容。
根据水印信息获取播放参数信息进而进行多分辨率YUV文件的播放控制,实现了对单分辨率YUV文件原有帧率的播放且与现有播放方式兼容,同时具有一定的抗裁剪性,
同时,在不改变原有YUV显示效果及文件大小的情况下,实现YUV文件的自适应、多分辨率和变帧率的变换播放,避免了传统YUV播放器在每次播放YUV文件时候需要输入一大堆参数的繁琐操作,实现变帧率YUV文件的自适应播放。
作为本实施方式的一个优选例,图4是一种能够自适应播放的YUV文件的播放方法。
具体地说:
在步骤401中,根据水印信息长度设置水印搜索最大范围。
此后进入步骤402,读入一段YUV数据。
此后进入步骤403,判断在读入的YUV数据中是否有水印信息。
若是,则进入步骤404;若否,则进入步骤407。按照普通YUV文件进行播放。
在步骤404中,提取水印信息。
此后进入步骤405,根据水印信息获取一帧YUV原始数据。
此后进入步骤406,播放该帧YUV原始数据,此后进入步骤408。
在步骤408中,判断当前播放是否结束。
若否,则返回步骤402,读入一段YUV数据;若否,则结束本流程。
作为本实施方式的优选例,如图5所示,该自适应播放的YUV文件的水印信息嵌入和提取包含以下步骤:
原始YUV文件的实际一帧YUV数据如下:
81 81 85 62 6E 8C 9E A4 70 72 96 B9 82 C2 C4 DF..
…………………………………………………………………
………………………………………………………………….
分别为将水印信息的每个字符ASCII码转换成8位二进制数据。如“start”的s的ASCII码为115,转换成二进制后变为01110011。
存储端:在步骤501中,将原始YUV文件的实际一帧YUV数据中Y分量的八个字节的最低有效位(Least Significant Bit,简称“LSB”)与一个水印信息字节的八位的奇偶性相对应,如嵌入水印信息“start”第一个字母“s”ASCII码值为01110011的水印后,原始YUV文件的实际一帧YUV数据变为如下:
80 81 85 61 6E 8C 9D A3 70 72 96 B9 82 C2 C4 DF..
…………………………………………………………………
………………………………………………………………….
播放端:在步骤502中,读取嵌入水印信息的YUV数据帧的最低位LSB。
此后进入步骤503,将最低位LSB的比特位组合,提取出水印信息“start”的第一个字母“s”。
如图6所示,图6(a)是原始YUV数据帧播放画面,图6(b)是嵌入水印信息之后的YUV数据帧播放画面,通过比较,我们可以发现人根本无法用从视觉角度察觉到嵌入水印的视频图像变化,其原理在于:
根据YUV与RGB转换公式:
Y=0.299R+0.587G+0.114B
U=-0.147R-0.289G+0.436B
V=0.615R-0.515G-0.100B
R=Y+1.14V
G=Y-0.39U-0.58V
B=Y+2.03U
我们可以分析出,当Y分量变化为1时,R、G和B的变化范围都在(1,1)内。
同时由于人根本无法从视觉角度察觉到RGB值小量变化,所以这样的微量变化不影响视频的原始显示质量。
从以上公式看到,我们无法同时取得最大值和最小值,在此进行放大误差进行测试将YUV全部减1后,当采用随机增减1的方法时,可以保持全局亮度的能量平衡,从整体上对水印嵌入进行优化。
在本发明的其他某些实例中,所速YUV文件存储或播放方法,可以是对YUV文件连续批量处理,也可以对YUV文件进行逐帧处理。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable Array Logic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
本发明第三实施方式涉及一种能够自适应播放的YUV文件的存储装置。如图7所示,该能够自适应播放的YUV文件的存储装置包含以下模块:
水印生成模块,用于根据YUV帧的播放参数信息生成水印信息。
水印嵌入模块,用于将所述水印生成模块生成的水印信息嵌入到YUV帧数据中。
帧存储模块,用于将经所述水印嵌入模块处理后,已嵌入水印信息的YUV帧数据存储到YUV文件。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第四实施方式涉及一种能够自适应播放的YUV文件的播放装置。如图8所示,第四实施方式在第三实施方式的基础上进行了改进,主要改进之处在于,增加了以下模块:
参数信息获取模块,用于获取YUV文件中当前YUV输入帧的播放参数信息。
首帧判断模块,用于根据播放参数信息,判断YUV文件中相同序列的YUV数据帧是否为该帧序列的首帧,若是,则标识该帧为首帧,若否,则标识该帧为后续帧。
标识符设置模块,用于分别对首帧和后续帧设置第一和第二标识符。标识符的长度至少为4个字节。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第五实施方式涉及一种能够自适应播放的YUV文件的播放装置。如图9所示,包含以下模块:
水印提取模块,用于从YUV数据帧中提取水印信息;
水印解析模块,用于将所述水印提取模块提取的水印信息解析出播放参数信息;
该能够自适应播放的YUV文件的播放装置水印提取模块还用于根据预先设置的水印信息长度,将获取的已嵌入水印信息的YUV数据帧Y分量的八个字节最低位信息采集组合。
帧播放模块,用于根据所述水印解析模块解析出的播放参数信息,控制YUV文件帧播放。
水印信息的长度小于或等于帧宽和帧高的乘积除以8;
水印信息中包含预先设置的第一或第二标识符,其中第一标识符表示所在的水印信息中包含播放参数信息,第二标识符表示所在的YUV帧的播放参数信息与前一帧的相同;
第一或第二标识符的长度至少为4个字节。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本发明第六实施方式涉及一种能够自适应播放的YUV文件的播放装置。如图10所示,第六实施方式在第五实施方式的基础上进行了改进,主要改进之处在于,增加了以下模块:
YUV帧判别模块,用于判别YUV数据帧是否含有水印信息,若有,则控制水印提取模块和水印解析模块进行水印信息的提取和解析,若没有,则指示帧播放模块正常播放该YUV数据帧。
水印解析模块还包括以下子模块:
标识符搜索子模块,用于根据标识符的长度搜索水印提取模块提取的水印信息中的标识符;
标识符判断子模块,用于判别标识符搜索模块搜索到的标识符的类型;
参数读取子模块,用于从水印信息中读取用于帧播放模块进行帧播放的参数。
标识符搜索子模块在水印信息中搜索到标识符后,由标识符判断子模块判断该标识符的类型,如果判定该标识符为第一标识符,则由参数读取子模块从该水印信息中读取用于帧播放模块进行帧播放的参数。
在本发明的其它实例中,水印解析模块也可以由其它的子模块组成。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
需要说明的是,本发明各装置实施方式中提到的各模块都是逻辑模块,在物理上,一个逻辑模块可以是一个物理模块,也可以是一个物理模块的一部分,还可以以多个物理模块的组合实现,这些逻辑模块本身的物理实现方式并不是最重要的,这些逻辑模块所实现的功能的组合是才解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各装置实施方式并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,这并不表明上述设备实施方式并不存在其它的模块。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。