说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Visual Basic环境下Video/ Audio压缩数据流播放技术

HTML文档下载 WORD文档下载 PDF文档下载
Visual Basic环境下Video/ Audio压缩数据流播放技术
国防科技大学
张汉华 计科峰
---- 1. 引言

---- 银行的数字化监视监控系统是目前比较有市场及应用前景的开发项目,基于不同的MPEG采集卡与硬件外围设备开发的监视监控系统在国内外都有比较成型的技术。为了满足实时监视、实时采集压缩、随时回放、压缩数据流的传播等具体要求,在该系统中使用了一种用于网络视频/音频多点传输(视频广播)的视频数据采集卡,提供AVI(MPEG I Frame压缩编码)采集、MPG采集。发送端广播MPEG流,接受端接受MPEG流并显示,网络传输采用WinSock 2 IP-Multicast。如果本机为发送端,网络上另外任何一台PC可以作为接收端。只要指定不同端口号,同时可以有多台PC机作为发送端,多台PC机作为接收端接收不同发送端的视频数据,也可在传送数据的同时在本机将数据存为MPEG文件。本文主要介绍在VB的环境下开发MPEG卡采集的Audio/Video数据播放的一些编程技巧。

---- 2. MPEG的内容与发展简介

---- 多媒体信息主要包括图像、声音和文本三大类。其中视频、音频等信号的信息量是非常大的,而且这些信息的表达方式、输入、输出的要求也各不同。对这些数据进行有效的表达和适当处理是很重要的,它使多媒体信息压缩技术成为多媒体通信领域中的关键技术之一。ISO与IEC于1988年联合成立的MPEG(Moving Picture Expert Group),致力于运动图像及其伴音编码的全球标准化工作。它包括MPEG系统:MPEG视频、MPEG音频。为了推动社会由文本信息时代向多媒体信息时代过渡,ISO继MPEG-1、2和4后又推出了MPEG-7。

---- MPEG-1制定于1993年(ISO/IEC 11172),是针对1.5Mbit/s以下数据传输率的数字存储媒质运动图像及其伴音编码的国际标准。视频压缩率为26:1。MPEG-2制定于1995年(ISO/IEC 13818),是CCIR601建议的图像质量DVB、HDTV和DVD制定的3-10Mbit/s的运动图像及其伴音编码的国际标准。与前面基于信息论的波形编码理论,针对一定比特率的视频、音频编码的MPEG标准不同的是,于1998年11月公布的国际标准MPEG-4更加注重多媒体系统的交互性和灵活性。它引入AV对象(Audio/Visual Objects),使得更多的交互操作成为可能。1998年10月国际标准化组织又推出了MPEG-7的构想,预计于2001年初最终完成并公布,其正式名称为"多媒体内容描述接口"(Multimedia Content Description Interface)。它提出了一种适用于现实生活中的各种多媒体内容的标准化描述方案,以提取待描述对象的各方面特征为基础,方便人们对所需的多媒体材料进行快速、有效的检索。

---- 3.VB开发MPEG -- Audio/Video数据流的播放技术

---- 3.1.VB中Multimedia MCI 控件,MediaPlayer控件播放MPEG数据流的缺点

---- VB中常用的多媒体控件是Multimedia MCI 控件,它管理媒体控制接口 (MCI) 设备上的多媒体文件的记录与回放。它被用来向诸如声卡、MIDI 序列发生器、CD-ROM 驱动器、视频 CD 播放器和视频磁带记录器及播放器等设备发出 MCI 命令,还支持 Windows (*.avi) 视频文件的回放。采用Multimedia MCI 控件播放采集的MPEG数据流,播放速度比实时监控显示要快,在测试时还发现MPEG文件长度缩短到500k-600k时,就无法看到播出的图像了。改用VB中的MediaPlayer控件上叙缺点仍然存在。分析原因是:因为MPEG文件长度太短了,播放设备刚打开就已经关闭了,这是编程无法控制的。而且,对于用户要求获取的某些有关压缩数据流的信息和希望实现的某些功能,比如图线尺寸、Copmression Rate、图形的缩放显示、界面的美观等,上叙控件所提供的为方便程序开发人员使用的高层接口已不适用,要想在此基础上实现对底层的一些操作,难度可想而知。在解决上叙实际性问题时,我们调用了动态链接库Quatrz.dll。

---- 3.2.提供对MPEG流方便的底层操作和高层接口的动态链接库Quatrz.dll

---- 在Windows\System下可找到一个动态链接库Quatrz.dll,这是Windows中带的用于控制运动图像的播放的一个类型库,只要在VB的"引用"菜单中将它添加进来即可使用。该库中定义了IBasicAudio,IBasicVideo和IBasicVideo2,IMediaEvent 、IMediaEventEx、IMediaPosition等类,可方便地在CommandButton控件的Click等事件中添加代码设置和读取Audio的相关值,设置或读取Video的输入输出源的相关参数,直接调用无参函数Run、Pause、Stop等控制播放事件进程,利用IMediaPosition类对具体播放细节进行操作。对于压缩的MPEG数据流的输出显示并不需要特别的控件,在VisualBasic中你可以选择一个窗体作为容器或窗体上的PictureBox控件作为容器。为了界面的美观和用户查取相关信息的方便,我们采用了PictureBox控件作为容器显示播放的MPEG数据流。

---- 3.3.用PictureBox控件显示MPEG数据流

---- Visual Basic中PictureBox 控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形。亦可在代码中操作图形属性和方法,以创建动画或进行仿真。在窗体上放置了一个PictureBox控件picTV,在调用了Windows\System下动态链接库Quatrz.dll的基础上,定义一个全局的Object对象pMC,令 pMC指向 FilgraphManager的一个新实例,打开压播放的MPEG文件;再定义一个局部对象 pVW 为 IVideoWindow的新实例,打开一个播放Video的窗口;令pVW = pMC,给对象引用pVW赋值,将picTV的属性值hWnd赋给pVW的Owner ,这样picTV就能显示接收的MPEG数据流了。具体操作如下:

Set pMC = New FilgraphManager
pMC.RenderFile "C:\Bank\Montior\Example.MPG"
Set pVW = pMC
pVW.WindowStyle = CLng(&H6000000)
pVW.Left = 0
pVW.Top = 0
OldWidth = pVW.width
OldHeight = pVW.Height
picTV.width = pVW.width * 15
picTV.Height = pVW.Height * 15
pVW.Owner = picTV.hWnd
---- 可以单独定义一个函数包括这些代码,也可将其放到CommandButton控件的Click事件中。
---- 3.4.MPEG数据流的缩放显示

---- 放大或缩小MPEG图像是各种多媒体播放软件中常用的图像显示处理手段。VisualBasic中对于静态图片进行缩放处理可以使用Image控件,将控件的Stretch属性设为True,则装入的图片会改变比例适应Image控件的范围,因此对图片的缩放处理变成对Image控件的Height、Width属性值的大小变化。由于控件的尺寸发生变化,显示的点距不能改变,造成显示点的像素点与图片不能完全一一对应,显示质量明显变差。只有Image控件才能对图片进行缩放,如果PictureBox控件不足以显示整幅图象,则裁剪图象以适应控件的大小。要想实现用PictureBox控件实现对输出MPEG图像的缩放,必须改变MPEG数据流的输出比例,在调节PictureBox控件的尺寸去适应输出的MPEG图像。实际上,在上面的第3小节里,为了显示输出MPEG图像已经这样做了。只不过用的是读取出的MPEG图像OldWidth、 OldHeight,下面给出一个以原来的1/2大小输出MPEG图像的例子。

pVW.width = OldWidth / 2
pVW.Height = OldHeight / 2
picTV.Left = 135
picTV.Top = 135
picTV.width = pVW.width * 15
picTV.Height = pVW.Height * 15
pVW.Owner = picTV.hWnd

---- 在放大或缩小MPEG图像的尺寸时要注意保持Width、Height的比例一致,以免输出的图像变形。
---- 3.5.鼠标拖动播放MPEG数据流

---- 用鼠标拖动滚动条随意播放MPEG数据流是Windows中多媒体播放机播放VCD的常用技术。VB中的Slider 控件是包含滑块和可选择性刻度标记的窗口,可以通过拖动滑块,用鼠标单击滑块的任意一侧或者使用键盘移动滑块。在选择离散数值或某个范围内的一组连续数值时,Slider 控件十分有用。通过将滑块移动到刻度标记处,可以对MPEG数据流进行定位播放。在窗体上放置一个Slider 控件Slider 1,设置好光标移动的最大步长LargeChange=5,最小步长SmallChange=1,最大移动范围Max=50,实现程序如下:

Private Sub Slider1_Scroll()
注释:
Dim pMP As IMediaPosition
Dim v As Double

If Not bOpen Then Exit Sub

bSeeking = True
pMC.Pause

Set pMP = pMC

v = Slider1.Value - Slider1.Min
v = v / Slider1.Max * pMP.Duration
pMP.CurrentPosition = v
Set pMP = Nothing

pMC.Run
注释:
End Sub

---- 3.6.MPEG数据流采集时间的获取
---- VisualBasic里提供了一个函数FileDateTime可用来获取文件建立或是更新的日期与时间。定义一个局部对象 pMP 为IMediaPosition的新实例,令pMP = pMC,给对象引用pMP赋值;再定义两个Double型的变量curpos 、length,将pMP.CurrentPosition赋给curpos,取得MPEG数据流的当前相对位置时间,将pMP.Duration 赋给length,取得MPEG数据流的时间长度值;就能获取MPEG数据流相对的采集时间。根据MPEG采集文件建立的特性将两个日期时间作加法或减法则可以得到MPEG数据流的采集时间。

---- 在整个MPEG的播放过程中,都要求实时显示MPEG数据流的采集时间,可定义一个获取采集时间的函数,采用Timer控件的Timer事件来驱动。通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次函数获取到MPEG数据流的采集时间。

---- 4.结束语

---- 将成熟的图像压缩技术用于电视监视监控领域具有十分重要的意义。例如:在银行的监视监控系统中,由于客户(银行)身份的特殊性,在对冒领他人存款、银行失窃或被抢劫等扰乱银行正常工作秩序的事件的调查及其处理中,采集的压缩数据流是很重要的办案线索与证据。在该系统中不仅要求监视画面清晰,采集的数据冗余度低,MPEG数据流的播放技术也是很重要的。本文介绍了在Windows环境下,利用VisualBasic自身条件和原有控件开发MPEG卡采集的Audio/Video数据的播放技术。充分利用了VB的优越条件,灵活地与VB中各种现有控件结合,开发出来的MPEG媒体播放器功能完善,回放的MPEG画面能清晰地重现数据采集时场景、做到了"闻其声,见其人"、并能准确确定事件发生的时间时刻。对只记录了单帧的Audio/Video数据流也能同样播放。上述技术已在监控系统中使用,并效果良好。
如何用VB创建控件-Delphi资料 生成程序组和项-Delphi资料 实现超级链接-Delphi资料 实战Delphi数据网格色彩特效 使dbgrid的某几笔资料变色-Delphi资料 树形图(Treeview)的使用概述-Delphi资料 透明FORM-Delphi资料 为列表框添光彩-Delphi资料 限制FORM的大小-Delphi资料 用Delphi开发分隔线组件 用Delphi设计拨动、跳线开关组件 用Delphi 设 计 拨 动、 跳 线 开 关 组 件 用Delphi实现JPEG格式图像的显示 用Delphi制作动态有声标签 运行时生成控件-Delphi资料 在DBGRID中实现COPY、PASTE功能-Delphi资料 在Delphi程序的About窗口中建立URL连接 在Delphi中利用Tbatch组件完成数据批处理 在Delphi中巧改窗体文件实现控件数组化 在Delphi中实现不同风格的SPEED和BUTTON 在Delphi中实现类似VB中的控件数组。 在RichEdit中的串查找-Delphi资料 在按钮中快速启动程序-Delphi资料 怎样读出MEMO控件的当前值-Delphi资料 怎样使用Delphi 5中的TExcelApplication操纵Excel 97/2000 怎样在TDataset中汉英混用-Delphi资料 制作可移动的窗体的MovePanel控件-Delphi资料 制作可移动的分割窗体-Delphi资料 制作用于日期时间型字段的DELPHI数据感知控件 制作主窗口显示前的版权窗口-Delphi资料 状态条插入可视控件-Delphi资料 有没有办法让用VC7 build出来的exe文件在VC6下调试? 请问,如何让客户端自动下载安装并注册ActiveX控件(最好能给出详细步骤), 请来说说Rational Rose、PowerDesign、visio这三个软件的功能与异同 怎么在JBUilder7设置命令行??? 电话拨号问题请教 100分 怎样读取数据库中的二进制数据? 急啊~fread的第二个参数忽略回车,怎么办? 为什么photoshop的调色板里只有一种颜色,急,在线 redhat linux8.0中文版有没有中文的帮助文档 Linux Apache+PHP+MySQL的配置问题?? 马上登陆geniusbible.yeah.net网站 我问一个简单问题 各linux都什么优点 这段代吗怎么写? 分乃身外之物,顺便问一个问题。 在delphi中怎么样把字符串的前后空格去掉 有没有人用vss做版本控制的?? 摩托遇到怪事~~决定研究一下~~有兴趣看看拉~~ 求救:哪位有NotesSQL 2.06 email:frank@southsundin.com API ATCS10_SCO505版本,免费的类似TUXEDO消息中间件,欢迎大家使用!!! what is the MAPI? 一个关于子窗体的问题?请大家帮忙,在线等待! 如何做浮动窗体! 一个不是很难的问题。我却很难哟 请教关于访问Jbuilder7中数据库的问题(急) 突然想到的一个问题,请问大家在认真思考问题的时候都习惯做些什么动作? 在SDI程序中,如何在“框架类”中得到“文档类”的指针? 经常看到图片的上传到数据库,以及如何显示的问题,并且在另一个页面实现指定位置显示多个图片!我整理了,需要来登记! 招聘程序员!!!! 各位老大:请帮助!!!!! 请假两天要扣掉薪水的百分之几? JSP通过JDBC连接ORACLE的问题!!! 简单问题,vb得块注视是什么? 为什么mingw和DJGPP. 的主页总是上不去?? 五笔怎么装?装在什么目录下? 最远的距离 请教关于访问Jbuilder7中数据库的问题(急) JSP通过JDBC连接ORACLE的问题!!!!!!!!!!!!!!! 打印机状态,在线等待,万分火急 modelmaker6这东西是做什么的,那位前辈知道 NOTES在用久了之后,邮箱会变的巨大,几百MB,但即使我将邮件删除,其邮件文件还是那么大,怎么可以让它缩小? 我为程序中的职工设了一个序号,人数有多少序号就有多少。可以一眼就看出有多少人。可是当我在离职表中删除职工时。序号跟着被删除。删除 关于sql的难题。 请问如何用SQL语句更改一个表的字段长度,其他都不变. jsp读取oracle8.1.6数据表中的中文,读出为?,着急啊。 上个100帖子已结,现在再拿100分求从导入到数据库的代码,各位老大帮忙看看。 怎样用程序设置文件夹共享? VB中,怎样实现C中的continue? 注册表与记录登录密码 更新表中某字段的值 男友手机存我的电话号码名字只是我的姓,这说明什么问他怎么这样子,他居然说习惯每个人都只存姓,我说同姓的很多啊,那存同音就行啦. 运用公民的政治生活的相关知识,分析实施法律援助的重要意义 it,speak,become,English,that,I,get,the,could,was,I,could,job连词成句 手机里怎么存男朋友的手机号码各位亲爱的姐妹们……你们的手机里是怎么存自己男友的号码的……说出来分享一下……PS:拒绝本名、老公、亲爱的、宝贝等庸俗答案…… 求几句古代的经典诗句!就是和“风萧萧兮易水寒 壮士一去兮不复还” 类似的 诗句啊 I Speak Because I Can 歌词 英语翻译“应客户的要求,我公司此申请案比较赶急,可否麻烦您尽快帮忙处理,”弄错了,汉译英啦,汗汗汗! 女生英文名有叫Angie的么?这个名字好不,怎么读? 用2根长都是16分米的铁丝分别围一个长方形和正方形 英语翻译1st set B/L Consignee:to order of shipperNotify :MO HK- MOHKG will pass the related document to you. Chander是什么意思,怎么读,我想用这个名字当我的英文名合适吗?我是个男的如果不合适,拜托给我起个合适的,我比较喜欢花 月亮 七月 夏天 鸳鸯 之类的,另外我的名字是xiao 起个跟我名字谐音 英语翻译1、Landed fee deliver to the destination place2、Certificate of the material and the certificate of possible treatment of surface 3、How man is the produts you could refund the mold charge? 英语翻译 英语翻译然后翻译成中文I need MP3 players printed in 1 colour with audio loaded onto each unit.重点翻译(with audio loaded onto each unit)这一段,因为这一段不知道如何理解.“是不是要打印“Audio loaded”在每个 第3、4、5题, 英语翻译1.01 Neither Principal nor Agent shall be responsible for the actions of any third parties or associates who may be involved in any activities outlined in this Memorandum.1.01 The Parties have entered into a binding confidentiality or mut 英语翻译和德国一家机构合作,发过来的INVOICE里有2个公司名称,一个是公司名A,但是收款方却是B,咨询对方然后答复““B” is our bank although we are the beneficiary,because we are a public health institution of 3 4题我做的对不对 英语翻译A taper company sends me the sample by there A/C.I did't like the sample then I send the sample to that company by my A/C and he made the same one.Now we are doing great business.I expect the same from you. 英语翻译请真正懂外贸的高手翻译下,如果只是在金山词霸里搜索给我答案就免了.1:20% advance in 3 working days of contract date and 100% pyt of prov invoice immediately on faxing copy of DOCTS after price fixing the 20% de 高中物理竞赛试题 急一质量为m的炸弹一速度v飞行,其内部的炸药产生能量e,使此炸弹分为两半,一半的质量为另一半的k倍.若两半仍能沿着原方向前进,试分别求其速率 运用政治生活的相关知识说明国际为什么重视三峡工程后国家 外贸英语, 请高手帮忙翻译一下 !In respect of the shipment of Iron Ore that does not meet the Fe specifications set forth in Clause 3 the price referred to in Clause 4 shall be adjusted in accordance with Fe content as determined pursuant “你”左边的那个单人旁念什么呢?3Q 今年的橡胶价钱是多少,明年会是什么价位? 王源英文名 诠能组什么词 今年的橡胶价会比去年的好吗? 质量为m绕制均匀的弹簧放在光滑水平面上在其一端作用一水平力F使其平动若将此弹簧一端固定在天花板上,则弹簧伸长的长度比其运动时短为使其长度与运动时相等 在弹簧下端应挂质量m‘= 诠字怎样组词?组一个就够了. 今年的橡胶价会更高吗 王源英文名怎么写 诠换偏旁组词 为什么今年橡胶价格下降这么多 五句形容人一心一意的古诗,求 2,4, 这个地址用英语怎么写?中国山东省济宁市市中区税务街苏州苑小区2号楼东3单元402 一心一意这种形式的词语 请检查1.2.4.5. 英语地址怎么写中国上海市闵行区沪闵路2753号北桥花博园B11 一心一意类的词语比如一心一意 王字旁加个月字念什么字 龙组词,请快点回答 ,第一个我就 我国古代发明较早的化学工艺有A造纸,指南针,制火药,冶炼钢铁 B制青铜器 制火药,印刷术,烧瓷器C制青铜器,冶炼钢铁,烧瓷器,制火药,D冶炼钢铁,指南针,造纸,印刷术 王字加个月字念什么?那为什么字典里没有啊 12月的六级~考完好久了,天天担惊受怕的~求给估分好安心会吧.再不过要疯了,长阅读对9个听力对了13个,填词5个吧,句子都写得不全啊阅读填词2个(这个时态错误那些给分吗)?,传统阅读对5个. 指南针和印刷术是谁发明的·Y 电热地膜的工作原理是什么? 请问一下有人知道word里面怎么打横线字哟? 就告诉我吧打心底感受大伙 i know you want me翻译成西班牙语. 电热水袋的工作原理,及其中的化学药物是什么 拜托大家看下word里面怎么打横线字哟? 就告诉我吧非常感受大伙了 It was because I could speak English that I got the job我想问一下这个句子各部分的结构(成分)分别是什么?这个句子的用法是it作形式主语?还是其他什么用法, 填空题1,3两题 请问一下大家word里面怎么打横线字哟?就告诉我吧谢谢各位了3d It was becauce I could speak English that I got the job.请问句中的that作什么? 填空题第2.3.4题 请问一下大家word里面怎么打横线字哟? 就告诉我吧非常感受大伙了学8 It was beause I could speak English that I got the job.分析句子成分, 请问第3道填空题怎么做?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘