一种适应HLS播放CMMB广播的码流转换机制

来源 :中国新通信 | 被引量 : 0次 | 上传用户:abc747665
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】本文主要阐述了利用HLS协议播放CMMB广播中所涉及到的码流格式转换的实现机制。首先对相关的音视频格式及复用技术进行了介绍,主要涉及TS流,AAC音频格式封装,视频NAL格式封装等内容,然后介绍了本方案的具体实现方法,以及实现中的主要问题。
  【关键词】HLS CMMB 码流格式转换
  一、概述
  在目前移动电视业务中,存在多种不同的标准,如我国的CMMB,日本/美洲的ISDB-T,欧洲的DVBH/DVBT,其码流复用方式和传输的音视频码流格式均不同,如CMMB采用复用帧格式,ISDBT采用TS流,DVBH采用IP流等复用方式,其内部的音视频原数据的封装格式也存在很大差异,比如音频有ADTS和LATM,视频NAL单元和字节流等。针对这些不同的电视业务协议标准,如果在带电视信号接收芯片的功能机上,以前为了播放这些码流可以开发不同媒体流制式的电视播放器。
  但是随着智能手机的发展,人们越来越希望在不带电视硬件接收芯片的智能手机上观看电视广播业务,因此亟需发展一种移动电视接收数据卡,通过智能手机的wi-fi与之相连接,完成电视信号的接收,然后通过传输协议把电视码流传送到智能手机上进行播放,该方式简称WebTV,其示意图如图1所示。针对目前主流的智能手机操作系统android和ios,为了共同支持两个智能操作系统的手机,我们决定采用apple公司提出的HLS(Http LiveStreaming)标准协议进行wi-fi之间的码流传输,使用HLS方案来传输音视频流,终端使用支持HLS协议的播放器进行播放码流,那为了支持多种不同电视业务标准,需要将不同电视标准所定义的码流格式,转换成HIS所支持的格式。
  二、码流转换机制原理
  在HIS传输协议规范中,规定了其支持的音频流格式为AAC和mp3,视频流格式为H264,采用TS流的复用方式,通过HTTP来传输,具体支持的情况如下:
  mVideo:H.264 Baseline Level 3.0
  ■Audio:HE-AAC or AAC-LC up to 48 kHz,stereo au-dio。封装格式为ADTS;MP3(MPEG-1 Audio Layer 3)8kHz to 48 kHz,stereo audio。
  在WebTV应用中,所支持的CMMB电视业务码流格式为:
  为实现WebTV通过HLS技术在android和ios操作系统的系列产品上应用,需要将CMMB的复用帧转换成TS流。在码流格式转换的具体实现中,涉及到视频Bit-stream格式封装和PES、TS流封装等内容。
  MPEG-2系统中音视频流按照IS0/IECl3818-2和IS0/IECl3818-3标准进行编码压缩后得到ES包,ES包经过Packetizer封装成PES分组后,再对PES分组进行编码,与其它数据一起,合成单个或多个适宜于存储或传输的数据流。
  MPEG-2系统中对传送进来的PES分组有两种编码方法:传送流模式(TS)和程序流(PS)模式,分别形成传送流(Transport Stream,TS)和程序流(PS)。在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流。因此一般来说,PS流适用于存储而TS流适用于传送。
  在MPEG-2系统中,除了音视频数据包的格式外,还定义了节目特定信息(Program Specific Information,PSI),PSI用来描述传送流的组成结构,提供使接收机能够自动配置的信息,用于播放器对复用流中的不同节目流进行解复用和解码。
  三、码流格式转换的具体实现
  如上分析所述,在HLS协议规范中,通过HTTP传输的TS流对所适用的音视频格式有限制,所以,在电视业务中,在电视设备将码流接收下来后,需要作码流格式转换。
  对于CMMB电视业务的复用帧,需要进行解复用处理,得到音视频帧ES流,而后需要对音频ES流进行ADTS封装,对视频数据进行NAL单元的封装,然后打包成PES包,最后组装成TS流发送给终端播放器。
  3.1 码流格式转换总体流程
  在整体HIS方案中,设计成每10s的Ts数据打包成一个TS文件。在文件的头上,需要加上PMT表和PAT表,对于码流的播放PAT与PMT表是必不可少的。然后将每一个音视频Es数据,打包成TS包存入TS文件。如下图2为电视业务实现HIS方案的总体处理流程。
  对于电视业务码流的接收和解复用处理得到音视频Es流的过程,其实现方式与打包顺序正好相反,故本文中不再介绍,下面主要对ES码流打包成TS文件,以实现HIS方案的过程进行详述。
  3.2 TS流打包实现
  3.2.1 PMT和PAT表
  对于HIS方案,每10s音视频流分割为一个TS文件。所以在每次进行ES流处理开始时,会根据时间戳判断是否需要进行分割。因为音频时间戳分布较为均匀,所以方案中以音视频ES包为基准,每10s进行一次分割,重新生成TS文件。每个TS流文件,先写入PMT表和PAT表,在TS流的节目配置中,假如该TTS流只有一套节目,其中包含2路音视频流:
  音频信息为:PID为Oxll2,stream_type为0xof,具有ADTS传输句法的IS03EC 13818-7音频。
  视频信息为:PID为Oxlll,stream_type为0xlb,I-TU-T H.264建议书IISO/IEC 14496-10视频中定义的AVC视频流。
  按照PMT和PAT的字段格式,生成TS文件头的PMT和PAT数据包如下所示:
  3.2.2 AAC音频的ADTS封装   在AAC的ADTS封装中,对ADTS固定头的主要参数设置如下:
  ID(1bit):设置为1,表示MPEG-2 identifier;
  Layer设置为0;
  protection_absent:设置为1;
  profile设置为1,表示Low Complexity profile (LC)AAC-LC音频格式;
  smaping_freuency_index:设置为0x6,表示采样率为24KHz;
  channel_configuratio:设置为0x2,表示双声道。
  在ADTS可变头中,主要有如下参数需要设置:
  frame_length:音频的帧长度,根据输入进行设置;
  adts_buffer_fullness:对于码率可变的码流,设置为0x7ff;
  number_of_raw_data_blocks_in_frame:通过用输入音频帧数据长度除以1024得到,表示ADTS帧中有nllm-ber_of_raw_data_blocks_in_frame+1个AAC原始帧,为0表示有一个AAC数据块。
  所以,可得到ADTS的数据头为如下:
  unsigned char adtsHeader[7]=
  {0xff,0xf9,0x58,0x80,00,0xlf,0xfc};
  然后根据输入音频ES数据长度对framejength参数进行设置即可。
  3.2.3 CMMB视频NAL的重组
  将CMMB码流进行解复用处理后,得到的视频流为去掉了字节流头标识的NAL单元。为重组成TS流,需要加上字节流头标识,即“00 00 00 01”。但是仅仅加了相关标识后,发现封装成的TS流无法播放出视频,对CMMB视频NAL单元进行分析,其包含有如下NAL单元:
  IDR帧:帧头为0x65,nal uniLtype为5;
  non-IDR帧:帧头为0x41,nal_unit_type为1;
  序列参数集:帧头为0x67,nal_unit_type为7;
  图像参数集:帧头为0x68,nal_unit_type为8;
  填充数据:帧头为OxOc,nal_unit_type为1 2;
  但是没有nal_unit_type为0x09的分割符NAL单元。所以除了加上字节流头标识外,还需要考虑加入分割符NAL单元。
  按照NAL单元的顺序,见图3:
  所以对于输入的CMMB视频ES流,需要判断其输入的类型,分别插入如下信息:
  3.2.4 PES封装处理
  将组装好的音频ADTS数据,以及视频NAL数据,则可以进行PES打包处理,参考PES包的结构,需要考虑如下参数:
  streamjd(1B):
  音频PES包为0xc0,表示ISO/IEC 13818-3 orISO/IEC 11172-3 audio:
  视频PES包为0xe0,ITU-T Rec.H.262 l ISO/IEC1381 8-2 or ISO/IEC 1 1 172-2 video。
  PES_packet_length(2B):音频可根据输入数据长度来设置,视频可以直接设置为0。
  对于可选的PES头,由于需要加上时间戳,需要设置的参数PTS_DTS_flags(2bit)为“10”,表示将在PES头上都有PTS时间。PES_header_data_length设为Ox05,通过将音视频帧的时间戳按照PTS_DTS的格式加入,PES可选头中其它参数都置为0。
  所以,可得到ADTS的数据头为如下:
  unsigned char AudioPESHeader[14]={0x00,0x00,0x01,0xc0,0x00,0x00,0x84,0x80,0x05,0x00,0x00,0x00,0x00,0x00};
  unsigned char VideoPESHeader[14]={0x00,0x00,0x01,0xe0,0x00,0x00,0x84,Ox80,Ox05,Ox00,0x00,Ox00,Ox00,Ox00};
  然后仅仅需要根据输入音视频数据长度对PES_packeUength字段进行修改设置,将13bit的时间戳按照PTS格式设置即可。
  在对CMMB码流进行PES打包时,需要将时间戳转换成PTS所定义的格式,并且由于CMMB时间戳单位为1/22500s,而Ts流中PTS的时间单位为1/90000s,所以在进行PES打包之前,如果是CMMB码流,需要将时间戳乘以4,再按照PTS的格式进行处理。
  但是,在CMMB码流中,其音视频播放时间戳为32bit为,单位为1/22500s,如果换算成PES包的时间戳,需要乘以4,则会出现超过PTS时间戳的比特位数。
  该处对音视频时间戳的处理时,会存在截断最高比特位的情况。目前从实验情况来看,这种截断处理对播放没有影响。
  3.2.5 TS封装处理
  将不定长的音视频PES包封装成TS流,其主要处理如下:
  第一,按照184字节大小把PES包数据分成N个数据快,通常情况下,最后一个数据块可能不足184字节,本文中称之为剩余字节。
  第二,对于PES包封装成TS包,主要有如下三种情况:
  (1)对于184字节的数据快。直接装入TS包的载荷区,同时Adaptation_field_control字段设置为01,表示后续只有负荷无adaptation_field。如图3(1)所示。
  (2)对于剩余字节为183字节的PES数据。Adapta-tion_field_control字段就设置为11,表示后续既有adapta-tion_field又有负荷。adaptation_field_length设为0,并且在adaptation_field_length字段后,就没有状态标志字段和状态标志解释字段。如图3(2)所示。
  (3)对于这些剩余字节不足184的PES数据。Adap-tation_field_control字段就设置为11,表示后续既有adap-tation_field又有负荷。adaptation_field_length设为184-剩余数据字节数一1;并且在adaptation_field_length字段后,1Byte的状态标志字段设置为0,表明没有状态解释字段,在这些标志字段后是填充字节,填充了L-1个字节0xFF后,再插入剩余数据,这时的TS包结构如图3(3)所示。
  第三,对于每一个PES包的第一个184个字节在打包成TS包时,payload_unit_start_indicator被设置为1,后面的数据在打包成TS包时该位被设置为0。
  第四,对于Ts包头中的不连续指示器,传输优先级,传输加扰控制这些字段,本文都没有采用,设置为0。
  通过如上进行码流格式转换后的Ts流,使用HLS协议传输至终端播放器,终端播放器根据HLS协议和Ts流格式进行解码播放。
  四、总结
  根据本文所述方法,在WebTV项目上,实现对CMMB电视业务格式码流的重封装,满足HIS标准的规定格式,可以顺利地在Iphone/Ipad等产品上播放,也可以在PC上多种支持HLS的播放器上播放CMMB电视,并且在各产品上的播放质量和画面流畅清晰。
其他文献
本文主要介绍了300MW机组汽机旁路系统在机组中的重要作用,通过对汽机旁路系统进行控制系统改造,可以大大提高汽机旁路系统的运行可靠性,并通过实例分析具体的改造方法。
2014年5月22日,中国石化股份公司工程部在北京主持召开了《石油化工钢制设备抗震设计指南》编制工作会,会议就中国石化工程建设有限公司和中国石化洛阳工程有限公司等单位共同
目的探讨循证护理模式在子宫肌瘤腹腔镜手术患者中的应用效果。方法选择2018年3月~2020年3月我院收治的88例子宫肌瘤患者,按随机数字表法分为对照组和观察组各44例。对照组接
玩,在户外游戏活动中发挥着极其重要的作用。通过户外游戏活动,不仅能让幼儿的大脑得到休息,同时也能发展和培养幼儿的智力、想象力以及创造力。我国著名学前教育专家陈鹤琴
通过智能感应功能控制智能沟盖板的运行,对电缆沟内的环境进行降温和除湿,对防止电缆的腐蚀起到决定性的作用,同时也提高了安全生产运行水平,突破了传统人工搬抬水泥盖板的原
农业进步受自然、社会经济资源约束,并受农业制度的影响。农业技术进步的诱导发展模式:首先农业技术进步向自然、社会资源充裕的方向突破;其次向可改变资源约束方向变革;最后向技
目的分析服务流程重组对手术室护理质量与效率的影响。方法选取2018年1月~2019年1月我院收治的外科手术的300例患者,比较服务流程重组实施前(对照组)、实施后(观察组)手术室
现在讨论高效农业问题时,很多人对高效农业的理解过于狭窄,并忽视农业比较优势对于实现高效农业的意义。本文对此提出了不同的看法,指出高效农业的前提是资源的高利用率。一
【摘要】 在蜂窝移动通信网络中,由于用户量的迅猛增长,目前仅有的频谱资源很难满足用户的实际需求,采用相应的优化算法有效地规划频率资源来提高频谱的利用率变得极为关键。本文对基本的人工鱼算法进行了改进,使其在解决信道分配问题时,收敛率和收敛速度都有着显著的提高。  【关键词】 人工鱼群算法 信道分配 视野和步长  一、引言  随着移动用户数量的迅速增长,现有的频谱变得十分有限,通过提高频谱资源的利用率
瓶颈机床是影响车间生产和调度的关键因素。针对Job shop调度中的瓶颈机床确定问题,提出了动态识别瓶颈机床的搜索算法框架。并详细讨论了算法框架中的工序开始时间窗、搜索空