开发者

Free DirectShow live stream source filter

开发者 https://www.devze.com 2023-03-19 17:10 出处:网络
I have a DirectShow graph, contains file source filter, splitter filter, decoders for video and audio and renderers. (The data is possibly encrypted, so the splitte开发者_运维知识库r just split it to

I have a DirectShow graph, contains file source filter, splitter filter, decoders for video and audio and renderers. (The data is possibly encrypted, so the splitte开发者_运维知识库r just split it to video and audion and the decoders actually decrypts the data).

Now, I want to change the graph to work with live streams instead of files as source. Is there a free (preferred open source) such source filter?

Thank you.


If by live streams you mean Windows Media over HTTP, you could try this:

First define a GUID for CLSID_NetShowSource, something like

#include <initguid.h>

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

Then you can use it as follows:

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
        }
    }
}

It's been a while since I implemented this, I hope it's helpful. I'm pretty sure this snippet is missing some error checking.

0

精彩评论

暂无评论...
验证码 换一张
取 消