基于RTSP/RTP流媒体播放器的实现

本文档介绍了基于DirectShow框架开发的RTSP/RTP流媒体播放器,利用源过滤器、解码器过滤器和表现过滤器处理MPEG4和AAC编码的音视频流。播放器通过RTSP协议进行播放控制,RTP协议处理媒体数据传输,支持数据接收、解码和回放功能。
摘要由CSDN通过智能技术生成

基于RTSP/RTP流媒体播放器的实现

 

本播放器采用DirectShow的框架来开发,内部由一个source filter和相应的音视频解码器filter组成,实现了基于RTSP/RTP协议的MPEG4AAC编码的音视流在线播放功能。

 

2       相关技术

2.1 DirectShow技术简介

DirectShowMicrosoft为开发高性能多媒体应用而开发的底层应用程序接口(API,它是DirectX家族的核心成员之一。DirectShow自身是通过一种系统内置的或程序员开发的过滤器(Filter)来控制和处理多媒体数据的体系结构。该体系结构定义了如何处理和控制过滤器内部及相互之间的多媒体数据流。每个过滤器都有输入或输出针(Pin, 或两者都有。

过滤器(Filter)是DirectShow的基本组成部分,是Filter Graph(过滤器图)中最小的功能模块,DirectShow将多媒体数据的处理分离成不同的步骤,这些不同的步骤由相应的Filter去处理。这样我们可以把不同的过滤器搭配在一起达到我们要求的来处理多媒体数据。过滤器根据实现功能的不同大致可分为3类:

1) 源过滤器(Source Filters)。源过滤器负责得到原始媒体数据。这些媒体数据的来源包括本地硬盘或网络上的媒体文件、各种采集卡等。
2) 转换过滤器(Transform Filters)。转换过滤器的任务是处理从其他过滤器中接收的数据,经过一定的处理后再传递给下一个过滤器。编解码器就是典型的转换过滤器。
3) 表现过滤器(Rendering Filters)。表现过滤器对接收到的数据进行最后的处理。它做的工作有:把媒体数据保存为文件、将数据发送到网络、显示视频、回放音频等。

DirectShow 系统之上是应用程序(Application) 。应用程序要按照程序所要实现的功能建立起相应的Filter Graph ,然后借助于Filter Graph Manager 来控制整个数据的处理过程。DirectShow 能在Filter Graph 运行的时候接收到各种事件,并通过消息的方式发送到应用程序。这样就实现了应用程序与DirectShow 系统之间的交互。

2.2 RTP/RTCP协议介绍

实时传输协议RTP(Realtime Transport Protocol)是针对Internet 上多媒体数据流的一个传输协议,1996 年由IETF( Internet 工程任务组) AVT小组作为RFC1889 发布AVT小组后来对该文档进行了不断改进,于20037月提出了代替RFC1889RFC3550RTP充分体现了应用层分帧这一现代通信协议的设计思想,允许其用户了解、调整甚至制定连续媒体的打包方案,该协议被广泛用于VoIP、视频等实时媒体的传送。RTP 协议包括RTP RTCP(RTP 控制协议) 两个关系十分密切的子协议:(1)  RTP协议-传输具有实时特性的数据;(2RTCP协议-监测QoS 和传送参与传输者的信息。

RTP(实时传输协议) 通常工作在UDP的上层,从上层接收多媒体信息码流(MPEG-4视频) ,组装成RTP 数据包,然后发送给下层UDP ,相当于OSI 的会话层,提供同步和排序服务。故RTP 协议适用于传送连续性强的数据,如视频、音频等,并对网络引起的时延差错有一定的自适应能力。RTCP 为实时控制协议,用于管理控制信息,如监视网络的延时和带宽,一旦所传输的多媒体信息的带宽发生变化,接收端则通知发送端,广播符号化识别码和编码参数,达到控制传输质量的目的。此外,如果底层网络支持多点传播的话,RTP 还支持使用多点传播向多个目的端点发送数据。

关键技术的基本实现

3.1 数据接收Filter的实现

数据的接收就是要编写一个Source Filter,本播放器的Source Filter名称为CRtspFilter,它采用推模式继承自CSource。同时这个Source Filter带有两个输出PIN实例(音视频两个输出),相应的PIN类是CFilterOutputPin,它继承自CSourceStream,需要实现的几个主要API如下:

// 媒体类型的设置相应API

HRESULT SetMediaType(const CMediaType *pMediaType);

HRESUL

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值