對於WMP,什麼是編解碼器定位 政策。
直到Windows Media Player 7.0,它只是一個純粹的DirectShow播放器。從7.0開始,Microsoft已開始以不同方式處理不同的文件類型。這主要是WMV文件的情況。 WMP現在將在Vista中使用MediaFoundation媒體管道,在某些文件類型中使用7。
如何從mpeg-3格式差異化自定義文件 格式。 什麼是standarts和編程 結構爲此。 (實部我 搞砸了是這樣的。容器格式, 視頻格式,FOURCC碼...等 開車送我到死)
您could do this(笑,遺憾的MSDN鏈接) ,如果你正在創建你自己的自定義容器格式,但如果你想讓自己的生活更輕鬆,我會選擇一個現有的和/或開源的容器,如AVI或MKV。當您以這兩種格式創建流時,您都需要提供一個編解碼器代碼,例如視頻的fourcc或音頻的格式標籤。由於您正在製作自己的自定義格式,因此您應該製作自己的fourcc或格式標記值,但請注意不要選擇已使用的人。
比方說,你正在使用的AVI。內置的avi demux將讀取AVI頭文件並查看文件中每個流的元數據。它可能會找到具有fourcc DX50的視頻流和具有WAVE_FORMAT_PCM格式標籤的音頻流。 DirectShow將枚舉已註冊的過濾器並查詢其引腳,以查看它們是否支持採用DX50視頻或WAVE_FORMAT_PCM音頻。所以如果你的AVI有一個4XX的XXXX,DirectShow會枚舉過濾器來尋找需要XXXX的類型。然後,您將製作一個轉換過濾器,它將接受fourcc XXXX。您的轉換過濾器將解碼視頻並輸出未壓縮的格式。也許RGB24。 DirectShow將檢測您的輸出引腳輸出該媒體類型,並可能將其直接連接到渲染器。這個過程對音頻來說是一樣的,除了我們處理格式標記而不是四個cs(並且你處理WAVEFORMATEX和VIDEOINFOHEADER)。
For this work on Windows what method do you suggest to write codec(DMO or Filter)
我從來沒有親自寫DMO,但我會強烈建議看看它。我聽說有更少的鍋爐板COM和IIRC,MediaFoundation有DMO包裝,所以你可能會得到自動的MediaFoundation支持。
除了DShow SDK示例,您可能還想檢查out this。可以幫助你開始。 this website也有很好的樣品,但可能並不完全符合您的要求。
感謝您的答案。據我瞭解處理fourcc和格式標記是由默認的源過濾器處理。然後它連接到相應的轉換過濾器,我必須自己寫。還有2個問題: 1-對於音頻使用mp3格式的效果是什麼。 2-我找不到結構VIDEOINFOHEADER的元素用於放置fourcc代碼。 – 2009-10-21 13:24:55
使用MP3格式沒有任何效果。爲了容易理解,假裝DSHOW不知道任何關於MP3格式的內容,DSHOW文檔也沒有提及MP3。對於DShow,它只是您定義的另一種格式:) FourCC位於VIDEOINFOHEADER的VIDEOINFOHEADER.bmiHeader.biCompression中。有一件事情可能並不明顯,AM_MEDIA_TYPE.subType的前4個字節也是fourcc!其餘的GUID將是FORMAT_VideoInfo(FORMAT_VideoInfo將是majorType) – 2009-10-21 19:00:16
謝謝你耶利米。所有幫助我很多。 – 2009-10-21 19:43:09