77范文网 - 专业文章范例文档资料分享平台

基于Gstreamer框架的smooth streaming协议的插件开发 - 图文(2)

来源:网络收集 时间:2020-04-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

基于GStreamer的Smooth Streaming插件开发

Linux操作系统在多媒体方面落后于其它操作系统的最主要原因。因此设计出一套适用于Linux的开源的多媒体框架以满足日益强大的音视频开发的需求就很有必要了。

1.2 国内外研究现状与趋势

现今社会,带多媒体功能的便携式设备开始走进寻常百姓家,其市场需求也不断扩大,将多媒体与嵌入式系统的结合已经成为了IT行业的热点。数年前,MP3数据随身听风靡一时。随后支持视频播放功能的MP4也逐渐步入广大用户的视线。在现今数字时代中,多媒体与嵌入式系统结合的智能产品更是层出不穷,比如,视频会议系统、数字直播或点播系统、远程教育系统、视频监控系统以及在线网上视频和智能电视等。随着多媒体技术与科学技术的不断发展,针对特定应用的要求,还会继续增加嵌入式系统的外围设备,嵌入式系统的功能和性能在日趋强大的同时,也给嵌入式多媒体应用的开发带来了新的挑战。

以智能手机为例,操作系统就多达数十种,目前就有Windows Mobile、Symbian、Android、Palm、iPhone操作系统Mac X以及linux等众多操作系统。在各种操作系统平台上,都有各自的多媒体播放器开发框架,因封闭系统高昂的专利及技术转让成本,而开源的嵌入式linux良好的性能和成本优势更适合现在时代各大开发商的追捧。特别是基于linux平台上的Android系统,已经占有框架平台中的半壁江山了,成为了产品开发者采用的主流操作系统。

在多媒体开发底层,有三种比较成熟的多媒体框架,微软的Dirctshow、VideoLan计划的VLC和开源社区的GStreamer。Dirctshow是微软公司提供的一套在Windows平台上进行流媒体处理的多媒体框架和开发包;VLC支持众多音频与视频解码器及档案格式,并支持DVD、VCD及各类串流协定具有跨平台的特性,目前它可以在Linux、Microsoft Windows、MacOS X、Pocket PC及Solaris的版本;而GStreamer是为解决linux平台上的多媒体处理而量身定制的强大通用的流媒体应用程序框架。三个框架都被广泛的应用在多媒体播放器的开发之中,但Directshow隶属于Windows平台,VLC具有跨平台性,而GStreamer则是专注于Linux系统的,同时它又是开源的,因此,在linux系统中开发多媒体相关应用程序选择GStreamer框架是明智之举。

2

基于GStreamer的Smooth Streaming插件开发

在流媒体开发过程中,流媒体的传输技术也是多媒体技术中的重点之一。近年来随着多媒体技术、计算机技术和网络技术的不断发展,使视频的实时传输得到了广泛的应用,因此产生了以点播与直播的网络方式的多媒体应用。但这种以音频和视频为主的通过网络方式传输的多媒体应用也给多媒体开发者带了很多问题:第一,如何解决在限定的网络带宽中传输数据量非常大的媒体数据;第二,如何在传输的过程中保证媒体数据的连续性和实时性;第三,如何解决服务器端与客户端的数据同步问题。如何解决这些问题成为目前广泛研究的课题。针对以网络为基础的点播与直播方式的多媒体应用的这些特性,本文研究和实现了一种基于GStreamer框架的smooth streaming通信协议的插件开发。

1.3 课题研究的主要内容

本课题来源于海思平台数字机顶盒(DTC9621)中的流媒体开发项目,我在该项目中主要负责基于GStreamer的smooth streaming协议的插件开发。在实际开发过程中,我采用一种循序渐进的设计方法在Linux平台下实现基于GStreamer框架的smooth streaming通信协议的插件开发:首先,实现基本的网络通信协议开发;然后,实现smooth streaming协议通信;最后,分别实现基于GStreamer的smooth streaming的source元件和sink插件的设计开发。通过在海思数字机顶盒平台上测试,最终能够实现基于smooth streaming通信协议,通过GStreamer框架实现边下载媒体数据、边解析媒体数据,并且能够无失真地完整播放视频。本文章节安排如下所述:

第一章,对嵌入式上的多媒体应用的历史现状与趋势进行描述,以及目前现有的多媒体开发平台进行简单的介绍,最后,描述下本文项目来源。

第二章,主要讲流媒体开发的相关背景知识。首先,从GStreamer多媒体应用程序框架开始介绍;接着,对多媒体数据中的音视频编解码技术进行简单的介绍;最后,描述下本文所采用的流媒体服务器。

第三章,主要描述在流媒体开发过程中的几种通信协议。首先,从基于UDP协议的RTP/RTCP协议开始;然后,对苹果开发的HLS通信协议进行简单的介绍;最后,着重介绍下本文中所采用的微软开发的Smooth Streaming协议。

第四章,主要描述在流媒体开发过程中的设计过程。首先,对最基础的socket

3

基于GStreamer的Smooth Streaming插件开发

通信协议开始设计;接着,设计基于WEB通信机制的HTTP协议;然后,设计本文中所采用的Smooth Streaming协议;最后,在GStreamer框架中实现Smooth Streaming协议的插件开发。

第五章,主要为本项目开发过程中的测试仿真结果以及难点问题解决方案。 第六章,对整个流媒体开发设计做一个总结,并对以后的任务进行规划。

第二章 相关背景知识

2.1 GStreamer媒体框架概述 2.1.1 GStreamer媒体框架基本概念

GStreamer是一个创建流媒体应用程序的框架。其基本设计思想来自于俄勒

冈(Oregon)研究生学院有关视频管道的创意, 同时也借鉴了DirectShow的设计思想。

GStreamer的程序开发框架使得编写任意类型的流媒体应用程序成为了可能。在编写处理音频、视频或者两者皆有的应用程序时,GStreamer可以让你的工作变得简单。GStreamer并不受限于音频和视频处理, 它能够处理任意类型的数据流。管道设计的方法对于实际应用的滤波器几乎没有负荷, 它甚至可以用来设计出对延时有很高要求的高端音频应用程序。

GStreamer最显著的用途是在构建一个播放器上。GStreamer已经支持很多格式的文件了, 包括: MP3、Ogg/Vorbis、MPEG-1/2、AVI、Quicktime、 mod等等。从这个角度看,GStreamer更象是一个播放器。但是它主要的优点却是在于: 它的可插入组件能够很方便的接入到任意的管道当中。这个优点使得利用GStreamer编写一个万能的可编辑音视频应用程序成为可能。

2.1.2 GStreamer的工作原理

GStreamer 是一个功能大的开源的多媒体框架,它对底层的多媒体编解码器和硬件设备驱动进行了抽象和封装,提供了简单灵活的API,降低了上层应用程

4

基于GStreamer的Smooth Streaming插件开发

序开发的难度,并且使得应用程序更易于维护。

GStreamer 框架的功能涵盖了音频的输入输出以及视频的输入输出,因此基于GStreamer 可以开发各种各样的多媒体应用程序,包括音乐、视频播放器、录音机程序,以及移动设备中的照相机软件等。

GStreamer 的一大显著特点就是其基于插件的模块化设计,如下图2-1所示:

图2-1 GStreamer结构图

GStreamer 的系统架构可以分为两部分:核心模块core 和插件部分。

GStreamer 把多媒体数据的输入、编解码处理以及输出都以插件模块集成到系统中。插件以共享库的形式存在,在运行期间由GStreamer 动态加载,并被链接成一个管道。Core 模块则为插件提供了一个集成框架,插件模块之间数据流的处理以及媒体类型的协商。

2.1.3 GStreamer框架中的关键技术

1.元件

对程序员来说,GStreamer中最重要的一个概念就是 GstElement对象。所有上层(high-level)部件都源自 GstElement对象,任何一个解码器编码器、分离器、视频/音频输出部件实际上都是一个 GstElement对象。它是组成管道的基本构件,也是框架中所有可用组件的基础。从 GStreamer自身的观点来看,GstElement可以描述为一个具有特定属性的黑盒子,它通过连接点(link point)与外界进行交互,向框架中的其余部分表征自己的特性或者功能。

按照各自功能上的差异,GStreamer又将 GstElement细分成如下几类:

5

基于GStreamer的Smooth Streaming插件开发

⑴源元件,或称source元件。只有输出端,它仅能用来产生供管道消费的数据,而不能对数据做任何处理,比如从磁盘或者声卡读取数据,然后作为数据源提供给其它模块使用。图2-2为形象化的源元件,我们总是将源衬垫画在元件的右边:

图2-2 source元件形象图

⑵过滤元件,主要有过滤器(filters)、转换器(convertors)、分流器(demuxers)、整流器(muxers)以及编解码器(codecs)等。该元件既有输入端又有输出端,它从输入端获得相应的数据,并在经过特殊处理之后传递给输出端,它可以有多个输出衬垫,比如说分流器。一个典型的过滤器元件的例子是音频编码单元,它首先从外界获得音频数据,然后根据特定的压缩算法对其进行编码,最后再将编码后的结果提供给其它模块使用。图2-3为形象化的过滤元件,图2-4有两个输出衬垫的分流器的形象化图形:

图2-3 滤波元件形象图 图2-4 分流器元件形象图

⑶接收元件,或称sink元件。接收元件只有输入端,它仅具有消费数据的能力,是整条媒体管道的终端。一个典型的接收器元件的例子是音频回放单元,它负责将接收到的数据写到声卡上,通常这也是音频处理过程中的最后一个环节。图2-5为形象化的接收元件:

图2-5 sink元件形象图

6

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Gstreamer框架的smooth streaming协议的插件开发 - 图文(2)在线全文阅读。

基于Gstreamer框架的smooth streaming协议的插件开发 - 图文(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/976863.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: