我的媒体播放器——多媒体编程2012-01-10 51cto博客 王杰瑞第二个题目是我的播放器,可以播放音频和视频。其实略懂计算机多媒体技术的人都清楚,音频和视频的差异具体是体现在文件格式上的。不同的音频mp3,midi,wav等其实是不同的编码或者格式,同理不同的视频avi,rm(rmvb),mov等其实也是不同的编码格式,这些格式中,大多数都是不公开源代码的,但是公开标准或者API接口。但编程调用依然很繁琐,我们也没有精力和能力去研究这些。.Net本身不带多媒体库,但是具有与COM交互的强大能力。恰好,微软DirectShow技术能满足上述要求,而且可以跟.NET达到完美的结合。DirectShow交互程序集是集成在DirectX中的,多数计算机都会有DirectX,微软也提供下载。废话少说,开始做吧。第一,在项目中引用Interop.QuartzTypeLib.dll。这是DirectX的COM交互程序集,其实是个托管调用。其中的类库和方法介绍最好还是看DirectX的SDK。这里不班门弄斧了。第二,播放打开的文件
public void RenderMedia(string mediaFileName) { clearUp(); try { objMedia = new FilgraphManager(); objMedia.RenderFile(mediaFileName); volMedia = objMedia as IBasicAudio; posMedia = objMedia as IMediaPosition; ctlMedia = objMedia as IMediaControl; eexMedia = objMedia as IMediaEventEx; eexMedia.SetNotifyWindow((int)this.Handle, WM_GRAPHNOTIFY, 0); mediaStatus = 1; mediaDuration = posMedia.Duration; volMedia.Volume = mediaVolum; Play(); } catch { MessageBox.Show("加载文件失败!"); clearUp(); } }