免费的DirectShow直播流源过滤器

Free DirectShow live stream source filter

本文关键字:过滤器 直播 DirectShow 免费      更新时间:2023-10-16

我有一个DirectShow图形,包含文件源过滤器,分离器过滤器,视频和音频解码器和渲染器。(数据可能是加密的,所以分配器只是把它分成视频和音频,解码器实际上是解密数据)。

现在,我想改变图形工作与实时流,而不是文件作为源。是否有一个免费的(首选开源的)这样的源过滤器?

谢谢。

如果你指的是HTTP上的Windows Media,你可以试试这个:

首先为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
        }
    }
}

自从我实现这个已经有一段时间了,我希望它对你有帮助。我很确定这个片段缺少一些错误检查。