我的媒体播放器——多媒体编程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();      }    }