电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作基于DirectShow的卫星电视多路节目播放技术

基于DirectShow的卫星电视多路节目播放技术

09-08 12:12:42 | http://www.5idzw.com | 电子制作 | 人气:561
标签:电子小制作,http://www.5idzw.com 基于DirectShow的卫星电视多路节目播放技术,http://www.5idzw.com

摘要:首先对MPEG-2系统层协议进行剖析,然后介绍了DirectShow的应用领域和技术要点,最后提出了一种基于DirectShow的多路视音频播放技术,并给出了主要模块的设计方案,以及DirectShow链路死锁问题的解决方法。这种方法应用于多路电视节目的实时播放和节目素材的收集与整理之中,较传统的单路节目播放和采集节约了硬件成本提高了工作效率。
关键字:DVB-S,DirectShow,MPEG-2,解复用

引言

DVB(数字视频广播,Digital Video Broadcasting)是欧洲标准组织提出的电视广播体系。目前我国已经上星的多家省级电视台均采用了其中的DVB-S(DVB卫星传播)标准。DVB-S的信号传输属于典型的多路单载波(MCPC)模型,每个载波可以承载多路各不相同的电视节目。传统采用数字卫星接收系统,只能对DVB-S信号中的某一路节目进行播放和采集。本文提出了一种在通用接收机条件下基于DirectShow技术的对DVB-S传输流进行解复用,提取并播放其中的多路视频节目的设计方案,实现了单监视器条件下对多路电视节目的播放。同时本文所讨论的技术对节目素材收集、网络视频点播以及硬盘录像机等多媒体应用具有重要的借鉴意义。无线SOC开发平台499元 S3C44B0 ARM7开发板378元 S3C2410 ARM9开MPEG-2系统层协议剖析

DVB-S采用MPEG-2作为复用传输和视频编码协议。MPEG-2标准(ISO/IEC 13818)是运动图像专家组MPEG(Moving Picture Experts Group)于1994年推出的编码标准。运用MPEG-2压缩技术既可以获得比较好的压缩效果,又能够保持高清晰度的活动图像,因此MPEG-2广泛应用于数字视频广播和数字多媒体领域。

MPEG-2协议主要分为系统、视频和音频三个部分。MPEG-2的系统层协议描述了多路数据的复用方式,并规定了数据传输的格式。

2.1  传输流结构

MPEG-2系统层定义了两种数据传输方式:传输流(TS,Transport Stream)和节目流(PS,Program Stream)。前者是针对那些容易发生错误的环境而设计,例如通过卫星信道进行传输的DVB-S,后者则是针对错误较少的环境而设计,例如DVD光盘等。传输流是一种面向分组的多路复用流:基本数据流(ES)进行打包成为PES,再经系统复用生成TS数据,最后打包成固定帧长(188字节)的TS包进行传输。每一个TS包只包含一种ES(压缩视频、音频,或IP数据等)。系统层使用一个13比特值作为每个包的标识符,称为PID。在一道传输流中PID与ES是一一对映的关系。TS包的帧结构如图1所示。

图1

2.2       PSI信息和PID映射关系

PSI(节目详细信息,Program Specific Information)包含了多路节目的复用信息,它是解复用操作的依据。PSI包括节目关联表(PAT)、节目映射表(PMT)、网络信息表(NIT)以及条件访问表(CAT)等。

PAT的PID固定的为0x0000,它定义了传输流中特定序号的节目与相关的传输流分组的对应关系。PMT提供了节目号码与组成节目的ES PID的映射关系。NIT属于私有分段,通常包括用户选择的服务、通道频率等映射以及该路节目的供应商和节目名称等信息。NIT的PID系统层未作限定,因此理论上任何有效的PID值都可能作为NIT的PID。CAT的PID固定为0x0001,它出现在传输流中有加密数据的情况下。CAT描述了条件访问系统的类型,和其它用户私有信息。

DirectShow简介

DirectShow是微软公司DirectX框架的一部分。DirectShow的实现是基于COM(组件对象模型)的,因此具有良好的可开发性和可复用性。

DirectShow侧重于多媒体数据的处理。多媒体数据具有数据量大、音像同步要求苛刻、媒体格式众多等特点。DirectShow框架提供了对显卡和声卡等硬件的完整封装,开发者可以不必考虑硬件的工作原理以及驱动编程的具体实现细节。另一方面,DirectShow组件之间的相对独立性使开发者可以专注于处理算法的实现而无需过多考虑组件之间的数据传输问题,因此开发者通过编写相对简洁的代码便可高效地完成较为复杂的多媒体处理。

3.1 Filter链路


Filter是DirectShow中最基本的组成部分,它是完成某个特定功能的COM组件。Filter依次连接起来,构成了Filter链路。DirectShow通过一个称为Filter Graph Manager(链路图管理器)的COM对象管理整个Filter链路。应用程序通过Filter Graph Manager来对链路的状态进行控制,如播放、暂停或停止等。按照功能,Filter可以分为Source Filter、Transform Filter、Rendering Filter三种类型。

Source Filter用于获取数据。数据可以来自文件也可以是实时的数据源如网络、数据采集卡等。

Transform Filter接收Source Filter传送来的数据,对其进行处理,比如解复用操作、音像数据的分离或编码/解码等。

Rendering Filter的主要功能是将数据送往显卡、声卡进行多媒体演示或者输出到文件进行存储。

3.2       工作模式

DirectShow框架定义了两种工作模式:推模式(Push Mode)和拉模式(Pull Mode)。

推模式下,数据被Source Filter主动推向与其相连的Transform Filter,后者再将处理过的数据推向下行Filter。推模式通常使用在实时数据情况下。对于实时数据源,数据传输速率可能不是恒定的(例如网络媒体传输、视频采集卡等),因此采用推模式Source Filter可以根据数据源的实际状况决定如何将数据传给下行Filter。

拉模式下Source Filter被动的提供数据,与其相连的Transform Filter创建一个数据线程主动的向Source Filter索取数据,有一个“拉”的过程。工作在拉模式的Filter一般采用异步读取数据的方式。拉模式通常应用于本地文件播放以及媒体编辑等。

4          设计方案

4.1       原理及流程

卫星信号经天线接收、放大、变频后以中频信号的形式送入通用接收机。通用接收机对信号进行解调和信道编码的解码。输出的传输流数据流,首先经过PSI分析得到完整的PID映射关系,然后根据节目关联表信息将其中的视音频数据分离送往解码器,最终在显示终端上播放。工作流程如图2所示。


图2

从数据采集、分离到显示,可以在一条Filter链路上实现:Source Filter获得接收机输出的传输流数据;解复用Filter实现分析PSI、解复用功能,并将视频和音频数据送往解码器Filter。

完整的Filter链路图如图3所示。

图3

图中每一个方框表示一个Filter。Source Filter没有输入并且只有一个输出。与之相连的是解复用Filter,它有一个输入和多个视频、音频输出。视频数据被送往MPEG-2解码器Filter,音频数据送往音频解码器Filter。解码器的输出连接到了Render Filter。

4.2       Filter工作模式的选择

处理微机通过高速数据采集卡获得通用接收机的输出,因此对于Filter链路来说,数据源是一种实时源。所以选择推模式作为整个Filter链路的工作模式。

5          主要模块的设计和实现难点

5.1       Source Filter

Source Filter封装了采集卡的接口函数,采用双缓冲工作方式,通过轮询察看缓冲区是否已满。当缓冲区满时将数据送往与之相连的解复用Filter。

[1] [2]  下一页

,基于DirectShow的卫星电视多路节目播放技术
关于《基于DirectShow的卫星电视多路节目播放技术》的更多文章