zoukankan      html  css  js  c++  java
  • 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();
      }

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

  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/jqlin/p/1613987.html
Copyright © 2011-2022 走看看