一、大概流程

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获取的时间参考系。

android ts流解码,DVB开发之TS流的接收,解码与播放相关推荐

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

    一.大概流程 1.cable ts 信号(signel)-->tuner-->demux->video,audio解码编码->输出显示 2.本地ts file-->dem ...

  2. Android NDK开发之旅31 FFmpeg音频解码

    ###前言 #####基于Android NDK开发之旅30--FFmpeg视频播放这篇文章,我们已经学会视频解码基本过程.这篇文章就对音频解码进行分析. #####音频解码和视频解码的套路基本是一样 ...

  3. android 判断byte值_Android开发之UDP可靠性传输

    轩羽:Android开发之UDP​zhuanlan.zhihu.com 在这一篇文章里,小编说到UDP是不可靠的,故,我们要自己写一套协议,来使UDP实现可靠性传输,这里,小编和小编的小伙伴一起,写了 ...

  4. SkeyeWebPlayer.js H5播放器开发之webpack编译flv.js实现基础播放器功能(二)

    SkeyeWebPlayer.js H5播放器是由成都视开信息科技开发和维护的一个完善的RTSP.FLV.HLS等多种流媒体协议播放,视频编码支持H.264,H.265,音频支持AAC,支持TCP/U ...

  5. android蓝牙4.0(BLE)开发之ibeacon初步

    一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...

  6. DVB开发之OTA升级

    2019独角兽企业重金招聘Python工程师标准>>> 一.Cable升级流程 整个升级过程分为三个部分,检测,下载,升级,流程如下图所示: 二.升级各流程解释  (1)升级检测: ...

  7. android ndk 多线程mk,NDK开发之Android.mk文件编写

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 现在我们把android稍微写复杂些.在项目根目录下创建一个lib1文件夹 结构如图: test10.h和test11. ...

  8. Android studio中的NDK开发之NDK环境变量的配置(图文教程)

    为什么总是图文教程? 因为本人对抽象事物联想不到位,更喜欢具体能看到的东西,简单明了,一目了然,更是一步到位!如下图: 第一步找到你通过android studio下载好的NDK目录,如果不知道下载到 ...

  9. Android工程师转型Java后端开发之路,自己选的路,跪着也要走下去!

    本文是公众号读者jianfeng投稿的面试经验 恭喜该同学成功转型 目录: 毅然转型,没头苍蝇 制定目标,系统学习 面试经历 毅然转岗,没头苍蝇 首先,介绍一下我的背景.本人坐标广州,2016年毕业于 ...

  10. 慕课大学基于Android P 的移动应用开发之第6章ListView

    1.自定义BaseAdapter适配ListView 1创建布局文件 <?xml version="1.0" encoding="utf-8"?> ...

最新文章

  1. 第二节 数学基础与语言学基础
  2. java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解
  3. 《Android 应用案例开发大全(第二版)》——2.6节绘制相关类
  4. [OS复习]进程互斥与同步2
  5. 小米高管否认鸿蒙,小米参加华为鸿蒙系统实验?小米高管终于回应,网友评论炸了!...
  6. [MEGA DEAL]完整的Java捆绑包(96%折扣)
  7. BBC英语-drama
  8. java与C#对比文章阅读
  9. 复制一段话,发现收费怎么办,下边帮你解决
  10. [Sciter] 资源引用
  11. 第十二周项目2 - 摩托车继承自行车和机动车
  12. 二元二次方程例题_二元二次方程组解法例题
  13. Revit二次开发——引用dynamo中的几何库
  14. DS1302数码管显示时--分--秒(按键可修改时间)
  15. 乐MAX 乐视X900_官方线刷包_救砖包_解账户锁
  16. 还原数据库提示 Unknown collation ‘utf8_general_mysql500_ci’解决方式
  17. 对ip blocks的理解
  18. HTML常用的一些标签(推荐)
  19. CANopen之SDO,PDO
  20. 抽奖类小程序诱导分享复盘

热门文章

  1. php poedit怎么debug,Cakephp的国际化和poEdit的使用
  2. django提供的admin后台增加用户时提示:“Table ‘login.login_user‘ doesn‘t exist“
  3. STM32应用笔记分类汇总,值得收藏
  4. 单例模式中的懒汉模式和饿汉模式是什么?
  5. 锐浪报表 Grid++Report 子报表 Delphi
  6. 电机控制基础之坐标变换(Clark变换及反变换 + Park变换及反变换 + 推导 + 仿真)
  7. 淘宝天猫自动领券优惠券淘口令方法和工具
  8. 小学计算机说课稿模板,小学信息技术说课稿模板
  9. 91地图坐标系矫正教程
  10. 锐捷文件描述错误linux,ubuntu下使用锐捷客户端连接校园网-郑州大学Ruijieclient for Linux下载及配置指导...