解复用-mpeg2
http://blog.csdn.net/yipie/article/details/7612226
数字高清晰度电视(High Definition Television)简称HDTV,是继黑白电视和彩色电视之后的第三代电视系统。其图像细腻逼真,质量与35 mm电影相当,再配以环绕音响,使收视效果大幅度提高。它将成为21世纪的主要电视产品,具有潜在的巨大经济效益。因此,日、欧、美等发达国家都相继投入 了大量人力、物力来开发HDTV系统。我国从1996年启动国家重大产业工程项目HDTV功能样机系统研究开发工程。
1 MPEG-2标准简介以及数字电视功能分析
MPEG(Motion pictures expert group)译为运动图像专家组,他是在ISO的召集下,为数字视频和音频制定压缩标准的专家组。该组织于1994年推出MPEG-2标准。此标准分为4个文件,分别是:
系统层(System,ISO13818-1)描述视频,音频的数据复用方式和视频,音频同步方式。
视频压缩层(Video,ISO13818-2)描述数字视频编码方式和解码过程。
音频压缩层(Audio,ISO13818-3)描述数字音频编码方式和解码过程。
一致性(Conformance,ISO13818-4)说明测试编码码流的过程,检验是否符合前3个文件的规定。
MPEG-2运动图像及其伴音通用国际标准在数字音/视频领域得到了广泛的应用。在MPEG-2中,定义了两种形式的码流,即传输流(TS)和节目流
(PS)。节目流一般用于相对无错的环境中,如交互式多媒体业务,其长度是可变的。传输流则用于有错误的环境中,如数字电视的地面广播传输,其分组长度固
定为188
b。传输流和节目流都是编码后的基本数据流(ES)按照一定的格式打包后形成PES包,再加上一些系统级信息而构成。码流的形成过程可以用图1来表示。其
中,采样得到的视频数据流和音频数据流经过编码器后,成为MPEG-2
基本流(ES),再通过打包,成为包化ES流(PES),再经过传输复用器,将音频PES,视频PES,以及其他的数据和控制信息,转换成MPEG2传输
流(TS).TS流经过信道编码和调制之后,发送到信道中。在接收端,正好相反,经过解调,信道解码和前向纠错之后,再通过传输解复用器,分别输出视频
PES流,音频PES流,以及数据和控制信息,再通过视频解码器和音频解码器后,分别送入DTV显示系统和音频播放系统。
2 关于传输流以及传输流中几个重要概念
传输流TS包的结构如图2所示。
传输流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流,音频流,节目特殊信息流和其他数据包。
首先介绍视频和音频PES流是如何转换成TS流的。PES流是由视频或音频基本流分别打包处理后形成的PES包系列,PES包的长度是不定的。每个PES包的包头携带了:
流标识(SID)由同一个ES经打包处理后得到的PES,其流标识相同。
显示时间戳(PTS)用于视频和音频之间的同步控制,它指示对解码后视频和音频播放的适当时刻。
解码时间戳(DTS)用于视频基本流解码器和音频基本流解码器的同步控制,它指示对视频和音频基本流解码的适当时刻基本流的速率控制信息。
由于TS包长固定为188 b,所以在打包时,PES包长若大于188
b,则对其进行分段处理,因为PES是放在TS包的有效载荷区进行传送的,所以分段后每段大小为184 b,不足184 b的加上适应字段构成184
b,有没有适应字段则由包头中的适应字段控制来指示。每段加上TS包头就形成一个TS包。
TS包包头中各字段含义如下:
同步字节指示一个TS包的开始。
传输错误指示表示该传输包在传输过程中有无错误。
有效传输开始指示若有效载荷区传输的是来自PES包的数据,则有效传输开始指示表示有效载荷区的第一字节是否为被分段的PES包的起首字节。若有效载荷区
传输的是来自节目特殊信息的数据,则有效传输开始指示表示载荷区第一字节是否是PSI数据起首字节的位置指针。
传输优先指示表示的是具有相同的PID的传输包的优先级。
连续计数器PID相同的传输包的计数。
此外,在TS包包头的调整字段中,有一个重要的域PCR,即节目时钟基准。它以固定的频率插入包头。在解码端,正是根据PCR来恢复系统时钟的。
PSI信息使用4个表来定义码流的结构,分别为节目关联表(PAT)、节目映射表(PMT)、条件接收表(CAT)和网络信息表(NIT)。其中,最重要
的表信息是PAT和PMT。PAT是PSI信息的根,其PID是0,表中列出了传送码流中所有节目的节目映射表的PID,PMT表中列出与该节目有关的所
有基本码流,如视频、音频和PCR及有关信息的PID。除PAT表包的PID永远是0外,还有两种包的PID是预留的:
①空包,用来作码流填充,PID是8191。
②CAT包,PID值是1。所有PSI信息必须以一定的频率发送,每秒钟至少要发送20次。
3 信道解复用器的原理
信道解复用器位于信道调制前端,它对输入TS流进行处理以适应该信道要求,基于MPEG-2的实时TS流信道解复用器的原理框图如图3所示。系统包括码流输入接口、PCR校正模块、PSI分析和重新生成模块及用户接口等部分。
码流输入接口支持ASI(异步串行接口)和SPI(同步并行接口)两种输入格式。输入信号经过接口电平转换,变为并行TTL电平信号。输入TS流的最大数
据率可达120 Mb/s,该系统实现两路独立的TS流输出,它们各自的数据率分别由CLOCK1和CLOCK2时钟决定。其取值范围从1.5
Mb/s到120 Mb/s。
系统中核心部分为2片FPGA和1片DSP,其中1片FPGA主要完成PID过滤和PCR延时补偿,另外1片负责用户接口。而DSP则负责分析TS流,根
据用户设定分路,并生成新的PAT及PMT数据包。CLOCK1和CLOCK2来自后端信道调制器的时钟,输入的单路多节目TS流的内容将根据用户的设定
被分别分配到TS1和TS2,输出码率分别决定于CLOCK1和CLOCK2。DSP前端和后端的FIFO消除了输入输出码率不同所带来的数据丢失现象。
27
MHz的本地时钟用来补偿输入TS流的PCR在系统中所产生的延时。用户接口通过一双口RAM与系统交换相关的设定信息。下面对系统的几个重要部分说明如
下:
3.1 码流分析
信道解复用器系统进入正常状态工作前要完成用户参数设定,用户最关心的参数是输入TS流中所含节目类型、PID号、码率等信息。系统首先会对输入的TS进
行分析,从中提取出所有的节目信息,并且计算出不同类型数据包的码率。用户根据这些分析结果可以了解到目前输入TS流的所有基本信息。
3.2 用户设定
根据用户的实际需要,输入TS流的节目内容可以分别被指定分配到两个输出通道,并且允许同一个节目同时被分配到两个通道,用户也被允许修改PID号。比
如:输入为一个22 Mb/s的TS流,包含3个节目,每个节目又包含多个视频、音频等数据流。假如目前用户有两个输出信道,一个为829
Mb/s,另一个为2356
Mb/s,并且用户打算将输入码流中的节目1分配到信道1,节目2和3分配到信道2。用户则可根据需要做相应的设定,解复用器系统将根据用户的设定来分别
为输出TS1和TS2生成新的PAT和PMT并且将相应的视频、音频等数据包分配到相应的通道。用户选择节目时也可以只选择该节目中的部分数据流。比如某
个节目包含4个视频流,而用户只对其中的两个视频流感兴趣,那么用户在设定时可以只选择需要的视频流,在系统进入正常工作时,未被选中的数据流将被自动过
滤。
3.3 PCR补偿
PCR是TS流的重要部分,它的精度决定了解码端恢复时钟的精度,直接关系到解码器是否能正常的工作。输入TS流中各节目的数据包从进来到出去会在信道解
复用器的FIFO内产生一定的延时,如果不对其PCR做相应的延时补偿,其输出TS流的PCR误差将有可能远大于协议所规定的±500
ns的误差范围,从而导致解码不正常。假定某个PCR在T1时刻进入信道解复用器,在T2时刻从解复用器输出,则该时刻的PCR值将被替换为PCR′。
PCR′ = PCR +(T2-T1)
延时补偿运算中所用到的时间标记T1、T2是由本地27 MHz时钟计数所得,由于码流在解复用器内的停留时间并不会太大,所以用本地27MHz记录延时带来的累积误差很小。
3.4 用户接口
对于解复用器后端的信道调制器来说,最关心的是如何从信道解复用器中得到节目信息,以及如何将所选节目分配到TS1和TS2上。这些信息是通过用户接口进行交换的。
考虑到本系统需交换的信息较多,这里采用一容量较大的16位地址的双端口RAM(DPRAM),作为信道调制器和解复用器交换信息的平台。信道解复用器在
对输入TS流进行分析后,将所提取的各种节目信息放在双口RAM的相应地址中,以供信道调制器读取和修改。解复用器根据调制器送入的读写信号及相关数据和
地址信息,由FPGA电路实现取指和译码,将调制器所需信息从DPRAM的相应地址中取出并送给信道调制器,或将信道调制器修改后的信息从DPRAM的相
应地址中取出。
解复用-mpeg2的更多相关文章
- mux复用 demux解复用
保存音频包: 直接输出解复用之后的的音频数据码流.只需要在每次调用av_read_frame()之后将得到的音频的AVPacket存为本地文件即可. 但在分离AAC码流的时候,直接存储AVPacket ...
- FFmpeg详解
认识FFMPEG FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式.多媒体传输协议以及音视频编解码器.因此,对于从事多媒体技术开发的工程师来说,深入研究FFM ...
- TS流PAT/PMT详解
一 从TS流开始 从MPEG-2到DVB,看着看着突然就出现了一大堆表格,什么PAT.PMT.CAT……如此多的表该怎样深入了解呢? 我们知道,数字电视机顶盒接收到的是一段段的码流,我们称之为TS(T ...
- MPEG2 PS和TS流格式
http://blog.csdn.net/alangdangjia/article/details/9495193 应该说真正了解TS,还是看了朋友推荐的<数字电视业务信息及其编码>一书之 ...
- PAT、PMT、SDT详解
下面针对解复用程序详细分析一下PAT,PMT和SDT三类表格的格式. 如下图,四个频道复用 PAT---Program Association Table,节目关联表 .PAT表携带以下信息: (1) ...
- ffmpeg 详解
来源:http://blog.itpub.net/9399028/viewspace-1242300/ FFMPEG详解 认识FFMPEG FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几 ...
- RTMP协议详解(转)
转自<RTMP协议详解(一) (二) (三) > Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器 ...
- 复用TCP连接提升流媒体服务器之间流量转发效率
由于媒体推流客户端所在地域不同.所接入网络运营商不同.就近接入原则等因素,导致不同的视频推流客户端会推流至不同的流媒体服务器(本文主要针对目前WEB或手机的基于TCP的流媒体服务器),在某流媒体服务器 ...
- javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题
前言: 该篇文章旨在帮助刚接触javaCV的盆友系统的认识音视频.javaCV.图像处理相关的体系知识和一些实用的知识. 序: javaCV早期因为内置了openCV库,所以常用来做图像识别应用,现在 ...
随机推荐
- 初探python编码
背景:在实际数据处理中,我们或多或少会接触到中文,如两个dc pack包的diff.使用python对中文数据 处理难免会遇到编码问题. python里面主要考虑三种编码: 1.源文件编码: 如果我们 ...
- ZOJ 3781 Paint the Grid Reloaded
枚举,$BFS$,连通块缩点. 可以枚举一开始染哪个位置,然后逐层往外染色,看最多需要多少操作次数,也就是算最短距离.连通块缩点之后可以保证是一个黑白相间的图,且每条边的费用均为$1$,$BFS$即可 ...
- EasyUI学习总结(六)——EasyUI布局(转载)
本文转载自:http://www.cnblogs.com/xdp-gacl/p/4088198.html 一.EasyUI布局介绍 easyUI布局容器包括东.西.南.北.中五个区域,其中中心面板是必 ...
- PHP:过滤数组中为空的值,并将返回的数组使用数值键,从 0 开始并以 1 递增
首先了解下以下两个函数: 1.array_filter() 函数用回调函数过滤数组中的值. 2.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名.(被返回的数组将使 ...
- JZYZOJ1530 [haoi2013]开关控制 状压 dfs 折半搜索
http://172.20.6.3/Problem_Show.asp?id=1530 元宵节快要到了,某城市人民公园将举办一次灯展.Dr.Kong准备设计出一个奇妙的展品,他计划将编号为1到N的N(1 ...
- 抽象类(abstract class)和接口(interface)的异同
抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类. 接口比抽象类更加抽象,因 ...
- 94.Txx考试
2894 Txx考试 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description Txx是一个成绩很差的人,考试便成了他 ...
- 神勇的产品经理之路系列-10 PD三板斧
一.三板斧的来源及理解 三板斧 古代长兵器的一种,又名“马战斧”.相传为程咬金所用.斧阔五寸,柄长七尺.用法有劈.砍.剁.搂.截.撩.云.片.推.支等. 比喻义:解决问题的方法不多,但却非常管用. ...
- HMACSHA1算法的JAVA实现
import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; publ ...
- javacript总结
前端js总结 //getElementById函数 function $(id){ return document.getElementById(id); } //随机函数不包max //Math.f ...