我試圖使用從「http://directshownet.sourceforge.net/」DirectShot.Net包裝從一些視頻文件中提取幀。DirectShow.Net沒有組合的過濾器,但在GSpot罰款
每當我運行DxScan示例應用程序。我得到一個「沒有中間過濾器的組合可以發現,使連接。」這發生在WMV文件,MP4文件,AVI文件中。我在示例應用中指出的任何媒體。
如果我使用GSpot編解碼器工具打開任何視頻,並要求它渲染圖形,那麼這樣做沒問題。所以這臺機器肯定能夠播放內容。
我在Win 7 64位上。針對x64,x86或Auto引發同樣的錯誤。包括以管理員身份運行Visual Studio。
我修改了示例代碼,嘗試找到包含以下Romain R建議的視頻媒體類型的正確引腳。
我使用:
IEnumPins epins;
capFilter.EnumPins(out epins);
IntPtr fetched = Marshal.AllocCoTaskMem(4);
IPin[] pins = new IPin[1];
while (epins.Next(1, pins, fetched) == 0)
{
PinInfo pinfo;
pins[0].QueryPinInfo(out pinfo);
IEnumMediaTypes mtypes;
pins[0].EnumMediaTypes(out mtypes);
AMMediaType[] types = new AMMediaType[1];
while(mtypes.Next(1, types, new IntPtr()) == 0){
var majorType = types[0].majorType;
if (majorType == MediaType.Video)
{
//This is never reached
}
}
}
對於MP4文件,它從來沒有打上面的註釋行。但是,對於WMV文件,演示現在可以正常運行。
大概,這是因爲它沒有找到合適的MP4文件過濾器。這是晦澀的內容將在Windows媒體播放器播放罰款。
這是可能的原因嗎?
你知道如何檢測DShow.Net中的視頻引腳的例子嗎? – 2013-02-25 15:36:18
您通過引腳迭代,您可以枚舉其上的媒體類型。如果枚舉的第一個媒體類型具有'majortype == MEDIATYPE_Video',則它是一個視頻引腳。 – 2013-02-25 15:38:33
使用上面的代碼,它似乎沒有返回任何具有majortype MediaType的引腳。視頻 大概我正在測試正確的過濾器上的引腳(捕獲過濾器) – 2013-02-25 16:20:18