gpt4 book ai didi

c++ - 免费的 DirectShow 直播流源过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:00 25 4
gpt4 key购买 nike

我有一个 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
}
}
}

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

关于c++ - 免费的 DirectShow 直播流源过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com