• MFC调用VLC ActiveX plugin v2


    MFC调用VLC ActiveX控件v1的例子有很多,调用v2的确很少。但v2实现的功能要多出很多,迫于无奈, 居士@西禅寺 硬着头皮去实现v2。有些地方与调用v1一样,不过为了减少客官记忆负担,就赘述了。

    环境:Windows XP, VC 6.0

    1.注册VLC的ActiveX控件

      网上有很多,可以自己查。最简单的办法是安装一个VLC。系统自动注册。

    2.不废话,列详细步骤

      在VC6.0中,“新建”->“工程”->“MFC AppWizard[exe]”。选择您要建立的程序应用类型是“基本对话框”,点击"完成"。

      “工程”->“增加到工程”->“Components and Control Gallery”->"Registered ActiveX Controls"->双击"VideoLAN VLC ActiveX Plugin v2"

      工程中已经比原来增加不少的文件,我们要调用的是vlccontrol2.h,所以认真看下vlccontrol2相当有必要。具体到实现某个功能是去调用其他文件,下面会提到。

      我建的工程名是VLC2.在VLC2Dlg.cpp中,添加

      #include "vlccontrol2.h"
      #include "vlcplaylist.h"

      声明全局变量,

      CVLCControl2 *pvlc2;
      CVLCPlaylist pvlcPlaylist;

      在初始化对话框时,CVLC2Dlg::OnInitDialog()中添加代码,如下:

       pvlc2 = NULL;
       pvlc2 = new CVLCControl2();
       pvlc2->Create( "vlc show", SW_SHOW, CRect(0,0,370,280), this, 1234);
       pvlc2->ShowWindow( SW_SHOWNORMAL );
       pvlc2->SetVisible( true );

      对按钮“确定”和“取消”Add and Edit。

      void CVLC2Dlg::OnOK()
      {
         // TODO: Add extra validation here

        //option用来设置参数,此例是设置反交错参数
         BSTR option = SysAllocString(L":vout-filter=deinterlace :deinterlace-mode=mid");
         BSTR name = SysAllocString(L"vlc show");

         VARIANT vOption;
         vOption.vt = VT_BSTR; 
         VariantInit( &vOption );
         vOption.bstrVal = option;

         VARIANT vName;
         vName.vt = VT_BSTR;
         VariantInit( &vName );
         vName.bstrVal = name;

         pvlcPlaylist = pvlc2->GetPlaylist();
         pvlcPlaylist.add( "udp://@239.202.0.5:5001", vName, vOption);

        //播放本地视频pvlcPlaylist.add( "D:\DISC.rm", vName, vOption);

        //如果你要用到其他功能,你应当使用Get的其他函数【1】。比如操作声音、时间、视频等等
         pvlcPlaylist.play();

     
         //CDialog::OnOK();
      }

      【1】vlccontrol2.h中有GetAudio、GetInput()、GetLog()、GetPlaylist()、GetVideo();

      void CVLC2Dlg::OnCancel()
      {
         // TODO: Add extra cleanup here
         pvlcPlaylist.stop(); 
         if( pvlc2 != NULL )
            delete pvlc2;
     
         CDialog::OnCancel();
      }

    自己摸索的,可能看法会有错误,大家斧正。不过可以保证的是代码是可运行的。

  • 相关阅读:
    表删除 准备
    爱可生技术文档
    Bran的内核开发指南_中文版
    LINUX 内核内存管理
    Linux Container测试之block IO
    【实时文件同步】rsync+inotify-tools的安装与配置
    openlayer3 加载geoserver发布的WFS服务
    Geoserver跨域请求设置
    Bitmap 图片格式并用 C++ 读写 Bitmap
    C++中的对象初始化
  • 原文地址:https://www.cnblogs.com/jqlin/p/1613987.html
Copyright © 2020-2023  润新知