文档章节

DVB开发之TS流的接收,解码与播放

二进制的忧伤
 二进制的忧伤
发布于 2015/01/12 18:45
字数 1246
阅读 262
收藏 2

一、大概流程

1、cable ts

    信号(signel)--》tuner--》demux-》video,audio解码编码-》输出显示

2、本地ts

    file--》demux-》video,audio解码编码-》输出显示

    如果有解扰逻辑,则需要在demux后对video,audio包解扰处理。

3、对cable ts 的录制即

    信号(signel)--》tuner--》demux-》磁盘--》demux--》video,audio解码编码-》输出显示,即多了一个步骤,需要将解扰的流保存到磁盘中,如果需要播放磁盘中的文件,则将磁盘中的文件数据传给demux,也就是一个逆向过程。当然demux的处理牵涉到section,filter另做讨论。

二、以下将分节讨论

1、TUNER 调谐器

    一般有有线cable,卫星satellite,地面territory 3种type。tuner工作需要知道频率freq,符号率symb,QAM大小,tuner获取到的信号signel有信号强度,误码率,质量,等级等,主要就是锁住某个需要的频点去获取信息(模拟信号-》数字信号)。一般问题就是锁不住频点,拿不到signel。

    目前一般是STB 的tuner某一时刻只能处理一个频点信息,也许以后会启动同时处理多个频点或多个tuner的双xx模式或多xx模式。终端屏幕的越来越大,完全是可以在一个屏上显示多个流的。

2、Demux

    终端主要是解复用,也就是解析自己想要的数据,并分类的处理。这块需要专业的MPEG/DVB相关协议知识,主要是PSI/SI。

一般牵涉到的概念有filter,channel,section,pid等,一般来说一个Channel对应一个PID,对应多个Filter。首现要知道频点,需要tuner到某个频点上去锁频,将模拟数据转换为数字信号。然后数字信号会送到Demux解复用,这一坨数据很多,你需要通过一定的规则去获取你想要的数据。

       filter过滤用,就是tuner拿到的那一坨数据有很多,但只需要将你想要的数据过滤出来。怎么过滤?一般我们要知道我们想要的数据在哪个PID,对应的段数据可能还需要再细分类,那你还需要将section前几个字节(byte)传下去,让demux只过滤出PID下同时匹配section前几个字节数据对应的包数据。比如。。。xx xx xx 01(PID)xx 02 03 04 05 06 07 xx 。。。当前频点拿到的数据很多,但我只需要PID为0x, section前3个字节为02.03.04的表的数据,首先filter会过滤出pid为0x01的所有的数据,然后在这些数据中过滤出前3个字节为02 03 04 的那些数据。再细化分类的话拿到这些数据你就要按SI/PSI协议或你自己私有的协议来了。

     channe通道l我们可以认为是一个容器,或再简单点就认为它是一块内存。这块容器就是用来装我们filter出来的数据的,所以一般channel是挂在filter上的。一个filter可以有多个channels,或一个channel有多个filter,具体要看平台实现需要。

     当然由于硬件特性,signel环境,参数情况,可能获取不到我们想要的数据,不可能一直让filter,channel一直去那那个不存在或有问题的数据的,就需要有一个超时机制:在这个时间段无法拿到数据,通知上层,demux拿不到你想要的数据,你改干嘛干嘛去吧。同时demux释放filter,channel等相关资源。

 demux处理后,filter过滤的数据通过回调或其他方式给上层,上层拿到想要的数据再实现具体的应用。

3、video,audio 编解码

    一般来说解码后就可以输出output了。

    目前常用的数据电视用到的制式有PAL,NTSC等

    视频输出一般有CVBS,ypbpr,YUV,hdmi(高清用的多)等

    视频输出一般用到视频层,静态层(still,IFRAME一般用到)

    输出节目长度宽度比国内一般有4/3,16/9

    常用支持的视频有:MPEG1,2,4;H264等

    常用支持的音频有:MPEG1,2,ADTS,AC3,DTS等

    一般对音视频会分配专门的固定的filter,channel。要播放某个节目,必须通过SI/PSI获取到,freq,vpid,apid,pcrpid等。

播放音视频就是让tuner锁对应freq的频点,demux去过滤出vpid,apid的数据包。其中通过pcrpid可以获取一个时间参考系。        

    vpid拿到视频包,其中有I,P,B帧;

    apid拿到音频包,其中有I,P,B帧。音视频同步就是通过I,P,B帧的PTS去同步pcrpid获取的时间参考系。

本文转载自:http://blog.csdn.net/haomcu/article/details/7076167

二进制的忧伤
粉丝 9
博文 19
码字总数 16902
作品 0
深圳
程序员
私信 提问
DVB-C中的各种PSI/SI表的说明

摘要:本文结合DVB-C的有线数字电视某个TS流中的PSI/SI信息表,具体分析了MPEG-2的PSI信息和DVB的SI信息中的各种表,从而更清晰地了解各个表的功能和作用。 关键词:数字电视;TS流;PSI信息...

地狱的烈火
2013/03/26
774
0
海思Hi3136卫星数字电视信道接收芯片处理器参数介绍

Hi3136是一款同时支持DVB-S(ETS 300 421)、DVB-S2(ETS 302 307)和DirecTV(ITU-R BO.1294 System B)标准的卫星数字电视信道接收芯片。芯片完成卫星数字信号从基带采样到MPEG-TS流输出的全数字...

牛牛00
06/17
0
0
针对android接收udp ts流再次咨询?

首先非常感谢在上次的提问中 地瓜儿 的回复。 android如何接收udp ts流? http://www.oschina.net/question/5174_133153 在此经过几天对接收UDP ts流分析 采用了几种方案 方案一、采用ffmpe...

cuiran
2013/11/21
1K
1
libdvbpsi源码分析(前言)

libdvbpsi 是vlc中的一个解码库。它能解码或解析出所有的节目专用信息(PSI)以及MPEG2 TS流或DVB流中的描述符(descriptor)。 目前能解析的PSI/SI表包括(BAT,CAT,EIT,NIT,PAT,PMT,SDT,SIS,TO...

地狱的烈火
2013/11/08
637
0
直播,音视频编码器和解码器(EasyDarwin)-Android

使用摄像头采集视频数据,并通过MediaCodec进行H264编码,之后打包成RTSP格式并上传的。 TextuewView也提供了一个setTransform方法,该方法接收一个matrix参数,使用该参数对当前的渲染内容进...

shareus
2018/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

移动端的弹窗滚动禁止body滚动

本文转载于:专业的前端网站➼移动端的弹窗滚动禁止body滚动 前言 最近一个需求是弹窗展示列表,显然是需要一个滚动条的,而滚动到底部就会穿透到body滚动,而阻止默认行为是不行的,这样两个...

前端老手
19分钟前
2
0
设计模式 建造者模式和模板方法模式扩展篇

建造者模式和模板方法模式扩展篇 UML 与抽象工厂模式比较 本模式可以看出与抽象工厂非常类似,都是产生不同的产品,怎么区分这两种设计的使用场景呢 - 建造者模式关注的是基本方法的调...

木本本
23分钟前
4
0
CPU 读取cache、内存、磁盘性能

google 工程师Jeff Dean 首先在他关于分布式系统的ppt文档列出来的,到处被引用的很多。 1秒=10^3毫秒=10^6微妙=10^9纳秒=10^12皮秒 读 cache ns 级,读内存100 ns,从内存顺序读1MB 0.25ms,...

SibylY
31分钟前
2
0
在windows virtualbox上安装LEDE

按照 官方指南 安装时遇到若干问题,做一下总结。 一、官方指南链接中的镜像文件安装后报错 snapshots/targets/x86/64 中的 lede-x86-64-combined-squashfs.img 文件安装后,进行网络配置报错...

元谷
40分钟前
3
0
《老子》_安身尘世间,做个明白人

1、无为而无不为 出自《道德经·第四十八章》。【译文】处于无为的境界之中,没有什么不能做到的。 2、知者不言,言者不知。 出自《道德经·第五十六章》。【译文】言语无法表达“道”的真意...

庭前云落
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部