2011-07-13 8 views
1

私はDirectShowグラフを持ち、ファイルソースフィルタ、スプリッタフィルタ、ビデオとオーディオ、レンダラ用のデコーダを含んでいます。 (データは暗号化されている可能性があるので、スプリッタはビデオとオーディオに分割し、デコーダーは実際にデータを復号化します)。無料のDirectShowライブストリームソースフィルタ

ここで、ソースとしてファイルではなくライブストリームで動作するようにグラフを変更したいとします。このようなソースフィルタは、フリー(優先オープンソース)ですか?

ありがとうございます。

+0

....のライブストリーム....? HTTP? RTSP? RTMP? MMS?ここで実際にライブストリーミングプロトコルを指定する必要があります。単一の「ライブストリーミング」ソースフィルタはありません。 – kidjan

+0

あなたのデスクトップのライブストリーム? – rogerdpack

+0

@rogerdpack - はい。いくつかのテスト目的のために。ありがとう。 –

答えて

1

ライブストリームでは、HTTP経由でWindowsメディアを意味している場合、あなたはこれを試みることができる:

まずCLSID_NetShowSourceためのGUIDを定義し、

#include <initguid.h> 

DEFINE_GUID(CLSID_NetShowSource, 
      0x6b6d0800, 0x9ada, 0x11d0, 0xa5, 0x20, 0x0, 0xa0, 0xd1, 0x1, 0x29, 0xc0); 

のようなものを次に、あなたがそれを使用することができ、次のよう

IBaseFilter* wmsrc; 
//create a basefilter instance from the GUID 
hr = CoCreateInstance(CLSID_NetShowSource, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&wmsrc); 
if(!FAILED(hr)) 
{ 
    IFileSourceFilter* fsf; 
    //get us a file source filter, this can read from urls 
    wmsrc->QueryInterface(IID_IFileSourceFilter, (void**)&fsf); 

    if(fsf) 
    { 
     //wFilename is a widechar string containing the stream url 
     hr = fsf->Load(wFilename, NULL); 

     if(!FAILED(hr)) 
     { 
      //at this point you can do as you wish with the filter 
     } 
    } 
} 

これを実装してからしばらく経っていますが、参考になることを願っています。私はこのスニペットが何らかのエラーチェックをしていないことを確かめています。