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();
}
自己摸索的,可能看法会有错误,大家斧正。不过可以保证的是代码是可运行的。