流媒体编码技术

2024-09-28

流媒体编码技术(共7篇)

流媒体编码技术 篇1

摘要:本文将分层编码技术应用于P2P视频点播中, 能提高整个系统的健壮性, 还可加快接收端对流媒体数据的接收速度, 在固定播放启动时延条件下提高接收端的播放质量。

关键词:p2p,分层编码,流媒体

1、前言

随着IPTV的逐渐升温, 网络视频数据流的传输对新的源编码技术和网络传输算法提出了新的更高的要求。通过护网传送视频数据流的主要问题是包延时的大范围起伏、损耗、流量限制等。因此, 在接收端需要找到一种优化显示质量的方法, 以满足比特率限制和延时限制的要求。这样就要求对数据进行有效的压缩, 某种形式的比特率调节, 弹性容错技术等。比特率调节可用标量编码器采用分层编码技术实现, 译码时以不同的比特率译码, 这样可提供不同质量的图象。一般说来, 视频编码分为非扩展 (unscalable) 性视频编码和扩展 (scalable) 性视频编码两类。

非扩展性视频编码是将完整的视频内容压缩成一个固定码率的比特流 (hit-stream) , 它是面向存储的视频压缩编码技术, 因此不适合用于视频流的网络传输。

扩展性视频编码是将视频内容压缩成多个子比特流 (Substream) , 其中一个比特流作为基本位流, 形成基本层 (Base Layer) 视频数据流, 解码器可以对其进行独立解码, 并产生粗糙质量的视频序列, 而其它的比特流则形成增强层 (Enhancement Layer) 视频数据流, 解码器必须依靠基本位流才能对其进行解码, 解码后的视频质量将大大优于仅依靠基本位流解码的视频质量。因此, 我们又把扩展性视频编码技术称为分层视频编码 (Layered Video Coding) 技术, 通过将视频信息进行分层, 动态调整编码速度, 以适应不同网络环境下网络带宽所发生的变化, 具有网络带宽适应能力, 特别适用于网络传输。在分层视频编码方式下, 如果我们要得到最佳的视频解码效果, 必须对所有比特流 (基本层和增强层) 进行解码还原, 当视频信息在网络传输过程中出现比特流丢失, 那么解码效果将视比特流的丢失程度, 引起相应的视频质量劣化。

2、流媒体传输技术

现有的P2P流媒体传输系统很多是基于分层编码实现的, 其系统主要由两个模块组成:一是资源发现模块;二是资源传输模块。

2.1 资源发现模块

资源发现模块的主要任务是协助新加入节点找到自己感兴趣的流媒体文件的所在位置。首先简要介绍一下P2P流媒体的节点接入机制。每一个节点有一个在整个系统的全局唯一的标识, 比如IP地址, 超级节点维护一个系统中其他节点的标识缓存。当新节点A接入时, 首先通过资源查找获得拥有所需文件的伙伴节点列表。对于列表中的节点, A通过TCP的“三次握手”的机制与对方建立连接, 并测试和对方的可用带宽, A从所有的备选节点中选择合适的节点作为自己的上游节点, 则此建立连接的过程才得以完成。新节点获得稳定的伙伴节点, 开始进行流媒体下载缓冲, 进入稳定的播放阶段。整个节点接入流程如图2-1所示。

从目前的研究现状来看, P2P流媒体的资源查找主要存在以下3种算法:

第一是集中索引算法 (Central index) 以Na Pster系统为代表。在Napster系统中, 用户都与一个中央服务器相连接, 中央服务器上保存了共享文件的索引。由中央服务器对收到的用户请求进行匹配查找, 直到找到保存了所需文件的目的用户。然后, 由发起请求的用户与目的用户直接进行文件交换。这种算法的不足在于依赖一个集中式的结构, 将会影响系统的可扩展性。

第二是洪水消息算法 (Flooded requests) 代表系统为Gnutella。每一个用户消息都将被广播给与该用户直接相连的若干其他用户, 这些用户收到消息后, 也同样地将消息广播给各自连接的用户, 以此类推, 直到请求被应答。这种算法存在的不足在于需要较大的网络带宽, 因此也会影响可扩展性。

第三是文件路由算法 (Document routing) 代表系统为Freenet。算法的特点是采用基于哈希函数的映射。系统中的每一个用户都有一个随机的ID序列号, 系统中的每一个文件也有一个ID序列号, 这个序列号是根据文件的内容和他的名字, 经过哈希函数映射得来的。文件发布时, 每一个用户都把文件转发到拥有与文件的ID最相近的ID值的用户上去, 直到最接近文件ID的用户就是该用户本身。转发过程中每经过的一个用户都将保持该文件的副本。索取文件时, 每个用户都将请求消息转发给一个拥有与所需文件ID最相近的ID的用户, 直到文件或文件的一个拷贝被发现为止。这种算法的优势在于可扩展性较好, 不足在于它可能导致整个网络分裂成若干彼此不相连的子网络, 形成所谓的孤岛, 他的查询也要比洪水消息算法等麻烦些。

2.2 资源传输模块

资源传输模块的任务是完成资源传输中的任务分配, 任务调度以及任务控制等内容。在P2P文件传输系统中, 流媒体文件被以GOP组为单位划分成数据块, 文件块中的数据又被分为多个数据包, 并且使用可用度向量的概念来标识一个节点拥有数据块中的哪些数据包。P2P流媒体传输系统的资源传输模块分为请求数据, 发送数据和接收数据三个相关联的部分。发送部分相对简单, 如图2-2所示, 首先判断接收到的请求的类型:

1.如果是连接请求, 则检查已经建立的连接的数目是否达到最大连接数如果已经达到, 则发送拒绝消息, 如果没有达到, 则发送接受连接消息。

2.如果是数据请求, 则从本地存储的数据中找出对应的数据发送给其它节点。如果没有找到, 则发送未找到消息。

接收部分的主要任务是接收到数据后, 按照一定的结构将数据存放在本地, 并且修改本地的数据的可用度向量。如果接收到重复数据, 则直接丢弃。请求数据部分首先向发送节点询问当前期望传输文件块的可用度向量, 得到以后, 根据请求节点与其他提供资源节点之间的带宽情况, 计算出对应于每个提供资源节点的队列长度, 以及将然后再将欲发送的请求放入各自的队列中, 各队列独立的向对应节点发送请求。当一个时间段T后还未收到某节点A发送的数据包, 则认为A已经离开系统, 并将其余下的任务按照一定算法分配给剩余的节点。如果一段时间后又收到A发送的数据包, 则重新为A建立请求队列, 并填充数据请求。

3、结束语

目前, Internet网络非常成功的实现了提供“尽力而为”的数据业务服务, 但是对于提供实时视频通信服务还面临着严峻的挑战, 必须能根据网络带宽、延时、抖动等综合因素动态地调整视频流量才能保证实时视频业务的有效传输。分层扩展视频编码技术有效地为我们提供了一种在异构网络环境中, 在出现网络拥塞的情况下, 动态实现视频图像有效编码与传输的解决途径。

参考文献

[1]龚海刚, 刘明, 谢立.2004.P2P流媒体传输的研究进展综述, 计算机科学.2009年第3期

[2]郭东, 郑烇, 殷保群, 王嵩.2008.基于P2P媒体内容分发网络中分布式节点的设计和实现.电信科学2008年第8期.

[3]侯成宝, 宋建新.2008 P2P与CDN结合实现IPTV业务.信息技术.2008年第3期.

流媒体编码技术 篇2

关键词:网络编码:多媒体传输,单播,组播

随着网络的不断普及, 海量的信息交换使得传输系统受到了前所未有的严峻考验, 很多专家学者都在寻找一种更好的通信模式, 来改变传统的多媒体传输技术所存在的缺陷。网络编码作为一种新型的通信概念, 不仅能够较好地增加单次传输的信息量, 还很好地均衡网络负载, 提升网络传输系统的整体性能。同时又降低了制造和使用的成本, 有利于大范围推广。但是网络编码也存在一些不足, 例如端到端的传输会产生延迟, 每个节点的计算负担加重等。因而, 如何避免这些缺陷, 正确发挥充分网络编码的功能, 是当前研究的主要课题。

1 网络编码概念

网络编码的出现, 改变了人们对于传统网络通信技术的认识。一般的通信都是通过存储转发式路由器来完成传输的, 中间节点并不会对数据进行任何的加工或者处理。然而网络编码却颠覆了这一逻辑, 使网络通信出现了重大的突破。网络编码的概念是允许网络中的各个节点对接收到的数据进行处理然后再转发出去, 这样每个中间节点都成为一个小型的数据编码器。这种改变为实现网络的全覆盖提供了坚实的实践基础, 随着网络的不断延伸, 节点的数量也在不断增长, 大大减轻了传输过程中数量巨大的数据信息给网络带来的压力。

2 网络编码的优势与缺陷

尽管在当前网络编码的应用还没有路由技术那样广泛, 但是其优势是十分明显的。网络编码能够极大地提高网络数据吞吐量, 并有效提高网络带宽的利用率, 同时还能降低无线网络节点的能量消耗。网络编码具有较强的数据抗性, 能够在一定程度上降低由于传输失败给数据带来的损失。当网络覆盖到更广大的区域时, 很容易出现网络负载过大。使用网络编码就能够很好地将负载均衡到每个节点上, 解决网络拥堵问题。

网络编码的缺陷也十分突出。例如当两个节点之间进行数据传输的时候, 会不可抗拒地出现延迟, 这是由于节点的计算负担较大, 影响了传输速度。同时节点还担负了存储的任务, 逐渐增加的缓存数量会随着网络规模的扩大进一步加重数据的延迟。每个节点由于其处理能力的局限性, 不能对数据进行有针对性的分类, 当重要数据经过网络编码之后生成的数据包, 需要重新进行识别和筛选。因此, 在当前网络特别是无线环境中应用网络编码技术, 还需要进一步完善技术上的缺陷, 在各方面之间取得平衡。

3 网络编码在多媒体系统中的应用

3.1 多媒体单播

在网络编码环境系统, 能够有效提升网络单播的流媒体服务质量。由于网络编码具有的强大数据吞吐能力, 使得网络中的每个节点都能够保存其通信范围内某一段时间的数据包。同时与周围节点进行数据和缓存信息的交换。当多个单播流经过同一个节点时, 节点能够选择最合适的数据包进行编码, 然后通过数据信息的交换, 使得周围的节点也获得该数据包;一旦单播流经过其他邻近的节点, 这些节点能够迅速对数据进行编码, 缓解了延迟的产生。其原理就是当节点在对单播流进行网络编码时, 不仅涉及到数据包与邻近节点的交换, 还包括了对于重要数据的分类, 例如截止时间, 数据信息内容等;当下一次同类型的重要数据再次经过节点时, 能够自动获得优先解码和编码, 提高网络数据传输的稳定性, 使网络编码在快速和可靠之间取得了均衡。

3.2 多媒体组播

网络编码具有提高网络数据吞吐量的特点, 并且提高了数据传输的可靠性, 因此将其应用到组播当中, 能够更加充分地利用网络带宽资源。有相当一部分的学者对如何在流媒体组播中应用网络编码具有很大的兴趣, 因为一旦成功, 流媒体的数据存储和传播将迈上一个新的台阶。目前来说, 网络编码应用于流媒体组播的问题有两个, 带宽过低和较高的误码率。可以在网络编码的基础上, 通过对分层视频进行优先级分类, 利用分布式优化算法, 在每个节点上尽量扩大可用带宽, 建立起一个多路径路由, 在最大范围内接收尽可能多的编码包, 使数据传输的数量和质量得到保证, 即带宽提升。还可以建立一种组播方案, 它在网络编码的环境下, 利用节点移动性预测的上游节点来构建拥有多个节点的多树组播路由。通过此路由进行网络编码组播, 能够保证节点在高速移动的情形下仍能实现有效的网络组播, 即降低了误码率。

3.3 多媒体广播

广播是组播的一种特殊形式, 但是广播具有更好的传输特性, 更加易于在网络特别是无线网络中进行实践。随着无线网络的不断普及, 在网络编码环境下优化无线网络广播的服务质量, 是当前比较热门的研究课题。可以利用节点的反馈信息来获知不同终端丢失的数据包类型, 然后将数据包的线性编码组合进行重传。这样即使无法马上找出是哪一个终端出了问题导致数据丢失, 也能够有效避免重传数据包的时候再次丢失。每个数据包的线性编码都可以恢复若干个数据包, 这样不仅提高了网络的鲁棒性, 也使网络的带宽资源得到了更加有效的利用。

4 结语

将网络编码应用到多媒体传输系统中, 需要理论的不断完善和实际应用的不断尝试。随着网络编码环境下的多媒体技术研究的全面展开, 将会有更多的多媒体传输产业从中受益。在不久的将来, 网络编码将成为改变多媒体传输系统的重要技术, 值得进行大力推广。

参考文献

流媒体编码技术 篇3

1.新标准的制定

2012年8月,爱立信公司推出了首款H.265编解码器,而在仅仅六个月之后,国际电联(ITU)就正式批准通过了HEVC/H.265标准,标准全称为高效视频编码(High Efficiency Video Coding),相较于之前的H.264标准有了相当大的改善,中国华为公司拥有最多的核心专利,是该标准的主导者。H.265旨在在有限带宽下传输更高质量的网络视频,仅需原先的一半带宽即可播放相同质量的视频。这也意味着,大众化的智能手机、平板机等移动设备将能够直接在线播放1080p的全高清视频。H.265标准也同时支持4K(4096×2160)和8K (8192×4320)超高清视频。可以说,H.265标准让网络视频跟上了显示屏“高分辨率化”的脚步。

H.264统治了过去的五年,而未来的五年甚至十年H.265很可能将会成为网络化的新媒体技术应用的主流。

2.传输码率

H.263可以2Mbps~4Mbps的传输速度实现标准清晰度广播级数字电视(符合CCIR601、CCIR656标准要求的720×576),;而H.264由于算法优化,可以低于2Mbps的速度实现标清数字图像传送;H.265则可实现低于1.5Mbps的传输带宽下,实现1080p全高清视频传输。

除了在编解码效率上的提升外,在对网络的适应性方面H.265也有显著提升,可很好运行在Internet等复杂的网络条件下。

3.性能提升

在运动预测方面,下一代“算法”将不再沿袭“宏块”的画面分割方法,而可能采用面向“对象”的方法,直接辨别画面中的运动主体。在变换方面,下一代算法可能不再沿袭基于傅立叶变换的算法族,在很多文章讨论中提到所谓的“超完备变换”,主要特点是:其MxN的变换矩阵中,M大于N,甚至远大于N,变换后得到的向量虽然比较大,但其中的0元素很多,经过后面的熵编码压缩后,就能得到压缩率较高的信息流。

关于运算量,H.264的压缩效率比MPEG-2提高了1倍多,其代价是计算量提高了至少4倍,导致高清编码需要100GOPS的峰值计算能力。尽管如此,仍有可能使用2013年的主流IC工艺和普通设计技术,设计出达到上述能力的专用硬件电路,且使其批量生产成本维持在原有水平。5年(或许更久)以后,新的技术被接受为标准,其压缩效率应该比H.264至少提高1倍,估计对于计算量的需求仍然会增加4倍以上。随着半导体技术的快速进步,相信届时实现新技术的专用芯片的批量生产成本应该不会有显著提高。因此,500GOPS,或许是新一代技术对于计算能力需求上限。

注:1GOPS (Giga Operations Per Second):每秒十亿次运算数,十亿次运算/秒。

4.新标准的优势

H.265/HEVC的编码架构大致与H.264/AVC的架构相似,主要也包含帧内预测(intra prediction)、帧间预测(inter prediction)、转换(transform)、量化(quantization)、去区块滤波器(deblocking filter)、熵编码(entropy coding)等模块。但在HEVC编码架构中,整体被分为了三个基本单位,分别是:编码单位(Coding unit,CU)、预测单位(Predict unit,PU)和转换单位(Transform unit,TU)。

与H.264/AVC相比,H.265/HEVC提供了更多不同的工具来降低码率,以编码单位来说,H.264中每个宏块(macroblock/MB)大小都是固定的16×16像素,而H.265的编码单位可以选择从最小的8×8到最大的64×64。这样就相当于对图像进行了有重点的编码,从而降低了整体的码率,编码效率就相应提高了,如图2所示。

同时,H.265的帧内预测模式支持33种方向(H.264只支持8种),并且提供了更好的运动补偿处理和矢量预测方法。反复的质量比较测试已经表明,在相同的图像质量下,相比于H.264,通过H.265编码的视频大小将减少大约39%~44%。由于质量控制的测定方法不同,这个数据也会有相应的变化。通过主观视觉测试得出的数据显示,在码率减少51%~74%的情况下,H.265编码视频的质量还能与H.264编码视频近似甚至更好,其本质上说是比预期的信噪比(PSNR)要好。

这些主观视觉测试的评判标准覆盖了许多学科,包括心理学和人眼视觉特性等,视频样本非常广泛,虽然它们不能作为最终结论,但这也是非常鼓舞人心的结果。H.264与H.265编码视频的主观视觉测试对比,我们可以看到后者的码率比前者大大减少了。

截止2013年的HEVC标准共有三种模式:Main、Main 10、Main Still Picture。Main模式支持8bit色深(即红绿蓝三色各有256个色度,共1670万色,即256×256×256),Main10模式支持10bit色深,将会用于超高清电视(UHDTV)上。前两者都将色度采样格式限制为4:2:0。预期在2014年后对标准有所扩展,将会支持4:2:2和4:4:4采样格式(即提供了更高的色彩还原度)和多视图编码(例如3D立体视频编码)。

事实上,H.265和H.264标准在各种功能上有一些重叠,例如,H.264标准中的Hi10P部分就支持10bit色深的视频。另一个H.264的部分(Hi444PP)还可以支持4:4:4色度抽样和14bit色深。在这种情况下,H.265和H.264的区别就体现在前者可以使用更少的带宽来提供同样的功能,其代价就是设备计算能力:H.265编码的视频需要更多的计算能力来解码。

美国博通公司已经在2013年1月初的CES大展上发布了一款支持H.265解码的Brahma BCM7445芯片,它是一个采用28纳米工艺的四核处理器,可以同时转码四个1080P视频数据流,或解析分辨率为4096×2160的H.265编码超高清视频。

截止到2013年,有线电视和数字电视广播仍旧主要采用MPEG-2标准。H.265标准的出台最终可以说服广播电视公司放弃垂垂老矣的MPEG-2,因为同样的内容,H.265可以减少70%~80%的带宽消耗。这就可以在现有带宽条件下轻松支持全高清1080p广播。但是另一方面,电视广播公司又很少有想要创新的理由,因为大多数有线电视公司在他们的目标市场中面临的竞争实在是有限。出于节省带宽的目的,反而是卫星电视公司可能将会率先采用H.265标准。

从长远角度看,H.265标准将会成为超高清电视(UHDTV)的4K和8K分辨率的选择,但这也会带来其他问题.比如2013年还极少有原生4K分辨率的视频内容。H.265标准的完成意味着内容拥有者在2013年已经有了一个对应的理论标准,但是在2013年还没有一个统一的方式来传送内容。

蓝光光盘协会(The Blu-ray Disc Association)正在研究在蓝光光盘标准中支持4K分辨率视频的方法,但是并没那么简单。理论上H.264在扩展后就可以拥有这个功能,但码率问题又会浮出水面。一个H.264编码的4K蓝光电影需要的存储空间远大于相同内容的H.265版本,其大小可高达100G以上,而现有的播放器也不支持100GB~128GB的高容量可刻录可擦写光盘(BDXL)。

到目前为止,仍然没有一个妥善解决方案,可以将4K分辨率视频加入已有的蓝光标准中并且不破坏其兼容性。虽然更新到H.265标准并不需要对光盘制造工艺进行改进,但却需要制造全新的播放器才能将新的蓝光光盘播放出来,虽然截至2013年的有些播放器可以播放高密度光盘,但那也需要进行设备检查升级才行。

另一个大问题就是游戏主机对H.265标准的支持。4K分辨率的视频该怎样传送,通过哪些标准进行支持?这仍然还在讨论中。

目前看来,对于H.265/HEVC标准,我们仍需持谨慎乐观态度。但有一点是肯定的:H.265标准在同等的内容质量上会显著减少带宽消耗,有了H.265,高清1080P电视广播和4K视频的网络播放将不再困难,但前提是各大媒体技术巨头能想出办法来传送这些内容。同时,如果移动设备要采用H.265标准,那么其在解码视频时对电量的高消耗也是各大厂商需要解决的问题。

H.265视频编码技术以其高质量低带宽占用的显著优势迅速进入人们的视野,并在互联网应用领域内快速普及。这项技术对广播电视领域有何可用之处,能不能给节目制播领域带来一些新的影响,本文从电视台的一些实际应用场景给予简要论述。

H.265 (HEVC)是ITU-T在H.264基础上发展制定的新一代视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留了原来的某些部分,同时对一些相关的细节加以改进。该技术使用先进的算法用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H.264由于算法优化,已能实现低于1Mbps的速度实现标清(SD)数字图像传送;H.265则可以实现利用1Mbps~2Mbps的传输速度传送720P (分辨率1280×720)普通高清音视频,可以说,H.265就是为普通宽带条件下高清视频应用针对性设计的。

标清(SD)、高清(HD)和4K、8K分辨率超高清(UHD)视频大小对比示意如图4所示。

就在不到两年的时间里,H.265已正式商用,迅雷、PPS、搜狐等互联网视频企业已发布了支持H.265应用的版本,或许用不了多久就能看到支持H.265解码的设备上市了(如机顶盒、智能手机、显卡等)。未来的五年甚至十年,H.265很可能将会成为主流。

二H.265编码技术在视频节目制播领域的应用

低带宽高质量的特性使得H.265能完全取代H.264的应用场合,特别是需要远程传输的应用,以及云视频领域,可以说H.265是互联网上1080P的使者。

H.265性能提升是以技术复杂度的提升为代价的,目前困扰厂商和应用者的H.265的主要问题是编解码的效率,特别是编码的效率非常低下。从解码的角度来说,其参考软件复杂度相对于商用H.264解码器的耗时提高了8~10倍,对CPU提出了更高的要求,但这方面随着硬件水平的提高,以及解码软件算法优化,能降低到复杂度高2倍左右,纯软解码(编辑、播放)不是主要问题。但编码来说,单纯靠软解码估计完全无法满足专业应用(上载、生成、转码),必须通过专用的H.265编码硬件卡来协助,目前很多硬件厂商正在全力以赴,已取得了不少的进展。

1. 节目远程传送

随着我国广播电视事业的不断发展,各电视台外出到国内外、偏远地区采访的记者将会越来越多,异地或远程节目回传是拓展节目制作来源的重要途径之一。特别是对于各大媒体这种担负着国际、国内的新闻报道,甚至于全世界报道的节目制作机构来说,异地节目远程传送用途很广。除了北京总部之外,全国各分支记者站、包括海外记者站,都需要回传素材回台总部,或者从总部下发节目下去。除此之外,对于大型国际国内体育赛事如奥运会、全运会等诸多异地大型直播活动,这些异地远距离节目通过网络文件化传送的应用场合,H.265技术能够比以前更好地满足这个需求。

当地采编的节目,通过非编系统可以生成码率较低的H.265格式文件,它们适用于传输,在同等质量下通过互联网或者专线传送,可比采用H.264、MPEG-2 IBP减少传输时间。H.265格式节目在非编时间线上可以直接编辑或者混编,也同时省去了素材导入时转码的时间消耗,提高了制作效率。

在大型体育运动会现场制作应用中,有时候还会有远程直接节目浏览、打点、下载等操作,以往用到WMV、MPEG-4等格式,因远程浏览的视频质量一般,另外还存在卡顿、缓冲延迟大等现象,如果采用最新的H.265格式,在同样带宽下可以获得更好的图像质量,其次操作响应的体验度也会有所提升,甚至后场可以直接对千里之外前场的素材进行打点回传。另外.H.265也支持在手机iOS和安卓系统上的应用开发,使得手机、平板上回看、审片、上传都成为可能。

2. 素材交换

与节目远程传送相类似,总部与各地方台也经常互换节目,素材或节目交换平台通过公网或者专用网络以文件形式进行文稿、视音频、图片等文件的传输和交换。超过8Mbps码率的H.265格式可以作为交易素材之间的互换格式,其视频质量将等同于XDCAM和AVC-Intro,并且容量占用更小。

就主流媒体实际业务,以下类型的对象都可以采用这种形式来实现素材交换;

●有网络条件的中心记者站;

●有网络条件的新闻移动外场系统;

●有网络条件的各地分支记者站;

●外出采访记者;

●地方台;

●国内外权威通讯社;

●合作媒体;

●亚广联。

3. 代理码率节目编辑

在电视台节目编辑网络系统里,虽然现在的网络共享在线存储容量越来越大,万兆网络也已投入实用,但还是无法完全满足高清素材的高码率以及多层编辑对存储和网络带宽的压力。为了增加可编辑的站点,代理码率是最常用的网络系统解决方案。

代理码率目前常采用H.264或MPEG-4的格式,画面幅面较小,视频码率通常在1Mbps以下,虽然现在“高码率+代理码率”的双码率能够实现帧精确的编辑,但代理码率站点最大的问题是无法输出到外接显示器或监视器,或者是能输出但画质不高,监看质量不好。如果将低码率换作H.265,将在同样的1Mbps码率下获得一倍以上的分辨率和画质。现在的计算机硬件能力都很强大,采用H.265所带来的额外的运算开销完全可以被弥补掉,计算机主机本身主板集成或显卡上的HDMI的直通输出也有利于画面直接输出,而不必再将节目转换成基带信号输出来监看。H.265比H.264的编码复杂度要高一些,这些算法上的优化,相信各大非编生产厂商自身能够解决。

4.“云电视台”概念

从全球范围来看,网络技术的发展以及数字化媒体越来越广泛的应用,让媒体传播的方式面临重大革新。随着云计算、云服务的推广,媒体机构对于低成本、高效率、高质量的媒体处理服务的需求越来越迫切。在新媒体技术应用及三网融合的大背景下,云的概念也已在广电行业内随处可见,传统广电和云的最大隔阂就是视频质量与带宽之间的这对矛盾!

基于互联网的云编辑已成为现实,目前已有利用H.264编码的流媒体来作为编辑对象,流媒体服务器和素材运行在云端,云编辑器访问的不是本地或者本地网络的素材,而是直接编辑云上的,但由于网络带宽的限制,现在通常只能做到1/9的FHD幅面(640×360),1Mbps左右的码率来进行编辑,否则卡、顿现象较为明显。如果采用H.265编码技术,在同样的码率下可以增大画面幅面,或者是相同幅面下提高码率,都将提升云编辑的视频质量。

除了云编辑外,云电视台还有很多其他的环节可以用到这种新编码技术。例如图7里的云平台上的云存储,可大量采用H.265格式作为云上视频主格式,云上的合成渲染、转码、转场识别、挑选等常用媒体处理都可作用于此格式上。在云服务层面,云存储服务、视频门户服务、云生产服务、云媒资服务、资料编目服务、UGC内容服务也都是直接采用H.265这种新一代编码格式的。

5.新媒体

在OTT新媒体的不断发展以及广电拥抱OTT的现状之下,逐步整合的新媒体与广电OTT迅速成长壮大。伴随着传统广电向DVB+OTT的转型,面向高效视频压缩技术的需求越来越迫切。在当前宽带运营商的流量计费模式下,新媒体在带宽流量上的开销直接对运营成本起着决定性的作用。据统计,国内目前根据不同网站视频占有其网站成分的不同比重,网络带宽流量分别占有整个视频新媒体平台运营成本的40%~70%,并且随着4K电视的全面进入家庭,高清机顶盒、网络盒子大行其道,高清已经以不可阻挡的势头进入寻常百姓家,谁拥有有限带宽下的视频质量和流畅度,谁就拥有了用户。因此,H.265无疑是解开目前视频运营商带宽成本难题的一把钥匙,全方位采用H.265技术意味着带宽成本的大幅度降低,无论对于向互联网进发的传统广电还是视频新媒体应用都有着巨大的意义。

三结束语

本文仅就H.265这种新编码技术的主要技术特点来思考在广电业务领域内,特别是在电视节目制播当中涉及新媒体技术应用的基本设想,真正推行和落地还需要行业内各大厂商的共同努力,将设想变为现实,在整个广播电视领域的新媒体技术应用与传统系统相融合发展的今天,形成创造更高质量的电视节目和更优应用体验的动力。

流媒体编码技术 篇4

关键词:DirectShow,多语言,AMR,DLL,音频,编码,通用

1 问题提出

在Windows系列操作系统上开发音视频处理程序, 必选Direct Show框架——它是Microsoft公司专门为Windows上进行音视频程序开发而设计出的一套技术框架。它与MFC等框架是相互独立的。换句话说, 如果要进行音视频处理程序开发, 那么就必须要重新学习一套新的技术框架。

而且Direct Show框架主要是为C++程序员设计的, 它其中大量需要指针支持。虽然有些语言也能使用, 但是有很多不便和限制。例如VB也能使用它, 但是只能使用其一小部分简单的接口功能, C语言也能调用它, 但是Direct Show的调用需要类概念的支持, 而C语言是面向过程的, 没有类概念, 它只能通过很复杂的转换才能完成使用, C#本身是不提倡支持指针的。总之Direct Show就是为C++量身定制的。

基于上述两点, 一些难题被提出来了:

1.如何能让不懂Direct Show框架的程序员也能方便的使用它带来的功效呢?

2.当一个不被Direct Show支持的语言工程中却要用到音视频处理, 怎么办呢?不可能推翻以前的工程而重新改用C++来实现吧, 那代价太高了。

2 解决方案

为了使读者能更好的理解, 本文中以制作基于Direct Show的AMR编码的DLL为例, 先对方案进行整体概述, 然后再进行深入剖析。

2.1 整体概述

为解决前面提出的一些问题, 我们把需要Direct Show技术的代码部分用C++语言封装在DLL中;并在DLL上提供一些简单的接口供外调用。DLL是被各种编程语言广泛支持的。这样就能达到C++或其他编程语言程序员对它的简单使用。

该DLL具有的功能:外部调用者通过DLL接口函数设置编码要求, 然后把原始PCM流式数据实时传入DLL, 其内部将会利用Direct Show技术把流式数据实时编码为AMR流式数据, 最后抛出给调用者。

该DLL中包含了1个Filter Graph和3个Filter (Filter-A, Filter-B, Filter-C) 。

Filter-A是个Source Filter, 它有一个Output Pin, 负责接收PCM流式数据、把数据推向下游。

Filter-B是个Transform Filter, 它有一个Input Pin和一个Output Pin, 负责接收上游数据、编码数据、向下游传递数据。

Filter-C是个Renderer Filter, 它有一个Input Pin, 它负责接收AMR数据、把数据向外抛。

数据流动图见图1。

2.2 深入剖析

为了深刻的理解这个方案, 首先需要知道Filter以及Filter之间的连接, 还有Graph中的数据流动的基本知识。Filter是一种COM组件, 它是组成Graph的基本单元, 只有组成一个Graph后, 所有功能才能发挥出来, 单个的Filter不能运行。而它们之间的连接是通过Pin的连接来完成的。Pin也是一种COM组件, 它通过实现一些Direct Show的标准Interface来完成Pin之间的连接。一般连接都要经过媒体协商, 即双方都要支持对方所推荐的媒体类型, 才能达成连接。例如, Pin-A支持PCM格式, 如果Pin-B1不支持PCM格式, 那么它们就不能连接成功。连接的方向都是由上游的Output Pin到下游的Input Pin。Source Filter一般只有Output Pin, Transform Filter会有Input Pin和Output Pin, Renderer Filter只有Input Pin。一个类要想成为Filter或Pin, 那么它除了要实现COM的一些规范外还要实现Direct Show的一些规范。当然这些规范都可以通过继承Direct Show提供的基础类来获得。但是只有深入了解这些规范, 才能实现定制功能。Graph之间的数据流动是通过各个已连接的Pin来完成的。数据流动会在一个独立的线程中完成, 这个线程由Direct Show基础类来实现和维护。传输的数据会被封装在一个Sample里面, 它是工具类CMedia Sample的实例, 该类在Direct Show里专门作为数据传输的载体。其实Direct Show中提供了不少现成的Source Filter和Renderer Filter, 但是他们都只适用一般情况。例如Source Filter只能从文件、因特网、或者计算机里的采集卡、数字摄像机等获取数据, Renderer Filter只能将数据送给声卡、显卡等。而我们现在的需求是从调用者的程序里获取数据, 再将数据抛向调用者的程序。所以必须定制这些Filter。

下面详细剖析本方案中各个Filter、Pin和其它方面的实现要点。

Filter-A是一个Source Filter, 它继承了CSource类。CSource类是Direct Show提供的一个基础类。它能使其派生类具有一些基本的Source Filter的特性。其实Filter-A实现很简单, 因为它把大部分主要功能委托给了它的Output Pin (Pin-A) 来完成。

Pin-A继承了CSource Stream类。后者是Direct Show提供的一个基础类。通过继承它获得一些Output Pin的基础特性及一种推送数据的能力, 它提供了一个用于推送数据的线程。本方案中此派生类必须要重写CSource Stream类的如下成员方法:Get Media Type、Decide Buffer Size、Fill Buffer、Active、Inactive。前面3个方法服务于跟下游Input Pin进行连接和数据传递;后面2个方法用于响应整个Graph的状态变换, 如开始、暂停、停止。在Pin进行连接时, 下游PinB1会调用Pin-A的Get Media Type函数来获知Pin-A所支持的媒体格式, 只有Pin-B1与Pin-A所支持的媒体格式相同, 连接才有可能会成功;如果不同, Pin-B1会拒绝连接。在本例中输入的是PCM流式数据, 所用媒体格式如图2所示。

图2中CMedia Type类是Direct Show提供的一个工具类, 用于对媒体格式进行描述。DecideBufferSize方法决定了每次传递数据的内存块大小。FillBuffer方法承担了填充数据的责任。DirectShow框架会把Fill Buffer方法中填充的数据传递至Pin-B1。Active方法通知Pin-A当前Filter-A进入了活动状态, 如果上下游的Pin都连接成功了, 那么意味着数据将开始流动。Inactive方法通知Pin-A当前Filter-A退出了活动状态, 如果数据已经正在流动, 那么会被停止。正如上所述, Pin-A完成了将PCM数据推向下游Filter (Filter-B) 的工作。

Filter-B是一个Transform Filter, 更确切一点的说, 它是一个Encoder Filter。它完成了音频数据的编码工作。它继承了CTransform Filter类, 此类是Direct Show提供的基础类。它使用CTransform Input Pin类作为Input Pin (Pin-B1) 并且使用CTransform Output Pin类作为Output Pin (Pin-B2) , 这两个都是基础类。通常你不需要重写它们, 因为它们把大部分功能都委托到了CTransform Filter类, 你需要做的就是重写CTransform Filter类的成员函数来完成定制功能。针对于本方案, 你需要重写如下成员方法:Check Input Type、CheckTransform、DecideBufferSize、GetMediaType、Set Media Type、BreakConnect、Receive。下面逐个剖析。Check Input Type负责检查Pin-A提供的媒体类型是否是可以接受的, 如果不能接受, 连接将会失败。CheckTransform检查Pin-B1与Pin-B2的媒体类型是否都是我们想要的, 如果不是, 连接将失败。DecideBufferSize方法决定了每次向下传递数据的内存块大小。GetMediaType方法与Pin-A中的描述相似, 但它提供的媒体格式不同, 如图3所示。

当Pin连接已经确定了使用什么媒体格式后, Set Media Type方法会被调用。当Pin之间的连接断开后, Break Connect方法会被调用。Receive方法接收每个Pin-A传送过来的数据, 在此函数中你可以对数据进行编码转换, 然后调用Pin-B2的Deliver方法把编码后的数据传给Pin-C。

Filter-C是一个Renderer Filter, 它继承自CBase Filter类。后者是一个Direct Show提供的基础类, 它实现了一些Filter的基本特性。Filter-C很简单, 它把复杂功能都委托给Pin-C。

Pin-C是一个Input Pin, 继承自CRendered Input Pni类, 负责AMR数据的接收和抛出。CRendered Input Pni类是一个基础类, 当一个Renderer Filter不继承自CBase Renderer类时应使用它;否则应使用CRenderer Input Pni类, 这个类把大部分操作委托到CBase Renderer类。然而本方案中继承自CBase Renderer类不太合适。Pin-C应重写如下方法Check Media Type、Receive、End Of Stream、Inactive、Active。Check Media Type方法负责检查连接时的媒体类型, 如媒体类型不匹配可拒绝Filter的连接。Receive函数负责接收AMR数据, 当有数据到来时, 上游Filter会调用本函数;我们可把接收到的数据抛出。当上游再也没有数据向下传输时, 就会调用End Of Stream函数。Inactive通知我们, 所有者Filter转到了停止或暂停状态;Active被调用时, 就意味着Filter进入了运行状态。

上面对各个Filter和Pin都进行了一些剖析, 可以看到它们都继承自不同的Direct Show基础类。而这些基础类, 实现了大量的标准Interface, 正是通过这些Interface, 将我们的代码融入了Direct Show框架。其实上述的方法都不是由我们自己调用的, 因为他们符合标准Interface, 所有框架会调用它们, 我们要做的就是在方法体内实现我们的定制功能。通过它们我们就能完成Filter之间的连接, 以及数据的传输。然而这些都是发生在Graph里面的, 为了实现Graph与DLL外部调用者进行数据交换, 我们还需要自定义一些Interface。

为了外部能将PCM数据传入Pin-A, 我们要在Pin-A上实现一个自定义Interface, 后者至少要提供一个传入数据方法、一个数据插入完毕通知方法。因为这个DLL是用于流式实时编码的, 所以Graph不知道输入数据什么时候结束 (不像文件可以判断文件尾) , 所以必须要调用者通知插入结束。

为了外部能配置转换参数, Filter-B应该实现一个自定义Interface, 后者至少要提供一个方法用于设置bps。

为了Pin-C能将AMR数据抛出, 它应该实现一个自定义Interface, 至少提供一个用于数据抛出的方法。

所有的Filter都将由Graph集中控制管理, 因而一个Graph的控制类是必须的。这个类不需继承任何父类。它负责创建一个Graph, 将各Filter的加载进去并连接, 还有控制Graph的运行、停止等的状态, 并把这些控制接口导出到DLL外。值得一提的是, 这个类还必须实时监测转换是否完成, 这需要本类创建一个工作者线程, 获取Graph上一个叫做IMedia Event的Interface, 通过它的Wait For Completion方法可捕获到转换完成的通知, 当然还要通过DLL导出函数将其通知外部调用者。其实触发这个函数的最初源头是调用者, 在调用者通过Pin-A上的自定义接口通知数据插入完毕后, 将在Pin-A的Fil Buffer方法中返回S_FALSE, 并且我们不再接受新的数据, 当Graph中残留的数据都到达Pin-C, 则Pin-C中的End Of Stream方法会被调用, 此方法将发出一个EC_COMPLETE消息, 而IMedia Event负责维护Graph中的消息事件, 通过它就能捕获一切消息。

通过对Direct Show标准Interface的实现, 来完成Graph内部的Filter连接和数据流动, 以及通过自定义的Interface的实现, 来完成Graph与外界的数据交流, 就达到了调用者通过DLL来享受Direct Show带来的便利。

3 总结

流媒体编码技术 篇5

常见的流媒体系统大都采用传统的C/S模式[1],在这些模式中大量的资源集聚在少数昂贵的视频服务器上,随着用户数量的快速增长,网络带宽的消耗相当巨大,又由于服务器输入/输出(I/O)瓶颈的限制,一台服务器只能执行有限的并发流,要解决大量的用户同时收看的问题,不仅需要大量的服务器,还需要极大的网络带宽,因此服务质量得不到保障。

P2P流媒体技术是P2P和流媒体技术的结合,该新兴技术的发展,为解决流媒体服务器的瓶颈问题提供了新的途径,其能够充分利用每个节点的空闲资源分担服务器负载,并且具有良好的扩展性,能支持大数量级的用户同时在线。

怎么能更大程度的降低服务器的负担,并使得请求用户的拒绝率和时延更小是P2P流媒体研究的热门问题。然而P2P的各种调度和搜索策略、媒体流的处理技术以及编解码方法的结合,加上节点随机的加入和退出的不可控性使P2P流媒体终端设计面临着更艰难的挑战。本文针对上述问题,介绍了一种基于多描述编码的集中式的视频点播系统,然后设计了在该系统中运行在PC机上的终端架构,它主要负责节点(PC)和调度中心的通信、媒体流的处理和媒体播放等功能。

1 基于多描述编码(MDC)的P2P视频点播系统网络模型

传统的P2P系统实现方式是用户共享资源,这种共享方式存在一定问题,像影片的版权问题和非法影片问题等,因此,本系统采用集中式的P2P结构,利用节点的缓存能力为后续到达的节点提供服务,系统架构如图1所示。

系统中媒体服务器提供的影片是采用MDC的视频流[2],节点利用自身的缓存资源服务于其它节点。终端PC(节点)在加入P2P网络后,向调度中心查询资源,调度中心按单个流进行查找,如果没有找到其中提供某个视频流的节点,就直接连接到服务器,各个流在到达终端后进行同步、合并解码。

在图中假定媒体文件采用分成两条流,则PC1的两条流来自媒体服务器,PC2的两条流中一条来自PC1,一条来自媒体服务器,PC3的两条流来自PC1和PC2。

2 终端(Client)架构的设计与实现

2.1 Client系统架构

Client终端总体上分为下面几个层:用户界面层、业务层、P2P层和消息收/发层。用户界面层包括播放、暂停/恢复,停止,退出等操作按钮和EPG节目菜单。业务层包括VCR消息控制模块,RTSP模块和媒体处理模块。系统总体架构如图2所示。

2.2 信令处理模块的设计

(1)P2P平台层的设计

P2P平台负责处理标准P2P行为,把业务语言转化成P2P原语,和调度中心进行通信,主要功能是负责终端的网络查询、网络加入、网络退出等。

P2P平台原语包括:

P2P行为原语:join(加入网络),leave(离开网络)。

P2P媒体原语:put(发布资源),get(查询资源),remove(释放资源)。

P2P网络管理原语:query(查询网络)。

P2P平台中封装了find1(首次点播节目),find2(拖拉),publish(发布资源,该节点可以作为数据源为其它节点提供服务),quit(退出网络)等函数供业务层调用调用函数后原语之间的状态转化如图3所示。

(2)RTSP子模块的设计

RTSP[4]主要提供远程控制功能,在视频点播过程中,播放器和服务器之间通过交换RTSP消息来实现资源描述信息的获取、连接的建立、播放控制等功能。RTSP会话建立之后,媒体流在RTP层传输。

RTSP消息分请求和响应两种,在该P2P系统终端上,RTSP使用了最核心的RTSP方法中的SETUP,PLAY,TEARDOWN。由于暂停时,其子节点和父节点都受到影响,所以去掉了其中的PAUSE。当一个节目经MDC分成若干个流时,每个流单独执行SETUP,PLAY,TEARDOWN,RTP进行不同流的同步和合并。

(3)VCR功能的实现

本文要实现的VCR功能包括播放、暂停/恢复、拖拉和停止,没有实现快进、快退的设计。实现信令流程如下:

终端启动:EPG子模块从EPG服务器获得节目菜单。

播放:界面点击Play,VCR消息控制模块调用find1函数,成功后通知RTSP模块进行资源的连接。

暂停:界面点击Pause,VCR消息控制模块通知并等待媒体处理模块缓存是否充满的消息,等待缓存充满后就通知RTSP停止掉流。

恢复:界面点击Resume,VCR消息控制模块调用find2函数,重新查找资源,成功后通知RTSP模块进行资源的连接。

拖拉:界面进行Seek操作,VCR消息控制模块通知并等待媒体处理模块判断拖拉范围是否超出最小缓存范围的消息,如果超出,VCR消息控制模块调用函数没有超出则不需重新查找资源

停止:界面点击Stop,VCR消息控制模块通知RTSP模块停止掉流。

当节点进行VCR操作时,不能再为其子节点提供服务,该节点要通知子节点进行节点的切换,保证子节点可以完成数据源平滑切换,画面不受影响。

2.3 媒体处理模块的设计

由于P2P终端既是Client又是Server,媒体处理模块既要处理接收到的数据流,又要发送为其它节点提供的数据流。这里把媒体处理模块分为流间同步子模块、视频/音频解码子模块、音视频同步子模块、播放子模块等,子模块间数据流程如图4所示。

媒体处理模块接收到多个视频数据流和一个音频数据流,流间同步模块对多描述流进行同步后,交给视频解码模块解码,音视频同步模块同步解码后的音视频数据,播放模块进行播放显示。

具体接收数据处理流程如下:

(1)收到RTSP接收数据流命令,开始接收数据流。

(2)将接收到的多描述视频流写进内存(环形队列结构),进行乱序重排。

(3)将环形队列中的数据(按照流号依次)写入临时公共内存(数组结构),排列好后将临时公共内存指针地址传给视频解码模块。

(4)视频解码模块取走临时公共内存中的数据,通知流间同步子模块,清空临时公共内存,接着重复(3),直至环形队列中数据全部被取过。

(5)音视频同步模块同步解码后的音视频数据送给播放子模块播放,直到播放端的缓冲区中没有数据为止。

(6)收到RTSP停止接收数据流命令,撤销连接。

具体发送数据处理流程如下:

(1)接收到RTSP发送数据流命令。

(2)从内存中(环形队列)将指定流号的数据发送到指定的地址和端口,直到把指定的数据长度发送完毕为止。

(3)当收到本地RTSP停止流发送命令,退出发送数据任务。

3 结束语

本文首先介绍了一种基于多描述编码的集中式P2P视频点播系统,提出了在该系统中终端架构的设计方案,并分别对信令和媒体处理模块的设计进行了详细描述。该终端的设计是运行在PC机上的,运行在不同平台上(像机顶盒、无线的PDA和手机等)的异构终端是进一步研究的工作。本文的终端是不参与路由的,所以P2P模块没有路由功能,路由在调度中心完成,把路由功能加入到P2P模块也是进一步研究的工作

参考文献

[1]沈建强,耿兆丰,邹轩.视频点播系统的设计与实现[J].计算机工程,2006,32(2):209-211.

[2]WANG Y,REIVMAN AR,LNS.Multiple description coding for videodelivery[J].Proceedings of the IEEE,2005,93(1):57-70.

[3]Bin Cheng,Hai Jin,Xiaofei Liao.Supporting VCR Functions in P2PVoD Services Using Ring-Assisted Overlays[C].IEEE InternationalConference,24-28 June 2007.

[4]H Schulzrinne,A Rao,R Lanphier.RealTime Streaming Protocol(RT-SP)[S].RFC2326,1998.

[5]刘锋,彭宇行,李慧霸,等.MagicStream:一个基于P2P技术的视频点播系统[J].计算机工程与科学,2007,29(4).

视频编码技术研究 篇6

近年来,视频编码技术得到了迅速发展和广泛应用,并且日臻成熟,其标志是多个关于视频编码的国际标准的制定。其可分为两大系列:即国际标准化组织(ISO)和国际电工委员会(IEC)的运动图像专家组MPEG(Motion Picture Expert Group)关于活动图像的编码标准MPEG系列,以及国际电信联盟(ITU)的视频编码专家组VCEG(Video Coding Expert Group)制定的视频编码标准H.26X系列。

H.261,H.263,MPEG-1,MPEG-2等视频编码标准已经应用多年,可以称为第一代的编码标准。H.264,MPEG-4等新一代编码标准可以称为第二代编码标准。

2. 视频编码方法

2.1 预测编码

预测编码可以在一幅图像内进行,也可以在多幅图像之间进行。预测编码实际上是基于图像数据的空间和时间冗余特性,用相邻的已知像素(或图像块)来预测当前像素(或图像块)的值,然后再对预测误差进行量化和编码。

2.2 变换编码

变换编码的目的是对解相关变换系数进行量化和编码操作,著名的变换技术离散余弦变换DCT使用在JPEG和MPEG标准上,离散小波变换DWT使用在MPEG-4和JPEG2000标准上。DCT是以8×8大小的像素块为单位的,DWT是以帧为标准的方式。对于视频压缩,变换编码经常和运动补偿估计结合在一起,发展出一种非常有效的混合MC变换方法,即对图像先进行带有运动补偿的帧间预测编码,再对预测后的残差信号进行DCT变换。这种混合编码方法已成为许多视频压缩编码国际标准的基本框架。

2.3 图像序列的混合MC/DCT编码

在视频编码中,DCT算法比DWT算法获得的压缩增益更大。在基本的MPEG和ITU-T视频编码方案中,视频序列的第一帧(I-图像)以帧内模式编码,不用过去和未来的任何帧来作参考。对于运动预测编码(P图像),先前已编码的第N-1帧中的I或P图像帧存储在一个帧存储器(FS)中。在第N帧和第N-1帧之间,我们只能得到一个运动矢量被传输到接收端。运动补偿预测误差是对相邻两帧中对应宏块中的每个像素运动位移差计算得到的。N×N DCT算法应用到每一个N×N块(MPEG标准是8×8像素)中,输出的N×N DCT系数再经过量化,可变长的霍夫曼熵编码,量化步长可以根据宏块进行调整,解码端则进行反相操作。

2.4 基于内容的图像编码

把视频帧分成对应于不同物体的区域,然后分别对其进行编码,即对不同物体的形状、运动和纹理进行编码。比如,在比较简单的情况下,可以利用尔维轮廓描述物体的形状;利用运动适量描述其运动的形状;用颜色的波形描述纹理。

3. 视频编码标准

(1)MPEG-1编码。MPEG-1标准主要针对SIF标准分辨率(NTSC制为352X240;PAL制为352X288)的图像进行压缩,压缩位率主要目标为1.5Mb/s,相比MJPEG技术,MPEG1在实时压缩、每帧数据量、处理速度上有显著的提高。但MPEG1也有较多不利的地方:存储容量还是过大、清晰度不够高和网络传输困难。

(2)MPEG-2编码标准。MPEG-2在MPEG-1基础上进行了扩充和提升,和MPEG-1向下兼容,主要针对存储媒体、数字电视、高清晰等应用领域,分辨率为:低(352x288),中(720x480),次高(1440x1080),高(1920x1080)。MPEG-2视频相对MPEG-1提升了分辨率,满足了用户高清晰的要求,但由于压缩性能没有多少提高,使得存储容量还是太大,也不适合网络传输。

(3)H.261,又称为P*64,其中P为64kb/s的取值范围,是1到30的可变参数,它最初是针对在ISDN上实现电信会议应用特别是面对面的可视电话和视频会议而设计的。此算法为了优化带宽占用量,引进了在图像质量与运动幅度之间的平衡折中机制,也就是说,剧烈运动的图像比相对静止的图像质量要差。因此这种方法是属于恒定码流可变质量编码而非恒定质量可变码流编码。

(4)H.263。H.263是国际电联ITU-T的一个标准草案,是为低码流通信而设计的。但实际上这个标准可用在很宽的码流范围,而非只用于低码流应用。它一方面以H.261为基础,以混合编码为核心,其基本原理框图和H.261十分相似,原始数据和码流组织也相似;另一方面,H.263也吸收了MPEG等其它一些国际标准中有效、合理的部分,如:半像素精度的运动估计、PB帧预测等,使它性能优于H.261。H.263使用的位率可小于64Kb/s,且传输比特率可不固定(变码率)。H.263支持多种分辨率:SQCIF(128x96)、QCIF、CIF、4CIF、16CIF。

(5)H.264。H.264代表了当前业界最先进的视频压缩技术,且具有以下无可比拟的优越性。1)码率低:和MPEG-2等压缩技术相比,在同等图像质量下,采用H.264技术压缩后数据量只有MPEG-2的1/2-1/30。显然,H.264压缩技术将大大节省用户的下载时间和数据流量收费。2)图像质量高:H.264能提供连续、流畅的高质量图像。3)容错能力强:H.264解决了在不稳定网络环境下容易发生的丢包等问题。4)网络适应性强:H.264提供了网络适应层,使得H.264的文件能容易地在不同网络上传输。

H.264标准算法复杂,对解码芯片的要求很高,但由于H.264标准提供稳定的图像质量,提高视频传输质量的可控力,并具有较强的差错处理能力,适用范围更广阔,因此成为关注的重点。

(6)MPEG-4编码MPEG-4的编码理念是:MPEG-4标准同以前标准的最显著的差别在于它是采用基于对象的编码理念,即在编码时将一幅景物分成若干在时间和空间上相互联系的视频音频对象,分别编码后,再经过复用传输到接收端,然后再对不同的对象分别解码,从而组合成所需要的视频和音频。这样既方便我们对不同的对象采用不同的编码方法和表示方法,又有利于不同数据类型间的融合,并且这样也可以方便地实现对于各种对象的操作及编辑。例如,我们可以将一个卡通人物放在真实的场景中,或者将真人置于一个虚拟的演播室里,还可以在互联网上方便的实现交互,根据自己的需要有选择地组合各种视频音频以及图形文本对象。

4. 视频编码技术比较

4.1 H.264与MPEG-4的比较

在极低码率(32-128Kbps)的情况下,H.264与MPEG-4相比具有性能倍增效应,即:相同码率的H.26L媒体流和MPEG-4媒体流相比,H.26L拥有大约3个分贝的增益(画质水平倍增)。32Kbps的H.26L媒体流,其信躁比与128K的MPEG-4媒体流相近,即在同样的画面质量下,H.264的码率仅仅为MPEG-4的四分之一。

H.264在中低码率下与MPEG-4比较:在中低码率(32-128Kbps)的情况下,H.264与MPEG-4相比具有性能倍增效应。

4.2 应用方面的比较

大多数标准,例如JPEG2000,H.263/264,MPEF-1/2/4和H.264实现先进的压缩技术,所有这些视频压缩标准都是围绕基于块的混合MC/DCT算法,基于静态图像的小波变换是应用在JPEG2000和MPEF-4的静态图像部分编码。

在数字电视领域,虽然当前多采用MPEF-2编解码技术,但随着数字高清电视、数字移动电视、IPTV、手机电视等新技术的发展,带宽限制的矛盾必将越来越突出,采用更高压缩率的编码技术是必然趋势,因此,这一领域也必然成为下一代音视频编解码标准的焦点。

作为最新一代的视频编码标准,H.264在追求更高编码效率和简洁的表达方式的同时提供了非常好的视频质量,它是当前最高效的视频压缩技术。与目前广泛应用的MPEF-2、MPEF-4相比,同样的图像质量情况下,它的编码效率提高了30%-40%,相应地节约了30%的网络带宽。在当今网络带宽越来越宝贵、高清需求强烈的情况下,采用H.264标准已成为在有限带宽下满足用户需求的理想方案,虽然其复杂的编解码算法在实际应用中还不能发挥出全部优势,但其最终将成为高清时代编解码技术的主力军。

参考文献

[1]Wiegand T,Sullivan GJ,Bjntegaard G,Luthra A.Overview of the H.264/AVC Video Coding Standard.IEEE Trans,Circuits Sys t,Video Technol.,2003,1(7):560—578.

[2]Draft ITU-T recommendation and final draft international standard o f joint video specification(ITU-T Rec.H.264/ISO/IEC14496-10AVC.in Joint Video Team(JVT)of ISO/IEC MPEG and I-TU-TV CEG,J VTG050,2003.

[3]毕厚杰.新一代视频压缩编码标准-H.264[M].北京:人民邮电出版社,2005.

DRA分层音频编码技术 篇7

关键词:DRA,分层编码,数字音频广播

在分层音频编码上, 国外已经研究了几种精细分层的有损数字音频编码方法及无损音频编码, 主要包括:1) ISO/IEC 14496-3 MPEG-4 BSAC (Bit Sliced Arithmetic Coding) 比特片算术编码[1], 在这种编码算法中, 基于对MDCT (修正离散余弦变换) 变换后的变换域系数 (频谱系数) 被量化为整数后, 从低频到高频分成多个组, 每个组谱系数从高位到低位形成比特片方式进行算术编码, 因此可以实现非常精细的分层 (或者伸缩) 编码。2) 在MPEG-4第三部分和MPEG-2第七部分中都提供了可伸缩采样率编码算法AAC-SSR (Advanced Audio CodingScalable Sampling Rate) , 首先是由Sony提出的, 编码架构也类似于其独有的ARTAC (Adaptive Transform Acoustic Coding) 编码。其基本算法是:首先将输入的数字音频信号通过4带的多相正交滤波器组 (Polyphase Quadrature Filter, PQF) 分割成4个频带, 然后这4个频带分别进行1个256点MDCT (512样点窗长) 或8个32点 (64样点窗长) MDCT。这种技术的好处在于每个频带内可以独立选择长块或短块MDCT, 因此对高频可使用短块编码增强时间分辨率;而对低频使用长块编码获得高频率分辨率。3) MPEG-4 SLS (Scalable Lossless Coding) 有两种方式。一种是有损音频编码层 (如AAC) 和无损误差增强层, 这样就保证了与原来有损编码的后向兼容。另外一种是没有有损编码层, 仅仅无损增强层。在这两种方式中, 无损增强层能够实现精细分层, 提供低质量、高质量以及无损质量。

第一种分层编码算法为了实现精细分层, 需要考虑限制频谱分区长度等, 而导致需要较多额外开销降低了编码效率;第二种分层编码算法由于应用了4个PQF, 造成带间存在混迭, 因此相邻部分的变换域系数编码效率会下降;而第三种分层也是一种极其精细的分层编码技术, 同样存在需要较多额外开销的问题。

中国数字音频 (调频) 广播 (CDR) 系统已经分别颁布了信道标准[2]和复用标准, 其中在信道传输技术规范中, 调制技术支持粗分层调制, 且信道编码支持不等错保护技术, 因此数字音频信源编码技术最好能够适配信道传输技术, 而上述的几种分层编码技术不太合适, 同时已颁布的我国多声道数字音频编码技术规范DRA[3]也不支持分层方式。为此本文提出了一种新的基于DRA分层编码方法, 简称为DRA+L, 在使用很小额外开销的条件下提供2层的帧结构, 同时保证了与原DRA兼容。

1 DRA分层编码结构

图1给出了DRA基本帧结构示意图[3], 在帧头信息中有1 bit指明是否在帧尾存在辅助数据部分, 其目的就是为以后应用需求而进行功能及性能增强所保留的扩展单元, 这样也确保了增强后的编码算法仍与原DRA兼容。另外需要注意的是, DRA帧头信息中的帧长度信息的计算并不包含辅助数据部分, 因此辅助数据部分需要独立定义自身的长度, 便于解码器拆分辅助数据单元, 并且易于快速同步。

1.1 辅助数据一般结构

辅助数据结构示意图如图2所示, 其中DRA帧头信息中的帧长信息是以32比特 (4 byte) 为单位。辅助数据中每个数据块下面小括号内的数字表示其占用的长度, 单位为bit。X1, Xn分别为第1个和第n个辅助类型的数据长度, 单位为byte。在辅助数据的开始是辅助数据的长度指示, 当辅助数据比较短时 (小于256 byte) , 直接使用8 bit基本长度信息描述;否则辅助数据长度通过16 bit扩展长度与前面的8 bit基本长度共同描述, 即在256基础上累加16 bit无符号二进制数所表示的数值作为整个辅助数据长度。

每种辅助数据的类型由三部分组成:第一部分是本类型附属数据的长度, 用12 bit描述 (以byte为单位) ;第二部分为本类型附属数据的具体类型, 以4 bit表示, 最后一部分是本类型辅助数据的有效载荷。

1.2 分层编码的数据结构

DRA分层编码就是在国标DRA算法的基础上通过分层编码辅助数据的增强扩展而实现的。分层编码可根据编码的声道数进一步分为单声道/立体声的分层和5.1环绕声分层, 其码流结构分别如图3和图4所示的两层结构 (即基本层和增强层) 。

1) 单声道/立体声分层帧结构

在单声道/立体声分层编码模式时, 分层编码的基本层就是在它所分配的码率限制下通过国标DRA编码单声道或立体声;分层编码的增强层首先是辅助数据的总长度, 辅助数据内部仅包含一种辅助数据类型, 即分层编码类型。分层编码类型包括:12 bit分层编码类型长度、4 bit分层编码类型指示和分层编码扩展的有效载荷。在有效载荷的开始, 通2 bit声道模式“00”用于表示当前DRA分层编码是是单声道/立体声分层编码;有效载荷的其他部分则为单声道/立体声残差的DRA编码信息。

2) 环绕声分层编码帧结构

在5.1环绕声分层编码模式时, 分层编码的基本层就是前置左右声道对的DRA编码;增强层的结构与单声道/立体声分层的增强层相似, 但有效载荷的开始2 bit声道模式置为“10”, 并且有效载荷的其他部分为其余声道 (中央声道、超重低音及左右环绕声道对) 的DRA编码信息。

3) 低码率DRA分层编码帧结构

当在数字音频 (调频) 广播等应用中, 有时需要在一个模拟调频节目内传输多路数字立体声信号或环绕声信号, 因此要求DRA可提供更高编码效率而降低码率, 这时需要在DRA算法的基础上增加一些增强编码工具, 例如带宽扩展及参数立体声等, 实现低码率DRA编码算法。参照DRA分层编码结构图3和图4, 可以通过简单修改给出低码率DRA分层编码结构。

(1) 单声道/立体声低码率DRA分层

单声道低码率DRA分层:基本层包括单声道低频部分的DRA编码、辅助信息长度信息、带宽扩展类型辅助数据 (包括带宽扩展辅助数据的长度、类型及数据) ;增强层包括图3中辅助信息长度之后的所有部分 (其中残差DRA编码也是编码单声道的低频部分的残差信号) 。

立体声低码率DRA分层:当不采用参数立体声时, 基本层包括立体声对低频部分的DRA编码、辅助信息长度信息、带宽扩展类型辅助数据;增强层包括图3中辅助信息长度之后的所有部分。当采用参数立体声时, 基本层包括立体声对下混为单声道后的单声道低频部分DRA编码、辅助信息长度信息、带宽扩展类型辅助数据 (在数据内部包含参数立体声编码数据) ;增强层包括图3中辅助信息长度之后的所有部分。

(2) 环绕声低码率DRA分层

基本层包括左右立体声对低码率DRA编码信息 (包括左右立体声对低频部分的DRA编码或者下混后的单声道低频部分的DRA编码、辅助信息长度和带宽扩展类型辅助数据) ;增强层为图4辅助信息长度之后的所有部分 (其中中央声道C采用低码率DRA单声道编码方法, 左右环绕声道对采用低码率DRA声道对编码方法) 。

2 分层编码算法

2.1 单声道和立体声分层编码算法

图5给出了单声道/立体声分层编码的原理框图, 其中基本层为单声道或立体声的DRA编码 (图中虚线框内的两个模块带宽扩展 (BWE) 编码和参数立体声 (PS) 编码是低码率DRA编码的增强单元) , 其中DRA完全符合国家标准规范的压缩算法;增强层则是对残差信号的编码, 用于进一步改善解码信号的精度。下面主要介绍3个部分:DRA残差信号的计算、DRA残差信号量化和DRA残差信号的码书编码。

1) DRA残差信号的计算

GB/T 22726—2008国标中实现DRA的标准算法简单示意图如图6所示 (为了清晰, 特将解码端也做了简单描述, 其中解码端模块见图6的虚线框图) 。时域数据x[n]经过MDCT变换到频域得到谱系数X[k], 将频域系数分成多个子带, 对其中属于子带b的谱系数除以一个量化步长Δb, 然后取整 (nint) 得到量化后的谱系数X̂[k], 其中每个量化步长Δb和谱系数X̂[k]通过各种方式传输到解码端。在解码端对量化后谱系数X̂[k]乘以量化步长Δb, 得到逆量化的谱系数X͂[k], 对其做IMDCT得到解码后的时域系数x͂[n]。

DRA分层算法简单示意图如图7所示的中间模块。由图7可以看到, 基本层和图6的编码端完全一致, 也即完全兼容。增强层包括:取整得到的量化后的谱系数X̂[k]在增强层乘以量化步长Δb恢复出量化后的谱系数X͂[k], 然后用原始谱系数X[k]减去量化后的谱系数X͂[k], 得到残差谱系数E[k]。将残差谱系数E[k]分成多个子带, 对其中属于子带e的谱系数除以一个残差谱系数量化步长Δe, 取整 (nint) 得到量化后的残差谱系数Ê[k]。增强层需要传输残差谱系数量化步长Δe和量化后的残差谱系数Ê[k]。在解码端对量化后谱系数X̂[k]乘以量化步长Δb, 得到逆量化的谱系数X͂[k];对量化后残差谱系数Ê[k]乘以残差谱系数量化步长Δe, 得到逆量化的残差谱系数E͂[k]。最后将基本层得到的逆量化的谱系数X͂[k]和增强层得到的逆量化的残差谱系数E͂[k]相加, 并对和做IMDCT得到解码后的时域系数x͂[n]。

2) 残差信号的量化

由于残差信号的概率分布与原始音频信号的概率分布不同, 特别是0附近的小信号概率明显增大, 因此残差信号的量化算法是对DRA量化算法的改进, 主要是重新定义了量化码书1和2的都为4维Huffman编码 (其他码书相同) , 分别对应量化频谱系数的绝对值在1和2的情况, 并且重新训练并编制了新的Huffman码书, 提高了编码效率。

残差信号的量化步长采用差分编码Huffman编码方式表示 (第一个量化步长用7 bit绝对值表示) , 而DRA标准是量化步长绝对值Huffman编码方式。

3) 残差信号的码书选择及应用范围

不同于DRA编码规范中固定用5 bit表示码书段个数, 残差信号的码数段个数对平稳帧仍用5 bit, 但对瞬态帧仅用4 bit。

码书的应用范围划分进一步简化, 并且从Huffman编码改为游程编码。如果是平稳帧时, 每16个谱线为1个编码子带, 即每16个谱线用1个Huffman码书。所以1 024个谱线有64个编码子带。码书的应用范围先用5 bit表示最多32个编码子带, 如果应用范围大于32个编码子带, 则再用5 bit, 这时最多可以表示64个编码子带;如果是瞬态帧, 每8×n Block Num (n Block Num取值可参考文献[3]) 个谱线为一个编码子带, 即每8×n Block Num个谱线用一个Huffman码书。所以128×n Block Num个谱线有16个编码子带。码书的应用范围先用3 bit表示最多8个编码子带, 如果应用范围大于8个编码子带, 则再用3 bit, 这时最多可以表示16个编码子带。

对每个码书段的码书索引量化方式由Huffman编码改为更简单的哥伦布编码。

2.2 环绕声分层编码算法

与立体声分层编码算法相比, 图8所示的DRA环绕声分层编码算法比较简单。基本层是对左 (L) 和右 (R) 声道对进行DRA编码;增强层是对中央声道 (C) 进行DRA编码, 对超重低音 (LFE) 声道进行DRA编码, 以及对左环绕 (Ls) 和右环绕 (Rs) 声道对进行DRA编码。声道在编码时可能开启和差立体声模块, 一般不使用强度立体声工具。

当低码率DRA环绕声分层编码时, 其中的DRA编码替换为低码率DRA编码即可, 其中声道对编码可能开启参数立体声编码模块, 提高低码率 (例如低于128 kbit/s环绕声情况) 下的编码效率和主观声音质量。

3 DRA分层编码的试验及分析

DRA环绕声分层编码是在DRA环绕声分层编码算法的基础上通过简单调整各声道编码数据实现分层的, 仅仅引入了很少的额外辅助数据, 占整帧数据的比例很小, 因此环绕声分层编码的总声音质量和DRA环绕声相当, 环绕声分层编码基本层的主观声音质量与相应码率的DRA立体声质量一样;而DRA单声道/立体声分层编码采用残差方式, 与原DRA编码差别较大, 下面将重点分析这种情况下的声音质量比较。而低码率DRA分层编码的性能可对照DRA分层编码结果, 本文不再累述。

3.1 DRA分层编码的额外开销分析

由于单声道/立体声分层编码主要通过残差方式实现, 因此这里主要分层环绕声分层编码的额外开销问题, 表1给出了48 k Hz采样率下不同典型码率时环绕声分层编码额外开销情况。由于DRA帧长是32比特的倍数, 以及基本层和增强层具有同样的长度, 同时应用中实际比特率一般应低于典型设置的比特率, 因此表1中给出了实际比特率。

3.2 DRA分层编码性能客观测试结果

考虑到DRA分层编码属于感觉音频编码技术, 因此基于心理声学模型的客观测试软件能够较准确地衡量这种编码算法。主要测试条件及内容如下:

1) 测试软件:本文采用基于ITU-R BS.1387标准[4]的商用客观测试软件CRC-SEAQ。

2) 测试音频片段:12个48 k Hz和16 bit量化的MPEG立体声测试序列。

3) 码率:DRA分层@64 kbit/s基本层+64 kbit/s增强层和DRA分层@64 kbit/s基本层。

4) 输出:客观差别分ODG (数值越接近0越好) 。

测试结果如图9所示, 其中前12列分别对应12个不同的MPEG测试序列, 最后一列为12个测试序列得分的平均值。上面的折线表示DRA分层编码ODG分数, 下面的折线为DRA分层编码中仅仅解码基本层所获得的ODG分数。可以看到仅解码DRA分层编码的基本层可提供基本的收听质量, 通过增强层解码可提高约1分的平均分, 能够进一步明显提高总的主观声音质量。

4 DRA分层编码的应用示例

在数字音频 (调频) 广播应用中, DRA分层编码应用如图10所示, 通过DRA粗分层音频编码算法将输入的数字音频信号编码分为基本层和增强层两组数据, 通过非等错信道编码可对基本层给予强误码保护, 对增强层给予弱保护;或者通过分层调制技术使得基本层和增强层有不同的抗干扰能力;最后通过发射机播出。由于 (调频) 广播信道一般为无线信道, 除了随着距离增加信号自然衰减之外, 还受到各种衰落、遮挡、电磁干扰等, 在接收端通常无法完全正确解调被干扰的信号, 可用功信道解码降低误码率。如图中用户1的情况, 接收环境比较差, 只能正确解码基本层, 如果广播的是环绕声节目, 则用户1可收听高质量的立体声部分;如果广播的是立体声节目, 用户1将接收到基本质量的立体声信号。用户2有良好的接收环境, 可完全解码基本层和增强层, 这样用户2可收听高质量环绕声广播或者高质量立体声广播。

5 结论

本文提出的DRA分层编码是基于DRA技术而开发的一种新的编码算法, 主要特点是DRA分层编码提供了一种新的粗分层码流结构, 并且由于DRA环绕声分层编码仅仅是通过引入小于1%的额外开销控制多声道编码数据重新组织而实现了分层, 保证了环绕声分层编码质量基本无下降;DRA单声道/立体声分层采用残差再编码的技术实现的分层, 客观测试表明DRA单声道/立体声分层编码可在基本层的ODG分数上通过增强层进一步明显改善大约1分。由于DRA分层编码是通过DRA编码算法中辅助数据的扩展来实现, 因此DRA分层编码与DRA编码兼容, DRA编码可完全解析基本层数据。DRA分层编码特别适用于数字音频广播, 可与非等错信道编码和分层调制技术完美结合, 提供最佳的收听效果。

参考文献

[1]ISO/IEC 14496-3, Information technology-coding of audio-visual objects-part 3:audio[S].2004.

[2]GY/T 268.1, 调频频段数字音频广播第1部分:数字广播信道帧结构、信道编码和调制[S].2013.

[3]GB/T 22726—2008, 多声道数字音频编解码技术规范[S].2008.

上一篇:悲剧命运俄狄浦斯王下一篇:哺乳式教学