第二個題目是我的播放器,可以播放音頻和視頻。其實略懂電腦多媒體技術的人都清楚,音頻和視頻的差異具體是體現在檔案格式上的。不同的音頻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(); } }