视频回放

2024-07-20

视频回放(精选5篇)

视频回放 篇1

数字腹腔镜视频回放软件的功能是能及时调入保存下来的视频文件进行播放、暂停播放、全屏显示等。可以回放多种格式的文件,如RM、AVI、MP3、MPEG4等,本系统录像的文件格式默认格式是AVI格式。腹腔镜视频回放软件是电视腹腔镜数字化处理系统的组成部分之一,是根据腹腔镜手术医师的要求设计,视频回放清晰流畅,用户界面友好并且简单直观,符合医师操作习惯。

1 电视腹腔镜数字化处理系统的总体设计

PC系统软件设计是本系统的主要工作,也是本文的重点。软件设计工程采用了MFC的基于对话框工程,这种工程显示界面比较适合于监控类视频软件的界面。从整体功能上划分,可将电视腹腔镜数字化处理系统划分为6大模块,分别为:视频流截获显示模块、图像处理模块、报告打印模块、报告保存模块、视频回放模块、查询模块。整体模块框图如图1所示。

各个模块之间是相对独立的,它们之间只是进行一些数据的传递。因此各个模块可以进行独立编程调试,各个模块调试成功后再进行融合联调。这也是Visual C++编译开发平台的一个特点。

电视腹腔镜数字化处理系统的主界面是一个人机友好的界面,不仅能给使用者带来感观上的舒适感,更能极大地提高使用者的使用效率,基于此考虑本系统软件的主界面设计力求简洁美观,布局有致,各个常用的控制按钮均置于主界面的右方,其他的则放置在菜单栏中。

在没接入腹腔镜信号时四路视频窗口上都显示No Video,有视频输入时,软件能够流畅的显示所获得的视频信号,单击主界面右边的“视频回放”,进入视频回放界面。

2 视频回放软件的设计

视频回放主要是将存储在硬盘中的压缩文件解码显示出来,所以在设计时必须根据压缩文件的格式,进行相应的解码。解码的过程大致是:首先打开编码视频文件,得到视频编码流后,先找到图像开始码,得到图像头。然后寻找帧数据宏块信息,确定帧的编码模式(帧内编码、帧间编码或是没有编码),针对不同模式的编码宏块分别进行相应的解码,解码后的数据传递给显示程序。不像编码程序,解码程序是基于宏块进行操作的,它并不需要把关键帧和非关键帧区分开来解码[1]。

随着计算机技术特别是软件开发应用技术的发展,视频播放的开发变得越来越简便。本系统所选用的开发平台VC++6.0提供了丰富的资源环境和各种不同的开发方法,为用户提供了各种不同的开发方案,如可以采用微软开发的Window Media技术WMF SDK[2]、直接调用Window API函数进行设计[3]、利用Microsoft公司开发的ActiveMovie可视化控件、利用DirectShow媒体开发技术[4]等。本系统直接采用ActiveMovie可视化控件进行设计,用此控件开发者就不需要去详细的理解整个视频的编码解码过程,也不需要自己去写这部分程序,可以直接调用这些控件类封装的函数就可以开发出一个符合用户需要的视频播放软件。

本系统所录制的视频是以AVI格式存放的,故视频回放部分的设计也是以播放AVI格式为主。AVI(Audio Video Interleaved)是微软提出的在Window下使用的视频标准[5]。AVI文件以一系列的位图来存储视频信息,并在文件中加入数字形式存储的数字化视频信息,实际上是由一组信息流组成的文件。AVI文件具有文件短、信息量大的优点,并避免许多传统的动画播放所遇到的问题。

3 视频回放软件的实现

(1)创建视频回放的界面。从工程资源栏中添加一个新的对话框,通过MFC ClassWizard建立对应于此对话框的类命名为CAVIPlayer。

(2)添加可视化视频控件ActiveMovie控件。在菜单栏中选择“project—Add To Project”→“Components And Controls”,在出现的“Components And Controls Gallery”对话框中打开“Registered Active Controls”文件夹,选中“Active Movie Control Object”选项,按“Insert”后关闭该对话框,ActiveMovie控件便出现在控件面板中,调整好控件在对话框中的位置。控件添加成功后就会在工程栏里自动出现一个CRealAudio类,该类封装了实现播放器各个功能的函数。这些函数都是Mircrosoft公司编好封装成控件的,不需要开发者去理解明白对视频进行解码等的内部机制。

(3)往对话框添加按钮,并用MFC ClassWizard向导添加按钮的命令响应函数。

(4)添加代码。在CAVIPlayer类的定义中添加一个CRealAudio类的指针pRealAudio,并把它作为公有成员变量。在打开按钮的命令响应函数内添加如下代码:

此外在CAVIPlayer类初始化时要对pRealAudio指针进行赋值以及寻找AVI文件路径。

视频回放软件设计流程图如图2所示:

视频回放主要是采用了VC6.0中的ActiveX控件,利用里面的RealPlayer控件,因此在系统中还应该安装一个RealPlayer媒体播放器,否则将无法调用相关的资源。AviPlayer类负责创建窗口,CRealAudio类封装了该播放器的所有功能函数。Avi Player类定义了一个CRealAudio对象,然后调用CRealAudio类里面的函数完成播放器的各个功能。

4 结果

进入视频回放软件的应用程序后出现软件的界面,如图3所示:

腹腔镜视频回放软件与其它播放软件相比有自己独特的优势:(1)启动速度非常快;(2)不存在广告;(3)能够保存字幕设置。设计本软件的目的是为了方便腹腔镜手术医师在录像过后能迅速及时地浏览手术的过程,以对手术中的问题进行分析,满足腹腔镜视频回放软件应用于临床教学的要求。

数字腹腔镜视频回放软件在临床教学中有着广泛的应用前景。传统教学主要以参观手术为主,或者和电视图像转播系统辅助教学,由于手术的无菌要求,防止手术室不必要的交叉感染,避免影响手术的进程,以及手术野的范围较小,限制了学生参观学习的人数[6,7]。利用数字腹腔镜视频回放软件,学生可以不再现场参观,等医生手术结束后,利用视频回放功能观看手术的方法和过程。

参考文献

[1]董志国,李式巨.基于DSP的MPEG-4视频解码回放[J].计算机工程与设计,2005,26(8):82-85.

[2]周向阳,章云.基于VC++和WMF SDK的视频播放器的实现[J].现代商贸工业,2007,19(2):151.

[3]于晓康,柴乔林.基于VC++的可控视频回放系统[J].计算机应用,2003,23(12):36-38.

[4]戴雯惠.基于VC++与DirectShow技术的媒体播放器的设计与实现[J].甘肃科技纵横,2005,34(6):28-29.

[5]张程,朱庆生.采用流媒体技术实现网络中的视频和音频传播[J].计算机工程与设计,2002,23(2):57-59.

[6]叶福丽,杨玉星,张文.多路腹腔镜数字化处理系统在临床教学中的应用[J].中国医疗设备,2009,24(1):56-57.

[7]叶福丽,杨玉星.多路电视腹腔镜图像管理系统的设计与实现[J].医疗卫生装备,2008,29(11):63-65.

[8]陶林,李文元,等.基于DirectShow实现硬件视频回放[J].交通与计算机,2005(2):93-95.

[9]乔纳森·阿克利,等.交互式视频回放的系统和方法:迪斯尼实业公司[P].2006-07-05.

[10]赵丽鲜,苏鸿根.MPEG-4视频编解码器设计实现与性能优化[J].计算机工程与设计,2009(12):3001-3004.

视频回放 篇2

设计意图:

自2004年全国卷“推广普通话”公益广告题闪亮登场,就引起了人们浓厚的兴趣。2005年全国卷、山东卷,2006年北京卷、辽宁卷等再次出现此类题型,可见其热度不减,2008年依然是学生的备考题型之一。

公益广告语要求文字简洁,有文采,有创意,有感染力,此类题型的演练有助于学生语文综合能力的提高。教学重点:掌握创作技巧,并尝试创作。教学手段:多媒体课件 教学方法:讲练结合 教学时间:一课时 教学步骤:

一、高考题回放:使学生对此类题型有一个感性的了解。

高考题回放(投影1):

请拟一条以“食品安全”为内容的公益广告词

(在10—20个字之间)(2005年山东卷)参考答案:民以食为天,安全重泰山

(投影2):请结合湖北人文、地理特点,为湖北省旅游局拟写一则推介湖北旅游资源的广告词。内容中应包含三峡、武当山和黄鹤楼。(不超过40个字)(2005年湖北卷)参考答案:游长江三峡,赏水天美景;

上武当名山,入空灵仙境; 登黄鹤楼,事业更上一层楼。

二、经典广告语赏析

(投影3):

1、家是放“心”的地方(某房地产广告)

2、好东西要与好朋友分享(麦氏咖啡广告)

3、奋斗,男人的目标,劲霸男装(服装广告)

4、同一个世界,同一个梦想(2008年奥运会主题口号)

5、给北京一个机会,还世界一个奇迹(申奥口号)通过赏析,激发学生兴趣,为下一步指导方法及热身练习张本

三、激活思维,指导方法

(一)思路点拨(写什么):瞄准目标,击中十环

教师点拨:创作时要把握本质,主题鲜明。这一点和流行广告语不一样,流行广告由情景画面和广告词两部分组成,即使广告词是“模糊”的,如“年轻,没有什么不可以”(“清逸”洗发水广告词),但一看画面就一目了然。而我们要求写的只是广告词,要求仅仅靠广告词就能彰显主题,所以广告词必须鲜明、醒目。

(投影4):(1)民以食为天,安全重泰山(食品安全)

(2)同一个世界,同一个梦想(2008年奥运会主题口号)(3)保护绿色环境,拥有绿色心情(绿色环保)(4)地球上最后一滴水,就是人的眼泪(保护水资源)

这些广告词都是快捷入题,一语中的。(启发学生发散思维,举出相似例子)

(二)锦囊妙计(怎么写):真情沟通,魅力无限

教师点拨:“感人心者,莫先乎情”(白居易),以真为贵,以情动人,才能产生强烈的感召力和良好的宣传效果。

(投影5):(1)草木有情,小鸟有意,请爱护你的家园(环保)

(2)别忘了常回家看看(敬老)

(3)善待老人,就是善待明天的自己(敬老)(4)救救沉迷的孩子,帮帮伤心的妈妈(远离网吧)

使学生明白:真情是人与人之间沟通的桥梁。(鼓励学生再举几则“以情动人”的例子)

(三)借助修辞,点石成金

(投影6):(1)比喻:血是温馨的邮票,传递着人间真情(义务献血)

(2)拟人:小草对您微微笑,请您把路绕一绕(环保)(3)对偶:给北京一个机会,还世界一个奇迹(申奥口号)(4)排比:买烟是失误,吸烟是错误,戒烟是觉悟,再吸是执迷不悟。(戒烟)

2分钟练习之一:小组讨论,学生发言,指明下列广告语的修辞(投影7):(1)热心献社会,真情暖人间(青年志愿者)(2)“艾”与被爱,连着红丝带(关爱艾滋病患者)(3)这只碗碎了,你就不吃饭了?(下岗再就业)(4)一张长长的脸可以熏黑任何一片晴朗的天空(恶劣的情绪具有污染性)

学生讨论后归纳:(1)对偶(2)双关 借代(3)比喻 反问(4)比拟 比喻

(四)巧设角度,别有洞天

教师点拨:好的广告词要新颖,有创意,才能以少胜多,脱颖而出。2分钟练习之二:(投影8):插入“五福娃”的图片,请学生分析其设计特点 学生讨论后明确:吉祥物由五个分别以鱼、熊猫、奥运圣火、藏羚羊、京燕为创意的“中国福娃”组成,分别被称为“贝贝、晶晶、欢欢、迎迎、妮妮”。角度新颖,内涵丰富。(此题不展开,学生课下可以搜集相关资料)(投影9):要求学生分析其创作角度,讨论后归纳(1)“虚拟世界,虚度人生。”

(明确:在虚字上做文章,警示网虫们虚度了多少宝贵的光阴。)(2)“摇头丸,生命经不起这么摇。”

(明确:抓住了毒品危害健康这一点,从人文关怀的角度,真诚规劝。)(3)“同升一面旗,共爱一个家。”

(明确:由国旗让人想到国家,彰显了爱国主题。)(4)“爱我,追我,千万别吻我!”

(明确:从车的角度,用拟人和双关手法,生动活泼,比起“新手上路,保持车距”要好多了。)

2分钟练习之三:下列交通安全的广告语,从哪五个不同角度切入的?(投影10):

1、手握方向盘,时刻想安全!

2、司机一杯酒,亲人双泪流!

3、爱我,追我,千万别吻我!

4、你走你的柏油路,我走我的人行道

5、交通法规人人遵守,文明城市处处安全.教师总结:(投影11)写作金钥匙

瞄准目标,击中十环

真情沟通,魅力无限

借助修辞,点石成金 巧设角度,别有洞天

四、牛刀小试

(投影12):请以“安全生产”为内容,拟一条公益广告词。要求主题鲜明,感情真挚,构思新颖,语言简明。(10-20字之间)参考答案:

(1)多一份安全投资,多一份生命保障(2)保障安全生产,构建和谐社会

(3)珍爱生命,不做违章事;心中有法,不赚昧心钱(以上环节课内完成)

五、布置作业,促进能力迁移

(投影13):请以“公民义务献血”为内容,拟一条公益广告词。(要求同上)参考答案:

(1)血是温馨的邮票,传递着人间真情

(2)一滴血,拯救一个生命;一片心,温暖一个社会(3)无偿献血,是用生命点燃生命

视频回放 篇3

足球运动被人们誉为“世界第一运动”, 随着足球走进校园, 它以其独特的魅力深受广大学生的青睐, 但是对于如何提高学生的足球技术水平, 尤其是怎样提高足球专业学生的技术水平就成为了教师关注的热点话题, 而且每年都有大批足球专业的学生步入社会, 因此如何培养高质量足球专业的毕业生也成为了教学的关键。由于受传统教育思想和方法的影响, 体育教育专业课程的教学方法仍然没有走进创新的范畴, 致使足球技术教学质量难以大幅提高。

1.1 从足球自身角度出发

2004年9月教育部办公厅下发了关于《普通高等学校体育教育本科专业主干课程教学指导纲要》的通知, 其中对足球技术课设定的目标是:通过足球课程的学习除了使学生掌握足球基本知识和技术动作外, 还要在足球活动中结合发展身体、发展心理品质和社会适应能力。同时还要具备从事足球教学和如何指导大众从事足球运动的能力, 并且懂得如何运用足球运动达到强身健体的目的。因此, 必须采用先进的教学方法来实现上述目标。

足球传统的教学方法仅仅是由教师先讲解、做示范动作, 然后学生进行模仿练习, 这种教学方法不利于学生快速正确的形成动力定型, 采用“视频回放”能更好的把学生在一次练习过程中的技术动作完全展示在学生面前, 通过老师的指导分析和学生的自我评价分析, 这能使学生在最初的学习中掌握正确的技术动作, 所以对于初学者而言将“视频回放”引入足球教学可以更好、更直观的让学生评价自己的技术动作和表现力, 从而为以后的技术学习打下坚实的基础。

1.2 从认知角度出发

在传统的术科教学中, 都是教师先讲解, 后示范, 然后学生模仿练习, 接着教师指点共性的技术错误, 学生再继续练习。从认知的角度分析, 这种方式往往会造成视觉和听觉认知过程中的“断层”, 不利于技术动作的全面理解和掌握。认知心理学专家实践验证, 读文字可记住其内容的1 0%, 听语音可记住其2 0%的内容, 看视频图像可记住3 0%的内容, 边听边看可记住至少5 0%的内容。也有研究表明, 人们从语言获得的知识能够记忆1 5%, 而利用视觉和听觉获得的知识可高达6 5%。

1.3 从心理学角度出发

在社会心理学中, 有一种现象称为“观众效应”。所谓观众效应, 是指在有他人在场时操作成绩产生的变化。 (张力为, 毛志雄2 0 0 7) 。一般情况下, 在有老师听课的情况下, 学生会比平时听课更认真, 练习更主动, 如果在课堂上装备一台摄像机也就相当于发挥了教师听课的效果, 能调动学生保持高昂的学习情绪和上课的积极性, 主动性和自觉性, 能更有效的达到“教”与“学”的目标。

2“视频回放”在足球技术课教学中的运用方式

2.1“视频回放”在体育教育专业足球技术教学中的实施方法

用一架普通的摄像机对准上课的学生, 记录学生上课的表现。教师依然是按传统的教学方法讲解——示范——学生自主练习——教师纠正错误动作这一过程上课。在学生基本掌握该节课所学动作后, 让每个学生 (也可根据学生人数适当分组) 在镜头面前练习2-4次。课后, 由教师对上课的视频进行裁剪, 挑选出每位 (每组) 学生最好的技术动作进行慢镜头显示, 同时, 教师裁剪出该课中某个 (某组) 动作比较规范的学生 (1-2人) 作为示范以发挥学生的榜样作用。教师最后裁剪出的视频时间控制在20分钟左右, 这段视频在下节课上课之前20分钟播放给学生看, 播放结束后, 同学老师进行交流, 并就出现的不规范动作在此堂课上重点强调, 如此反复这个过程。

2.2“视频回放”教学遵循的原则

2.2.1 循序渐进原则

足球技术教学同样要注重循序渐进的原则, 因为足球技术教学首先要把培养学生的球感作为教学的首要任务, 尤其对于初学者则显得极为重要。但球感和技术动作的协调性培养需要一个过程。因此在运用“视频回放”时, 要循序渐进, 保证学生下一技术动作的学习是在前一动作高质量完成的基础上进行的。

2.2.2 启发性原则

启发的关键是使学生的思维活跃起来, 通过观察视频理解学习的过程, 引导学生学会发现做动作过程中的不足并结合教师的讲解学会分析动作要领, 循序渐进, 在教学实践中激发和培养学生积极思考及其解决问题的能力。

2.2.3 一致性与激励性原则

在“视频回放”过程中, 不规范学生的动作会全面展现在教师和同学们的面前, 这些学生可能会感到沮丧, 因此要求老师多说些鼓励的话, 此时教师激励性的话语是学生学习前进的动力。

3“视频回放”教学对体育教育专业足球技术教学的促进作用

3.1 有助于调动学生学习的主动性, 激发学生学习的兴趣, 活跃课堂气氛

在足球技术教学的同时将一架摄像机放在课堂上实际相当于激发了学生的好奇心理。摄像机就是一个新的刺激物, 帮助教师给学生施加新的刺激, 形成新的条件反射。也就是说, 教师可以借助摄像机这一新的教学方法激发学生学习的主动性和兴趣。

3.2 有利于提高反馈的效果和效率

体育教育专业足球技术教学讲究的是整体动作的协调、准确、力度适中等。从信息学的理论来看, 教学的过程是一个信息的反馈过程。传统的教学方法, 其反馈过程一般来源于教师, 教师通过观察、分析、总结。最后通过语言向学生讲述学生练习过程中存在的错误和不足, 学生也只是被动的接受信息。如果一个教学班的人数较多, 会导致教师的注意力分散, 反馈缺乏针对性, 学生很难得到及时准确的学习效果反馈。运用摄像机把学生的练习动作拍摄下来, 既可以帮助教师对学生的学习进行反馈, 还可以引导学生对自己的动作进行评价和调整, 加深学生对动作的理解程度, 逐步学习强化正确动作, 纠正错误动作的方法, 帮助学生尽快掌握动作要领, 提高技术水平。

3.3 促使教师和学生角色和作用的转变

教师借助“视频回放”相当于开放了自己的课堂, 给了学生更多学习的时间和空间。学生零距离的观摩自己的技术动作, 零距离的与老师交流, 无意间拉近了教师和学生的距离, 对加快学生角色的转变和专业的提高具有积极的意义。教师围绕学生的兴趣进行教学, 在共同交流与学习过程中教师也实现了由单一的“传授者”向“合作者”、“学习者”和“引导者”转变, 有利于提高课堂教学的质量。

4“视频回放”教学在足球技术教学应用中的不足

任何事物都具有两面性, 引用“视频教学”也会给足球教学带来不足。一方面:难以兼顾不同层次的学生。由于学生的接受能力、身体素质和表现能力等方面存在差异, 在足球技术教学过程中难免会造成学生掌握动作的不一致性。但为了跟上教学进度, 不可能过多的耽误课堂时间对个别学生进行专门训练, 因此可能导致在课堂上出现“断层”现象。另一方面:“视频回放”法对足球教师的计算机视频处理能力要求较高, 且视频裁剪工作一般会是在教师的课余时间进行的, 如果从事足球技术教学的教师缺乏相应的计算机操作技术, 或缺乏学习、创新的热情, 不但不能发挥其应有的作用, 而且会限制了“视频回放”教学法在足球技术课堂上的应用。

5 结论

在体育理论中应用多媒体教学已经极为普遍, 而将其应用于术科教学中却极为少见。现代多媒体与术科教学相整合是足球技术教学方法改革的一种趋势。运用“视频回放”教学法有助于学生对自己动作的完成过程进行及时的评价与整理, 更能有效地促进学生和学生之间, 学生与教师之间的互动与交流。相信只要教师在运用此方法时能做到扬长避短, 充分发挥教师自身的素质和能力, 足球技术教学的效果定能得到巨大的提升。

参考文献

[1]王耀东, 杨卓.“视频回放”方法在排球教学技术中的应用研究.北京体育大学学报, 2010, 33 (8) .

[2]王雅明, 论现代教育技术在体育教学中的运用[J].沈阳师范大学学报, 2004, 28 (6) :68~70.

神州11发射直播回放 篇4

这是因为未来的载人空间站轨道位置较高。过去神舟十号与天宫一号对接时,轨道高度是343公里,而神舟十一号和天宫二号对接时的轨道高度是393公里,比过去高了50公里。这与未来空间站的轨道高度基本相同,飞行也更加接近未来空间站要求。飞得更高对飞船的要求也更多,这意味着交会对接时飞船的控制与神舟十号不一样,还需要连续变轨。

实验更多

这是因为这次飞行要进一步考核神舟飞船作为人员物资天地往返运输工具的性能。任务期间神舟十一号要进行4项在轨试验项目:包括宽波束中继在轨验证试验、变轨控制验证试验、帆板任意偏置角跟踪太阳功能验证试验、微生物控制试验。通过这些试验进一步验证飞船设计功能,获取和积累载人环境相关的飞行试验数据。

时间更长

这是是因为此次任务中,航天员需完成组合体30天中期驻留任务,比神舟十号的15天翻了一倍。在这一个月中,要保障航天员的生活健康,也要保证航天员执行飞行任务的能力,飞船在驻留、应急、返回方面的保障能力就需要比过去更强。

视频回放 篇5

在Windows平台的流媒体系统中,由于Windows Media Player与Windows操作系统捆绑以及Windows操作系统的普及程度,依赖Windows Media Player作为媒体系统的客户端呈现给用户可以使得用户友好性得到增强,也可以节省开发新媒体播放器的成本,所以很多应用于Windows平台下的流媒体系统都是利用Windows Media Player作为媒体系统的终端。要使得以Windows Media Player作为客户端的ASF流媒体系统能够采用H.264编码视频格式,就必须要有支持ASF容器中H.264视频播放的插件。通过探索,作者寻找到一种利用FFMPEG,对其进行DMO[3]封装实现配合Windows Media Player支持H.264视频播放的插件的方法。

1 H.264简介

H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式,它即保留了以往压缩技术的优点和精华又具有其他压缩技术无法比拟的许多优点。

(1) 低码流(Low Bit Rate):

和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3;显然,H.264压缩技术的采用可以大大节省用户的下载时间和数据流量收费。

(2) 高质量的图像:

H.264能提供连续、流畅的高质量图像(DVD质量);

(3) 容错能力强:

H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具;

(4) 网络适应性强:

H.264提供了网络适应层(Network Adaptation Layer), 使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等);

H.264标准还在不断发展,SVC(scalable video coding)[4]和MVC(multi-view coding)[5]添加作为H.264的修正的标准化工作正在进行中,因此H.264的功能将更加丰富,适用更多应用场景。我们有理由相信,H.264标准将会受到业界的广泛应用,因此实现支持H.264播放的插件对Windows平台流媒体应用非常有意义。

2 DMO介绍及应用

在Windows 媒体应用中,主要包括DirectShow[3]和DMO。DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布,为多媒体流的捕捉和回放提供了强有力的支持。

DirectX媒体对象(DirectX Media Objects,简称DMOs),是微软提供的另一种流数据处理COM组件,与DirectShow filter相比,DMO有以下优点:

(1) DMO比filter实现的功能要少很多,这使得DMO“体积”很小;

(2) DMO使用起来比filter更有灵活性。DMO的使用不需要filter graph,应用程序可以直接与DMO交互。而DMO也可以通过一个DMO wrapper filter工作于 DirectShow环境。

(3) DMO总是同步处理数据,不像filter有独立的数据传送线程,需要考虑多线程编程问题;

(4) 与传统的编解码管理器ACM、VCM相比,用DMO开发的编解码器是基于COM的,更易于扩展。并且DMO支持多个输入和多个输出;

(5) DMO不需要像filter一样分配数据传送的内存,而有DMO的使用者负责;

(6) DMO是一个独立功能模块,不需要像filter一样连接成一条链路;

(7) DMO不需要像filter一样将数据“推”下去,数据的输入输出都是由DMO的使用者完成的;

所有这些优点,使得DMO成为微软对于Encoder和Decoder开发的重点推荐模式。DirectX 9.0 SDK中,微软更是把DMO从DirectShow中分离出来,而对于一些transform filter,微软也推荐用DMO的方式来替换。因此,本文选择用DMO来封装H.264视频解码插件。

3 FFMPEG

FFMPEG是一套完整的录制,转换和流化音频和视频的开放源代码的解决方案,其包括以下几部分组成:

(1) libavcodec,一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的。

(2) libavformat,一个包含了所有的普通音视格式的解析器和产生器的库,该库里边包含解码H.264的codec。

(3) ffplay,用 SDL和FFmpeg库开发的一个简单的媒体播放器。

(4) ffserver,基于HTTP用于实时广播的多媒体服务器。

(5) ffmpeg,视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件。

FFMPEG是基于linux平台上开发的,想要移植到VC平台上需要进行很大的改动,比较困难。幸好在Windows平台下可以利用MinGW 编译FFMPEG代码,生成avformat.dll, avcodec.dll , avutil.dll三个动态连接库,可供应用程序使用。FFMPEG的高性能设计,以及其包含的经过了优化的H.264解码算法,使得FFMPEG解码H.264视频的速度相当快;在H.264开源解码器评测中,FFMPEG的解码速度最快。因此利用FFMPEG实现播放插件,解码速度快,占用内存小。

4 代码实现

代码实现的主要任务是将FFMPEG封装在DMO对象中,由DMO对象与Windows Media Player协商媒体类型、对象连接以及传递媒体数据,而FFMPEG负责将输入到DMO中的未解码的H.264视频帧解码成可以显示的RGB格式的视频帧,然后交由DMO输出端传送予Windows Media Player进行显示。

在微软的DirectX SDK中,为开发DMO提供了一个IMediaObjectImpl模板类,使得开发DMO比较容易。 实现程序定制的DMO,只需派生此模板类,实现17个以Internal开头的函数。

4.1 FFMPEG库的使用

使用FFMPEG库,首先应该将avcodec.dll,avformat.dll,

avutil.dll加入到工程中,并且在文件头中需要包含avcodec.h头文件;

另外使用FFMPEG库的函数之前,需要对FFMPEG库进行初始化,因此本实现中是在DMO对象的构造函数中实现FFMPEG库的初始化。通常的操作是通过avcodec_init()以及avcodec_register_all()初始化并注册FFMPEG所有的编码解码器;然后通过CODEC_ID_H264指示码寻找到本DMO使用的H.264解码器,即:

codec = avcodec_find_decoder(CODEC_ID_H264).

然后做编解码器上下文初始化及申请空间保存解码图像,即:c= avcodec_alloc_context();

picture= avcodec_alloc_frame();

最后是根据得到的H.264 codec以及解码上下文结构去打开H.264解码器,使其能够工作,即:

avcodec_open(c, codec);

具体代码可以参照ffmpeg源代码中的output_example.c中的示例代码。

4.2 InternalCheckInputType函数

该函数的主要目的是检查DMO对象是否适合于此输入的媒体类型的解码,如果检查通过那么该DMO才可以用于此种类型视频的解码。本设计的DMO中实现的是H.264视频解码插件,因此DMO接收的输入媒体主类型是视频,而媒体subtype则是H.264格式;所以只有当媒体类型符合此限制时,函数返回TRUE,检查通过。

4.3 InternalCheckOutputType函数

该函数的目的是检查DMO对象是否能够产生此种媒体类型的视频输出,如果检查通过那么该DMO才可以用于产生此类视频输出。解码器的目的就是将压缩的格式解码,成为无压缩可以直接显示的格式;在这里,我们选择最普通的RGB24格式。

4.4 InternalProcessInput函数

该函数的作用是输入一个未解码的图像帧,需要做的工作就是把帧对象保存,以待应用程序在DMO输出端请求图像输出时,对此输入图像帧执行解码操作,属出解码图像。因为图像帧在图像中是通过C++的COM对象IMediaBuffer来保存的,因此我们只需要IMediaBuffer的接口函数GetBufferAndLength得到输入的图像存放的内存块指针和大小,然后增加COM对象的引用计数,最后设置相关的时间戳即可。

4.5 InternalProcessOutput函数

该函数的作用是将上次输入DMO的未解码的帧调用FFMPEG中的解码 函数进行解码,输入YUV格式的视频,然而我们最终要求输出的视频格式是RGB格式的,因此还必须将YUV格式的视频转换成RGB格式的视频。幸好的是FFMPEG中有高度优化的函数YUV2RGB供我们使用。使用本DMO的应用程序会向本函数请求输出解码图像,因此在这里我们调用FFMPEG中的解码函数对输入图像进行解码,把解码重建后的图像输出,交由应用程序进行播放。具体的代码如下:

len = avcodec_decode_video(c, picture, &got_picture,outbuf_ptr, size);//调用FFMPEG媒体库的解码函数进行解码

YUV2RGB(picture->data[0],picture->data[1],picture->data[2],pOutData,pic_width,pic_height); //调用FFMPEG媒体库的格式转换函数将YUV格式视频转换成RGB格式

4.6 DMO注册函数

Windows Media Player播放视音频时,会根据视音频的格式到系统注册表中寻找到相应的解码器,如果找不到合适的解码器,Windows Media Player则播放不正常甚至无法播放。所以DMO程序需要在系统中进行注册,而DMO本身是一个COM程序,COM程序的注册在DllRegisterServer中进行。因此在DllRegisterServer函数中通过接口函数DMORegister在操作系统注册表中注册本DMO的信息。设置DMO的信息为只有一个输入端,输入的是H.264格式的视频;设置DMO的信息为只有一个输出端,输出的是RGB格式的视频。如此设置以后,当Windows Media Player播放ASF中的H.264视频时可以顺利地寻找到本插件,成功播放ASF容器中H.264格式的视频。

//定义输入媒体格式

DMO_PARTIAL_MEDIATYPE mt_input;

mt_input.type=MEDIATYPE_Video;

mt_input.subtype=MEDIASUBTYPE_H264;

//定义输出媒体格式

DMO_PARTIAL_MEDIATYPE mt_output; mt_output.type=MEDIATYPE_Video;

mt_output.subtype=MEDIASUBTYPE_RGB24;

DMORegister(L“DMO Sample”, //DMO对象名

CLSID_Sample, //DMO对象的序列ID DMOCATEGORY_VIDEO_DECODER, //视频解码器目录

0,

1, //输入媒体类型个数

&mt_input, //输入媒体类型格式

1, //输出媒体类型个数

&mt_output); //输出媒体类型格式

到此,利用FFMPEG封装在DMO对象中构造一个能支持Windows Media Player播放ASF容器中的H.264视频播放插件所需要做的工作已经完成。

5 结束语

鉴于目前缺乏配合Windows Media Player播放ASF媒体容器格式的H.264视频播放的免费插件,本文介绍了一种简单实现此插件的方法,依赖于DMO高效性以及FFMPEG编解码库中性能优化的H.264解码算法,使得插件解码速度快,内存损耗小。利用此插件,Windows平台上的H.264流媒体系统可以利用Windows Media Player作为媒体系统的客户端,节省开发新播放器的成本,大大增强了系统的用户友好性。

参考文献

[1]Draft ITU-T recommendation and final draft international standard of joint video specification(ITU-T Rec.H.264/ISO/IEC14496-10AVC)in Joint Video Team(JVT)of ISO/IEC MPEG and ITU-TVCEG,JVTG050,2003.

[2]Microsoft Corporation.Adranced Sytems Format(ASF)Specifrcation,Revision01.20.03,December2004[5].

[3]陆其明.Drrectshow开发指南.北京:清华大学出版社,2003.

[4]T.Wiegand,G.J.Skuivan,J.Reichel,H.Schwarz ancl M.wien,eds.Jornt Draft7,Joint Video Team.Doc.JVT-T201,Klagenfurt,Austria,July2006.

上一篇:种子市场监督与管理下一篇:实时损耗分析