首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用DirectShow在windows嵌入式Compact7上多次同时播放视频

使用DirectShow在windows嵌入式Compact7上多次同时播放视频
EN

Stack Overflow用户
提问于 2012-10-07 17:56:28
回答 2查看 880关注 0票数 1

你好,过去几天我一直在挣扎,使用简单的应用程序可以为不同视频流的同时视频播放创建多个预览(但mpeg4中的格式是相同的)。在我的平台上,没有Xaml运行时,所以我在DirectShow中使用简单的DirectShow函数。

但是无论我做什么,我都不能同时播放多个视频流。我现在很怀疑在windows嵌入式Compact上使用DirectShow是否可行。但也许我错了,因为我没有详细介绍创建过滤器图的细节。

我的方法是简单地创建很少的IBuilderGraphIMediaControl,和IMediaEventEx接口。然后,对每个图形生成器使用RenderFile方法创建筛选图,然后为每组通知窗口创建IVideoWindow,并使用RenderFile开始播放文件。

这在桌面windows 7平台上工作,但在CE上却不起作用。只有一个预览实际上正在播放视频流,而另一个则是黑色的,没有显示任何内容。

所以我的问题是“是否有可能在windows embedded Compact7上进行多次视频回放?”,如果是的话,请解释我可以使用什么工具。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-03 05:43:25

微软官方网站解释了https://learn.microsoft.com/en-us/windows/win32/api/control/nn-control-ivideowindow IVideoWindow接口(control.h)

IVideoWindow接口在视频窗口上设置属性。应用程序可以使用它来设置窗口所有者、窗口的位置和尺寸以及其他属性。

注意,IVMRWindowlessControl或IVMRWindowlessControl9接口现在比IVideoWindow更受欢迎。有关更多信息,请参见使用无窗口模式。

视频渲染器过滤器和过滤器图形管理器都公开了这个接口。将所有方法调用转发给视频渲染器。它还转发视频渲染程序需要接收的某些窗口消息,如WM_DISPLAYCHANGE。由于视频窗口通常是应用程序窗口的子窗口,因此筛选器将不会接收这些消息。因此,它依赖于过滤器图形管理器来转发它们。在大多数情况下,应用程序应该查询的这个接口,而不是直接调用过滤器,因为刚才描述的消息传递问题。但是,如果筛选图有多个视频渲染器,则筛选图管理器只与其中一个进行通信,任意选择。因此,如果应用程序使用多个视频窗口,则直接在过滤器上使用IVideoWindow接口。在这种情况下,必须使用IVideoWindow::NotifyOwnerMessage方法将窗口消息转发给每个视频渲染器实例。

示例代码如下所示:https://cpp.hotexamples.com/examples/-/IVideoWindow/-/cpp-ivideowindow-class-examples.html

代码语言:javascript
运行
复制
    HRESULT
recChannel_t::unmap(void)
{
    __CONTEXT("recChannel_t::unmap");

    IBaseFilter *pFilter = NULL;
    int hr = 0;
    hr = pGraph->FindFilterByName(L"Video Renderer", &pFilter);

    if (!hr)
    {
        IVideoWindow *pWindowInfo = NULL;
        hr = pFilter->QueryInterface(IID_IVideoWindow, (void **)&pWindowInfo);
        errorCheck(hr);
        pWindowInfo->put_Visible(OAFALSE);
        pWindowInfo->put_AutoShow(OAFALSE);
        pWindowInfo->Release();
    }

    pControl->StopWhenReady();
#ifdef _WINDOWS
    if (fControl)
    {
        fControl->CWnd::ShowWindow(SW_HIDE);
    }
#endif
    mapping = false;
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2014-05-20 10:58:32

我很惊讶你竟然能让流媒体进行下去。我读过这个:

WindowsEmbeddedCompact上也不支持IMediaControl接口。尝试访问任何成员都会生成E_NOTIMPL错误。

In:http://msdn.microsoft.com/en-us/library/ee494426.aspx

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12771314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档