《视频插播的实现》-公开DOC·毕业论文

上传人:zhuma****mei2 文档编号:136497979 上传时间:2020-06-28 格式:DOC 页数:19 大小:396.50KB
返回 下载 相关 举报
《视频插播的实现》-公开DOC·毕业论文_第1页
第1页 / 共19页
《视频插播的实现》-公开DOC·毕业论文_第2页
第2页 / 共19页
《视频插播的实现》-公开DOC·毕业论文_第3页
第3页 / 共19页
《视频插播的实现》-公开DOC·毕业论文_第4页
第4页 / 共19页
《视频插播的实现》-公开DOC·毕业论文_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《《视频插播的实现》-公开DOC·毕业论文》由会员分享,可在线阅读,更多相关《《视频插播的实现》-公开DOC·毕业论文(19页珍藏版)》请在金锄头文库上搜索。

1、 目 录摘 要IAbstractII目 录III第一章 绪论11.1网络视频的发展与现状11.2课题研究的内容11.3章节安排1第二章 流媒体技术32.1流媒体的定义32.2 流媒体的主要应用32.2.1、远程教育32.2.2、视频会议42.2.3、视频监控42.2.4、远程医疗和会诊42.2.5、网络电视42.3流媒体的发展现状52.4 windows media 技术概序62.4.1 windows media技术简介62.4.2 windows media文件的读取62.5 本章小结7第三章 Driectshow开发框架83.1 Directshow 概述83.2 directshow

2、系统架构83.2.1 滤波器(filter)83.2.2 滤波器图(Filter Graph)93.2.3 滤波器图管理器93.2.4 Pin93.3 filter原理103.3.1 filter 概述103.3.2 Filter的注册103.3.3 Filter的连接103.3.4 filter间数据的流动123.4 COM的基本知识123.4.1 COM 简介123.4.2COM基本概念133.4.3 COM接口143.4.4 COM的特性153.4.5 COM 的实现153.5 本章小结18第四章 视频插播系统的设计194.1 电视节目直播系统的整体框架194.2 插播模块的设计204.

3、2.1 filter整体结构设计204.2.2播放状态的转换214.2.3 时间戳的处理224.2.4 广告视频的读取224.2.5 视频插入算法234.3 本章小结24第五章 系统的实现与结果分析255.1 输入输出引脚255.2 传输filter的实现255.3 属性页的实现275.4 实现细节285.5 测试效果285.6结果分析295.7 本章小结29第六章 总结与展望306.1 总结306.2 展望30参考文献32致谢33第一章 绪论第一章 绪论1.1网络视频的发展与现状网络视频系统主要是以电脑为终端,以互联网为传输途径的视频播放系统。在互联网发明之前,用户是通过电视来观看视频节目,

4、可是这种视频节目,对于用户来说可选择性小,而且内容不够丰富。自从有了网络,人们就开始通过网络来传输视频了,这时,人们主要是先从互联网上将要看的视频完整的下载下来,然后再在本地播放,虽然这种途径给了用户很多的选择性,但下载的过程通常会很漫长。于是流媒体技术的出现,彻底解决了这一问题。用户可以不用下载,就可以在网络上欣赏自己喜欢的节目。如今网络视频技术的发展正在改变着人们的生活。人们可以不用去电影院就可以看到高清的大片;不用打开电视机,就可以看到各种电视节目;人们还可以通过网络视频技术进行远程教育,远程监控等等。许多商人从中也看到了商机,他们通过在网络视频中插入客户的广告来获得收益。这样,用户不需

5、要为看视频而花费金钱了,这些花费广告商会为他们买单。如此一来,用户与商人之间取得了双赢。本论文就是要研究一种视频插播的技术。1.2课题研究的内容本课题是一个实际的工程项目,该项目要开发出一个电视节目直播系统,用户可以通过这个系统观看自己点播的电视节目。但为了让这个系统具有商业价值,系统要求能在用户观看的视频中插入广告视频,而且这个插入位置的选择是随机的。因为,节目视频是以流媒体的方式进行传输的,这就需要以流媒体的方法将电视节目与广告进行无缝拼接。本课题主要就是研究这个问题。在这篇论文中,介绍了如何以directshow为基础开发出视频拼接的filter。并讲述了接算法的实现过程。1.3章节安排

6、本论文结合电视节目直播系统的设计,讨论了如何实现视频的无缝拼接。论文的结构如下:第一章是绪论,主要是讨论网络视频的发展现状以及课题的研究内容。第二章主要介绍流媒体技术的应用,发展和开发说明。第三章介绍directshow技术和filter的开发以及与此相关的COM技术。第四章讲述视频插播系统的设计。第五章讲无缝拼接filter的实现以及结果分析。最后一章是总结展望。第三章 Driectshow开发框架第四章 视频插播系统的设计第四章 视频插播系统的设计4.1 电视节目直播系统的整体框架图41电视节目直播系统的整体框架以上系统框架是基于DirectShow平台,每一个模块就是一个Filter。各

7、模块功能说明如下:1.组播接收:负责IP组播信号源(DVB信号)的接收,和SDT表的分析,并把节目名,各种流的PID反馈给应用层。信号源为DVB信号,采用TS流封装传输,MPEG2视频编码,MPEG1 Layer2音视编码。由于这是实时的流,而且组播发送源与接收端间是用专有网线相连,所以,不用考虑传输延时的问题,缓存要设置得尽量小。2.解复用:TS流解复用。可直接使用Elecard公司提供的Filter: MainConcept MPEG Push Demultiplexer。注意,这是一个推模式的Filter。该Filter的输出pin名字命名规则:媒体格式+”(PID ”+流标识+” Pr

8、o# ”+节目号+”)”。媒体格式主要为Video, Audio两种,注意字符间的空格。个人建议,对解复用出来的每一个节目流都先建立一条以上图所示的链路,但在解复用Filter与解码Filter之间,多加一个控制Filter,主要功能是控制数据流的通断,这样就可以更方便的实现选台操作了。3.视频解码器:MPEG2视频解码器,可直接使用Elecard公司提供的Filter:Elecard MPEG-2 Video Decoder。4.音频解码器:MPEG1 Layer2音频解码,可直接用DirectShow内部提供的Filter,或者 Elecard公司提供的Filter:Elecard Aud

9、io Decoder。5.Infinite Tee: 数据拷贝Filter,负责把进来的数复制为多份一模一样的,再发送出去。6.图标叠加:实现位图,字符的叠加,即所谓的广告挂角功能。可直接使用本实验室在“数字电视信号节目源再利用系统”里已经开发的图标/字符叠加Filter。7.ASF生成Filter(1):这个Filter主要封装了WM Format SDK中的生成器和接收器对象,实现了编码,流复合功能,可自定义编码参数,生成ASF格式的文件/流。推接收器把生成器产生的数据推送给媒体发布服务器,采用MMS协议。8.即时预览:WMF中的生成器对象还具有视频编码即时预览功能,提供相应的数据输出接口

10、,但要应用层自己编写呈现代码。9.拼接:节目流插播模块,现改为对解码出来的RGB图片进行插播!个人建议,把插播的源(广告流)规定为WMV格式,这样,就可以利用WMF SDK的读取器进行读取文件,解复用和解码操作,从而简化了广告流的操作!10.ASF生成Filter(2):功能同7所述,主要区别是,本Filter的文件接收器是把生成器的数据保存到一个本地文件中。在WM Format SDK中提供了一个这样的filter,名字叫做 WM ASF Writer,可以直接应用于此。但这个生成器只是生成ASF格式的文件,如果想实现更多的编码格式和文件格式,建议采用Ffmpeg SDK。4.2 插播模块的

11、设计4.2.1 filter整体结构设计因有两路输入,一路是传进来的音频流,一路是传进来的视频流。所以本文的Filter应该有两个输入引脚。相应的输出引脚也要有两个,一个用来输出拼接后的视频流,一个用来输出拼接后的音频流。对于广告视频的读取,为了方便上层开发者调用,程序将相应的方法包装成一个接口:ISplicing,让用户能通过调用其中的OpenAD方法来打开一个本地视频,同时将有广告插入的状态传给filter。为了方便对写完的程序进行调试,还设计了一个属性页:SpotProp,当节目视频播放过程中,用户如果想插入广告,可以通过打开该属性页,在属性页中打开要插入的视频,然后,filter就开始

12、了广告的插入操作了。因为程序中写的filter是一个transform filter。而directshow中有写好的CTransformFilter类可以继承,可惜的是,这个filter默认只有一个输入引脚和一个输出引脚。如果想要改变其结构,增加一个输入音频的引脚和一个输出音频的引脚,就要对CTransformFilter类的一些方法进行重写,而且用起来也不方便。为了灵活的将自己的设计思想表现于代码之中,最终决定让filter继承于CBasefilter。这样,程序中要产生四个引脚类,并自行处理相应的数据传输过程。输入引脚继承于CBaseInputPin类,输出引脚继承于CBaseOutpu

13、tPin。在输入引脚的类型匹配中,视频格式只接受MEDIASUBTYPE_RGB24和MEDIASUBTYPE_RGB32两种类型。对于音频,只接受MEDIASUBTYPE_PCM类型。这些可以通过CheckMediaType方法实现。4.2.2播放状态的转换播放视频时因为视频的插入,会产生不同的状态,在整个播放的过程中,我们必须将各种状态转换的流程分清楚,以便对不同的状态进行处理。在程序中,使用一个枚举成员PlayState来代表各种状态,将其分为:VideoRun,ADSpot,ADVideoOver,ADAudioOver,VideoEnd五种状态。VideoRun就是没有广告插入,仅仅

14、是播放视频的状态;ADSpot是用户插入了广告视频,程序要播放广告的状态;ADVideoOver是当广告的视频部分播放完毕时的状态; ADAudioOver是广告的音频部分播放完毕的状态;VideoEnd是指当节目视频快播放完的状态(之所以要这个状态,是因为在播放广告时我们把从输入引脚的sample存入了缓存中,当输入引脚将节目视频的sample全部读取完的时候,就要将缓存中的sample取出来进行播放。因此将最后的状态取名为VideoEnd)。现在分析三种情况,用上面的几种状态将这三种情况表示出来:第一种情况是:用户一开始就插入视频。图42 用户一开始就插入视频第二种情况,用户在播放节目视频

15、的中间插入广告视频图43 用户在播放节目的时插入视频第三种情况,用户在输入线程结束时插入广告视频图44 用户在输入线程结束时插入广告视频其中第三种情况需要多次插入广告才能出现,在本论文中将不考虑。4.2.3 时间戳的处理在广告视频插入时,因为广告的时间戳是以0开始的,如果不对其进行更改,播放时就出现异常,原因是时间戳不正确。因此我们必须将该时刻正确的时间戳赋给它。每个广告的数据块都有一个开始时间戳和一个结束时间戳,而其正确的时间戳应该是这样的:正确的开始时间戳原来的开始时间戳节目播放的时间正确的结束时间戳原来的结束时间戳节目播放的时间同理,对于插入广告后的节目视频,我们也要对其时间戳进行修改:正确的开始时间戳原来的开始时间戳广告播放的总时间正确的结束时间戳原来的结束时间戳广告播放的总时间为此在程序中,要对节目播放的时间和广告播放的总时间进行保存。4.2.4 广告视频的读取 在播放视频节目时,用户如果想在视频的某个位置插入广告时,就打开filter的属性页,找到要插入的广告视频,点确定

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号