文档章节

DVB开发之节目搜索

二进制的忧伤
 二进制的忧伤
发布于 2015/01/17 18:36
字数 1388
阅读 116
收藏 0

    一、搜索实现目标

    主要是实现简单的搜索,能获取到节目列表,点击列表内容实现播放,整个效果流程如下图所示:

    二、整个实现流程

    结合自己在相关项目中实现他人接口,对整个流程的理解给出下面流程图,可能存在缺陷,总体思路是这样实现的:

    三、搜索中的相关表

    整个搜索基于本地在570频点上播放的一个码流 ,播放需要的码流信息如下:

private static final long freq = 570000000;
 private String freqInfo = "frequency://" + freq
   + "?symbol_rate=6875000&delivery=cable&modulation=qam64&frequency=" + freq;// 频点相关信息
 private String promInfo = "program://450?audio_stream_pid=52&audio_stream_type=audio_mpeg1&video_stream_pid=51&video_stream_type=video_mpeg2&pcr_stream_pid=51&ca_required=false";// 搜索到的节目信息

    上面给出的信息,可以直接拿去解码播放了,我们通过以下各表的解释,看看以上数据是怎么来的。

    1、NIT(Network Information Table)表:网络信息表,NIT传送本网络以及与此有关的其他网络的一些信息。每个网络都有唯一的标识符(network_id)。NIT把一些节目集中在一起,提供调谐接收必须的转发器、频率、符号率、调制方式等参数,供接收解码的自动调谐接收。NIT中对该网络中所有的TS流都有描述,网络中的频点列表就从NIT中获得,每个频点的频率、调制方式等都在该表中有说明。

    transport_stream下描述了所有TS流,802频点下的相关参数,如果要搜索整个网络,下面的频点都要搜索到。这里我们只去搜了570频点。

    2、SDT(Service Description Table)表:业务描述表SDT表给出了传送流中每个节目或业务有关的其他节目的名称和参数,包含某节目属于哪一节目业务组、节目业务类型、节目业务提供者、业务运行状态等信息。

作用:提供业务的相关信息,比如说名称、提供者名称、业务类型等,用户在收看某频道时可以根据需要随时查看这些信息。比较典型的是EPG中频道列表中各频道的名称即从SDT获得;当在收看某频道时,可以查看该频道的提供者名称等信息也是从SDT中获得。

    我们看到这个节目的名称是:电视指南,Service_id=450(0x1c2),这个要保存下来,后面会用到。

    3、PAT(Program Association Table)表:节目关联表,PAT表主要包含频道号码和每一个频道对应的PMT的PID号码,这些信息我们在处理PAT表格的时候会保存起来,以后会使用到

 

    SDT中Service_id=program_number=450(0x1c2),PMT的PID=0x0032,通过这个找到电视指南这个节目的PMT的PID。

    4、PMT(Program Map Table)表:节目映射表,PMT表中包含的数据如下:

    (1) 当前频道中包含的所有Video数据的PID

    (2) 当前频道中包含的所有Audio数据的PID

    (3) 和当前频道关联在一起的其他数据的PID(如数字广播,数据通讯等使用的PID)。

    只要我们处理了PMT,那么我们就可以获取频道中所有的PID信息,例如当前频道包含多少个Video,共多少个Audio,和其 他数据,还能知道每种数据对应的PID分别是什么. 这样如果我们要选择其中一个Video和Audio收看,那么只需要把要收看的节目的Video PID和Audio PID保存起来,在处理Packet的时候进行过滤即可实现。

    获取音视频相关信息,可以实现播放相关节目。

    四、节目搜搜总结

    (1) 搜台:一般来说, 接收机开机之后的第一件事件是:搜台。

     目前关于搜台过程很多, 但是最重要的当然是: 找到一个承载数字节目的频点. 

    一般运营商都会在接收机上设定一个初始频点,(叫主频点,或中心频点),接收机可以根据这个频点的网络参数,如频点,符号率,调制方式,去锁定此频点。

    (2) 获得nit:一般情况下,由于nit里的信息是关系到整个网络的,因此,接收机先从该表入手,获得nit后,这个网络中有多少流,每个流的物理参数等都已获得。之后的其他频点锁定就可以依靠这些信息进行。

    (3)获得sdt:依靠sdt,接收机可以知道频道名,频道类型等信息,可以构建出EPG应用的频道列表。

    (4) :如果这时候,用户选定一个频道进行播放,接收机会根据此频道的service_id,判断其所在的ts流,之后切换到此流中。

    (5): 切换过来之后,寻找PAT, 获得此流所有的PMT,由于serice_id一定和PAT中的progrma_number一样,因此,很容易找到相应的pmt。

    (6) :获得pmt, 从pmt中获得pcr_pid,auido_pid,vidoe_pid之后,将这三个pid设入接收机的解码器中,即可完成视频的播放。

    五、参考文献

    http://www.360doc.com/content/11/1223/17/7399771_174513153.shtml

 

© 著作权归作者所有

二进制的忧伤
粉丝 9
博文 19
码字总数 16902
作品 0
深圳
程序员
私信 提问
libdvbpsi源码分析(前言)

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

地狱的烈火
2013/11/08
637
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
电视流媒体服务器--Tvheadend

Combined DVB reciever, Digital Video Recorder and Showtime streaming server for Linux. Tvheadend 是一个流媒体服务器/中继supporing多种渠道和多种输出格式。它主要是用于接收电视(广...

匿名
2009/07/27
9K
1
条件接收(CA)

解CA过程 相关缩写: CAS:ConditionalAccess System 条件接受系统 ECM:EntitlementControl Message 授权控制信息 EMM:EntitlementManagement Message 授权管理信息 PDK:PersonalDistrib...

nothingfinal
2011/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

程序性能checklist

程序性能checklist

Moks角木
昨天
2
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
2
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
2
0
float浮动

float浮动 float浮动概念及原理: 文档流:文档流是文档中可显示对象在排列时所占用的位置。 加浮动的元素,会脱离文档流,会沿父容器靠左或靠右排列,如果之前已经有浮动的元素,会挨着浮动...

studywin
昨天
2
0
实战项目-学成在线(一)

之前看的黑马程序员实战项目之一,打算以博客的形式写出来,也让自己重新温习一下。 1、项目背景 略(就是当前这东西很火,我们重点在开发,这些就略过) 2、功能模块 门户,学习中心,教学管...

lianbang_W
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部