• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 同样的代码为什么在我的程序中PrepareToEncode失败?

同样的代码为什么在我的程序中PrepareToEncode失败?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了同样的爱,同样的英文,同样,两根同样长的蜡烛,两根同样长的铁丝等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 同样的代码为什么在我的程序中PrepareToEncode失败?
描述:

本帖最后由 lx20010 于 2011-07-12 21:35:16 编辑

为什么我新建了一个对话框项目启动如下线程执行正常,但在我的程序中却PrepareToEncode失败,报E_NOINTERFACE错误呢?甚至在我的已有项目中调用WinExec启动对话框项目不能正常预览,但单独启动对话框项目就可以,奇怪了!
线程中的代码:
    HRESULT hr;
    IWMEncoder* pEncoder;
    IWMEncDataView* pPreview;
    IWMEncDataView2* pPreview2;
    IWMEncDataViewCollection* pPreviewColl;
    IWMEncSourceGroupCollection* pSrcGrpColl;
    IWMEncSourceGroup* pSrcGrp;
    IWMEncSource* pSrcAud;
    IWMEncSource* pSrcVid;
    IWMEncProfileCollection* pProColl;
    IWMEncProfile* pPro;
    IWMEncBroadcast* pBrdCst;
    CComBSTR bstrName = NULL;
    // Initialize the COM library and retrieve a pointer
    // to an IWMEncoder interface.
    hr = CoInitialize(NULL);
    if ( SUCCEEDED( hr ) )
    {
        hr = CoCreateInstance(CLSID_WMEncoder,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IWMEncoder,
            (void**) &pEncoder);
    }
    // Retrieve a pointer to an IWMEncSourceGroupCollection interface.
    if ( SUCCEEDED( hr ) )
    {
        hr = pEncoder->get_SourceGroupCollection(&pSrcGrpColl);
    }
    // Add a source group to the collection.
    if ( SUCCEEDED( hr ) )
    {
        hr = pSrcGrpColl->Add(CComBSTR("SG_1"), &pSrcGrp);
    }
    // Add a video source and an audio source.
    if ( SUCCEEDED( hr ) )
    {
        hr = pSrcGrp->AddSource(WMENC_VIDEO, &pSrcVid);
    }
    // Specify the sources.
    if ( SUCCEEDED( hr ) )
    {
        hr = pSrcVid->SetInput(CComBSTR("Device://TE One Video Capture No.1 (1)"));
    }
    // Select the 5th profile from the collection and set it into the source group.
    if ( SUCCEEDED( hr ) )
    {
        hr = pEncoder->get_ProfileCollection(&pProColl);
    }
    if ( SUCCEEDED( hr ) )
    {
        hr = pProColl->Item(4, &pPro); 
    }
    if ( SUCCEEDED( hr ) )
    {
        hr = pSrcGrp->put_Profile(CComVariant(pPro));
    }
    // Retrieve a pointer to a preview object.
    if ( SUCCEEDED( hr ) )
    {
        hr = CoCreateInstance( CLSID_WMEncPreview,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IWMEncDataView,
            (void**)&pPreview);
    }
    // Retrieve the preview collection.
    if ( SUCCEEDED( hr ) )
    {
        hr = pSrcVid->get_PreviewCollection( &pPreviewColl );
    }
    // Add the postiew object to the data view collection. If you set the
    // cookie to -1, the encoder engine automatically generates a unique cookie.
    long lCookie = -1;
    if ( SUCCEEDED( hr ) )
    {
        hr = pPreviewColl->Add( pPreview, &lCookie);
    }
    // Continue configuring the encoder engine.
    // Initialize the encoder engine.
    if ( SUCCEEDED( hr ) )
    {
       hr = pEncoder->PrepareToEncode(VARIANT_TRUE);
   }
    // Start encoding.
   if ( SUCCEEDED( hr ) )
    {
        hr = pEncoder->Start();
    }
    // Start viewing the stream in a pop-up window.
    if ( SUCCEEDED( hr ) )
    {
hr = pPreview->Start(lCookie);
    }
    int i = 0;
    while ( i < 10000 )
    {
        MSG msg;
        Sleep ( 100 );
        while ( PeekMessage( &msg, 0, 0, 0, PM_REMOVE) )
        {
          
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 同样的组件,换个操作系统执行怎么就不行了?
  • ISampleGrabber::GetCurrentBuffer总的到同样的图片
  • ISampleGrabber::GetCurrentBuffer总的到同样的图片
  • 发现同样的[in]接口函数,dll和exe表现的不一样!
  • 如何确保同样的进程只有一个在运行。
  • 同样的代码,但PostQuitMessage0有时执行不了为什么?
  • 同样的使用为什么不能在文档视图中调用dll
  • 同样的代码为什么在我的程序中PrepareToEncode失败?

相关文章

  • 2017-06-04 WebBrowser的弹出窗口问题。
  • 2017-06-05 进程与系统服务之间通信的问题
  • 2017-06-04 将一个本地COM程序转换为DCOM,大约需要多少时间?DCOM错误处理和安全性怎么样?有经验的朋友UP一下。
  • 2017-06-04 高手指教:如何实现在Activex控件的method中输出一块数据?
  • 2017-06-04 获取IE弹出窗口的问题(DISPID_NEWWINDOW2)
  • 2017-06-04 32位系统下到底有没有全局堆
  • 2017-06-05 MFCTab控件的问题
  • 2017-06-05 全局线程函数中如何给CView类发送自定义消息?
  • 2017-06-04 Client调用DCOM,DCOM再调用COM+
  • 2017-06-05 对一个已经被阻塞了的进程,如何唤醒?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 怎样手动创建DllMain函数
    • _stdcall和WINAPIde概念怎么理解?如何区别他们?
    • 学习com烦恼看技术内幕比较理论就前五章有代码敲后面困惑
    • 如何将动态连接库加入程序?
    • 关于回调函数
    • 控件已经发布,后续版本开发该如何有序进行?
    • COM的初级问题
    • 高分问题征解
    • ATL中如何隐藏类?也就是只暴露接口,实例由其他方法中返回
    • 线程间对象的传递

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有