




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
vic的应用之一:在命令行下的使用2008-11-2813:45:34标签:command休闲line职场vic原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/539865/115910如果编译得到没有界面的vlc,双击运行后就没法手动选打文件或网络了。在这介绍几个vlc的命令行命令。vlc帮助vlc--helporvlc--help--advaneedvlc的debuglogvlc-vv--extraintf=logger运行的log将会保存在vlc-log.txt中。vlc打开文件vlc-vv--extraintf=loggerd:/01.avi作为服务器通过rtp往客户端发送ts流vlc-vvv--extraintf=loggerd:/01.avi:sout=#duplicate{dst=rtp{dst=localhost,mux=ts,port=1234}}作为客户端接收rtp流vlc-vv--extraintf=loggerrtp://@:1234vic的应用之二:vic的ActiveX及cab2008-11-2815:38:01标签:vic休闲cab职场ActiveX原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/539865/1159432009-05-14补充:8.Activex的卸载;9.让vlc自动安装Activex;10.关于vlc的Activex的说明。vlc自带了ActiveX控件--axvlc.dll,在编译完vlc之后的activex文件夹下。ActiveX是个好东西,axvlc.dll可以随意放到任何位置,成功注册之后可以方便的应用在程序和网页之中。可以参考activex文件夹下的test.html和README.TXT。ActiveX控件的接口有第一版和第二版,第一版简单,功能少,已经不再维护建议用第二版本,功能多一点。(参考的[1])vlc-0.8.6i和vlc-0.9.4的ActiveX注册方法略有不同。做ActiveX的网页测试之前需要把Internet选项-->安全-->本地Intranet的安全级别调到最低Jeremiah的网页测试环境是IE7,其他浏览器未进行测试。vlc-0.8.6i的ActiveX注册在E:下新建文件夹vlc-0.8.6iActiveX,拷贝vlc-0.8.6i目录下的plugins,libvlc.dll,activex/axvlc.dll到vlc-0.8.6iActiveX/dlls目录下,拷贝activex/test.html到vlc-0.8.6iActiveX下。新建文本文件install.bat内容如下:双击install.bat后会提示“dlls\axvlc.dll中的DllRegisterServer成功”。然后用打开test.html,文本框输入MRL就可以播放了。vlc-0.9.4的ActiveX注册0.9.4不光要告诉计算机vlc的axvlc.dll的位置,还要告诉注册表installdir的位置,也就是libvlc.dll的位置在E:下新建文件夹vlc—0.9.4ActiveX,拷贝vlc-0.9.4目录下的plugins,libvlc.dll,libvlccore.dll,activex/axvlc.dll到vlc-0.9.4ActiveX/dlls目录下,拷贝activex/test.html到vlc-0.9.4ActiveX下。新建文本文件install.reg内容如下:WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\VideoLAN\VLC]"InstallDir"="E:\\vlc-0.9.4ActiveX\\dlls"新建文本文件install.bat内容如下:regsvr32dlls\axvlc.dllregedit/sinstall.reg双击install.bat后就可以用test.html进行测试了。一点点小提示如果注册成功,但是test.html播放文件的时候会报错说decodermodules会找不到之类信息,那请将0.8.6i和0.9.4交替注册,可能会解决这个问题。(Jeremiah因为这个问题搞了一天,NND)(2009-05-14补充:直接看8吧,以前这个地方写的不大对。)制作cab文件如果要类似与test.html作个播放器服务器,但是我们却不能手动操纵客户端去下载注册vlc的ActiveX,解决方法就是自己制作cab文件。到本日志的附件(cabsdk.rar)或者以下地址去下载cabsdk.exe:[url]/download/platformsdk/cab/2.0/w98nt42kmexp/en—us/cabsdk.exe[/url]安装cabsdk.exe将axvlc.dll及vlc的安装文件拷贝到cabsdk安装路径/BIN/下。Jeremiah这里用的是vlc-0.8.6i-win32.exe。(关于如何制作vlc的安装文件,参考日志《windows平台下vlc编译之二:vlc—0.8.6i的编译》)在/BIN下新建文本文件axvlc.inf,内容如下:;VersionnumberandsignatureofINFfile.;[version]signature="$CHICAGO$"AdvancedINF=2.0[Add.Code]vlc-0.8.6i-win32.exeaxvlc.dll=axvlc.dll[axvlc.dll]FileVersion=0,8,6,0clsid={9BE31822-FDAD-461B-AD51-BE1D1C159921}Registerserver=nohook=nsiinstaller[vlc-0.8.6d-win32.exe]FileVersion=0,8,6,0file-win32-x86=thiscab[nsiinstalle门run=%EXTRACT_DIR%\vlc-0.8.6i-win32.exe注意:请根据安装文件的版本修改此文件。命令行到BIN目录下,执行以下命令生成cab文件:CABARC.EXENaxvlc.cabaxvlc.infaxvlc.dllvlc-0.8.6i-win32.execab文件的使用html页面下使用cab文件可以通过以下方式:vOBJECTclassid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"codebase="your/path/of/cabfile/axvlc.cab"width="640"height="480"id="vlc"events="True">vparamname="Src"value=""/>vparamname="ShowDisplay"value="True"/>vparamname="AutoLoop"value="False"/>vparamname="AutoPlay"value="False"/>v/OBJECT>这样web客户端无须手动注册axvlc.dll就可以使用了。一点比较严重小问题由于vlc的安装文件一般是比较大,所以制作出来的cab文件也是很大的,在网络带宽不是很好的时候,光下载这个cab可能就很长很长时间,基本上可以说这样的方式是行不通的。所以我们需要根据自己的业务需求去精简vlc。Jeremiah将在下一篇日志介绍。C#下使用vlc的ActiveXvs2005新建一个windows应用程序,在左侧工具箱右键一>选择项-->com组件一>VideoLANVLCActiveXpluginv2,工具箱里面就添加了vlc的ActiveX控件,可以在窗体里面随便画了。调用函数如下:Iprivatevoidbutton1_Click(objectsender,EventArgse){〃输入参数stringparameter=":sout=#duplicate{dst=display}:no-overlay";〃判断是否正在播放if(this.axVLCPIugin21.playlist.isPlaying){〃如果正在播放,则停止this.axVLCPIugin21.playlist.stop();}〃清空播放列表this.axVLCPIugin21.playlist.clear();〃添加播放列表this.axVLCPIugin21.playlist.add(textBox1.Text,null,parameter);〃播放列表更新到新添加的播放项this.axVLCPIugin21.playlist.next();〃播放this.axVLCPIugin21.playlist.play();其他函数调用参考activex/README.TXT。Jeremiah在附件里面提供了一个简单的调用程序(WindowsApplicationl.rar)不过需要注意的是在用它测试0.9.4的ActiveX,当正常播放文件时点击X关闭窗口产生异常,电脑会重新启动。在主窗体的FormClosing事件中让主线程睡了1000ms,并不能完全保证电脑不重启,所以请根据自己的情况进行本附件的调试。Activex的卸载卸载是安装的反向操作,知道怎么安装,卸载很简单。vlc-0.8.6i的Activex的卸载:新建uninstall.bat,内容如下:regsvr32dlls\axvlc.dll/uvlc—0.9.4的Activex的卸载:新建uninstall.reg,内容如下:WindowsRegistryEditorVersion5.00[-HKEY_LOCAl__MACHINE\SOFTWARE\VideoLAN]新建uninstall.bat,内容如下:regsvr32dlls\axvlc.dll/uregedit/suninstall.reg双击uninstall.bat,提示dlls\axvlc.dll中的DllUnregisterServer成功。就卸载完毕了。让vlc安装的时候自动安装Activex4里面提到cab包的制作及5里面提到了cab包的使用。cab其实就是让客户自动下载vlc的安装文件,然后启动安装。但是安装过程中,出现这样一步:Activexplugin默认是没有被选中的,如何让它这一步默认是选中的,或者选中并且是灰色的(比如像MediaPlayer这一项),不让客户改变呢?我们需要修改编译完的vlc的vlc.win32.nsi文件。然后用它重新制作vlc-0.9.4-win32.exe.具体修改过程如下:在vlc.win32.nsi文件中,找到:Section/o$Name_Section04SECO4Sectionln3修改为:Section$Name_Section04SEC04Sectionln123或者在123后面加入“空格R0",表示这项是必须的不能去掉,就是选中并且是灰色的。$Name_Section04可以替换为"MyActiveXplugin(required)"等自己的名字。然后根据前面博客讲的制作vlc-0.9.4-win32.exe的过程执行一遍,然后再制作cab包就okay了。关于vlc的Activex的说明根据我对vlc的Activex的使用,发现这个Activex做的真是不好,很多方法没有封装进来,如果扩展这个Activex,工作量不小。如果是做C/S程序,强烈不建议用Activex来开发。除非是想简单做一下,快速开发等。做C/S播放器还是看我这篇博客:《vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll》,开发过程虽然慢点,但是比较可控。Activex只适合应用于B/S项目,只适合WEB开发,这是Jeremiah的一点忠告,但是只属于个人意见,仅供参考。参考网址:[url]/?p=157[/url][url]/ActiveX/HTML[/url][url]/ActiveX[/url]4.[url]/viewtopic.php?f=14&t=48812&p=155832&hilit=regsvr#pl56070[/url]5.[url]/blog2/zyjzyj2000/10184.html[/url]vic的应用之三:动态调用vlc-0・9・4的libvlc・dll2008-12-0317:38:46标签:WinFormC#休闲libvlc.dllvic原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/539865/116981vlc-0.9.4提供的libvlc.dll是可以动态调用的,Jeremiah这一篇博客就介绍下如何用C#和WinForm框架调用libvlc.dll作个简易播放器。vs2005新建工程将vlc-0.9.4的libvlc.dll,libvlccore.dll,plugins目录全部拷贝到工程目录下面\bin\Debug中创建异常结构体usingSystem;usingSystem.Collections.Generic;1usingSystem.Text;|1namespaceMyOwnPlayer{1〃异常结构体publicstructExceptionStruct{1privateintraised;privateintcode;1privatestringmessage;1}11classMediaException{1}1}CoreHandle和Core类usingSystem;usingSystem.Runtime.InteropServices;InamespaceMyOwnPlayer{classCoreHandle:SafeHandleI{I〃构造方法publicCoreHandle():base(IntPtr.Zero,true)TOC\o"1-5"\h\zI{I}II〃重写的方法publicoverrideboolIsInvalidI{get{returnhandle==IntPtr.Zero;}I}IprotectedoverrideboolReleaseHandle()I{if(!IsInvalid)I{libvlc_release(this);handle=IntPtr.Zero;I}returntrue;I}IprotectedoverridevoidDispose(booldisposing)I{ReleaseHandle();base.Dispose(disposing);I}II//Dll动态导入[DIIImport("libvlc")]privatestaticexternvoidlibvlc_release(CoreHandlecoreHandle);}}usingSystem;usingSystem.Runtime.InteropServices;II{namespaceMyOwnPlayer{11classCore1{1//coreHandle字段和属性1privateCoreHandlecoreHandle;1publicCoreHandleCoreHandle1{1get{returncoreHandle;}11}11〃构造方法11publicCore(string[]argv,refExceptionStructex)11{1coreHandle=libvlc_new(argv丄ength,argv,refex);11}11//Dll动态导入11[DIIImport("libvlc")]1privatestaticexternCoreHandlelibvlc_new(intargc,string[]args,refExceptionStructex);11}}3.MediaHandle和Media类,注意里面的非英文路径处理方法。usingSystem;usingSystem.Runtime.InteropServices;InamespaceMyOwnPlayer{classMediaHandle:SafeHandleI{I〃构造方法publicMediaHandle():base(IntPtr.Zero,true)I{I}II〃重写的方法publicoverrideboolIsInvalidget{returnhandie==IntPtr.Zero;}I}IprotectedoverrideboolReleaseHandle()I{if(!IsInvalid)I{libvlc_media_release(this);handle=IntPtr.Zero;I}returntrue;I}IprotectedoverridevoidDispose(booldisposing)I{ReleaseHandle();base.Dispose(disposing);I}II//Dll动态导入[DIIImport("libvlc")]privatestaticexternvoidlibvlc_media_release(MediaHandlemediaHandle);}}usingSystem;usingSystem.Text;usingSystem.Runtime.InteropServices;InamespaceMyOwnPlayer{classMediaI{I//mediaHandle字段和属性privateMediaHandlemediaHandle;publicMediaHandleMediaHandleI{get{returnmediaHandle;}I}II〃构造方法publicMedia(CoreHandlecoreHandle,Stringfilename,refExceptionStructex)I{I〃c#为UTF-16编码,libvlc.dll为UTF-8编码,需要转换.UTF8Encodingutf8=newUTF8Encoding();mediaHandle=libvlc_media_new(coreHandle,utf8.GetBytes(filename),refex);I}II//Dll动态导入[DIIImport("libvlc")]privatestaticexternMediaHandlelibvlc_media_new(CoreHandlecoreHandle,[MarshalAs(UnmanagedType丄PArray)]byte[]link,refExceptionStructex);I}}MediaPlayerHandle和MediaPlayer类usingSystem;usingSystem.Runtime.InteropServices;InamespaceMyOwnPlayer{classMediaPlayerHandle:SafeHandle{I〃构造方法publicMediaPlayerHandle():base(IntPtr.Zero,true)TOC\o"1-5"\h\zI{I}II〃重写的方法publicoverrideboolIsInvalidI{get{returnhandle==IntPtr.Zero;}I}IprotectedoverrideboolReleaseHandle()I{if(!IsInvalid)I{libvlc_media_player_release(this);handle=IntPtr.Zero;I}returntrue;I}IprotectedoverridevoidDispose(booldisposing)I{ReleaseHandle();base.Dispose(disposing);I}II//Dll动态导入[DIIImport("libvlc")]privatestaticexternvoidlibvlc_media_player_release(MediaPlayerHandlemediaPlayerHandle);}}usingSystem;usingSystem.Runtime.InteropServices;InamespaceMyOwnPlayer{classMediaPlayerI{I//mediaPlayerHandle字段和属性privateMediaPlayerHandlemediaPlayerHandle;publicMediaPlayerHandleMediaPlayerHandleI{get{returnmediaPlayerHandle;}I}II〃构造方法publicMediaPlayer(MediaHandlemediaHandle,refExceptionStructex)I{mediaPlayerHandle=libvlc_media_player_new_from_media(mediaHandle,refex);I}II〃设置父窗口publicvoidVedioSetParent(CoreHandlecoreHandle,IntPtrhDT,refExceptionStructex)I{Iibvlc_video_set_parent(coreHandle,hDT,refex);TOC\o"1-5"\h\zI}II〃播放publicvoidPlay(refExceptionStructex)I{libvlc_media_player_play(mediaPlayerHandle,refex);I}II〃停止publicvoidStop(refExceptionStructex)I{libvlc_media_player_stop(mediaPlayerHandle,refex);I}II//Dll动态导入[DIIImport("libvlc")]privatestaticexternMediaPlayerHandlelibvlc_media_player_new_from_media(MediaHandlelibvlc_media_handle,refExceptionStructex);I[DllImport("libvlc")]privatestaticexternvoidlibvlc_video_set_parent(CoreHandlecoreHandle,IntPtrhDT,refExceptionStructex);I[DllImport("libvlc")]privatestaticexternvoidlibvlc_media_player_play(MediaPlayerHandlemediaPlayerHandle,refExceptionStructex);I[DllImport("libvlc")]privatestaticexternvoidlibvlc_media_player_stop(MediaPlayerHandlemediaPlayerHandle,refExceptionStructex);}}基本工作做好了。下一步建立一个Form,里面画一个Panel(播放容器),画一个Textbox(播放地址),画一个Button(播放按钮),Button的点击事件为:Iprivatevoidbutton1_Click(objectsender,EventArgse){I〃要播放的文件的uristringuri=this.textBox1.Text;〃进行播放的控件的句柄IntPtrhdl=this.panell.Handle;〃播放参数string[]argv=newstring[]{"-I","--ignore-config"};〃vlc对象的创建ExceptionStructex=newExceptionStruct。;Corecore=newCore(argv,refex);Mediamedia=newMedia(core.CoreHandle,uri,refex);MediaPlayerplayer=newMediaPlayer(media.MediaHandle,refex);〃垃圾回收GC.Collect();〃播放player.VedioSetParent(core.CoreHandle,hdl,refex);player.Play(refex);〃继续回收垃圾等相关操作GC.Collect();GC.WaitForPendingFinalizers();基本的播放功能就是这样实现的。其他接口请参考源码下面的\include\vlc\libvlc.h文件,里面有比较详细的对外接口的说明。以上代码已经发送到附件中(MyOwnPlayer.rar),参考网址的楼主写的代码也在附件中(Marx_libvlc_wrapper(2).zip)。调试附件请注意第1步。vic的应用之五:动态调用libvlc・dll的补充2009-03-0915:16:17标签:libvlc_newlibvlc.dllWinFormvicC#原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/539865/136931最近Jeremiah在增加以前播放器的功能的时候,被一个中文路径转码问题恶心了两天,最后终于让我给解决了。在这跟大家分享这个转码的解决方法,以及用视频本次存储的接口实现。在看本篇日志之前,请先看我以前写的《vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll》补充一:libvlc_new(...)接口的中文路径转码处理usingSystem;usingSystem.Runtime.InteropServices;InamespaceMyOwnPlayer{classCoreI{I//coreHandle字段和属性privateCoreHandlecoreHandle;publicCoreHandleCoreHandleTOC\o"1-5"\h\zI{get{returncoreHandle;}I}II〃构造方法publicCore(string[]argv,refExceptionStructex)I{byte[][]argvbytes=newbyte[argv.Length][];Ifor(inti=0;i<argv.Length;i++)I{argvbytes[i]=Encoding.UTF8.GetBytes(argv[i]);I}IcoreHandle=libvlc_new(argv丄ength,ReturnlntPtr(argvbytes,argv.Length),refex);I}II〃转换函数privateIntPtrReturnlntPtr(byte[][]data,intlength)I{IntPtr[]dataIntPtrArr=newIntPtr[length];for(inti=0;i<length;i++)I{dataIntPtrArr[i]=Marshal.AllocHGIobal(data[i].Length*sizeof(byte));Marshal.Copy(data[i],0,dataIntPtrArr[i],data[i].Length);I}IntPtrdataIntPtr=Marshal.AllocHGlobal(length*Marshal.SizeOf(typeof(IntPtr)));Marshal.Copy(dataIntPtrArr,0,dataIntPtr,length);returndataIntPtr;I}II//Dll动态导入[DIIImport("libvlc")]privatestaticexternCoreHandlelibvlc_new(intargc,IntPtrargv,refExceptionStructex);}}补充二:本地存储。对libvlc_new的argv进行转码的主要目的就是为了进行本地存储,由于要将存储路径传入到argv中,所以要对中文的存储路径进行转码。下面的做法是将视频流默认存储为ts流,边播放边存储。//avPath是本地存储路径,需要注意路径的\和/的问题。argv=newstring[]{"--sout=#duplicate{dst=display,dst=std{access=file,mux=ts,dst="+avPath+"}}"};〃其他的就跟上一篇博客一样了。core=newCore(argv,refex);media=newMedia(core.CoreHandle,link,refex);player=newMediaPlayer(media.MediaHandle,refex);player.Play(refex);//一面播放一面存储关于其他形式的argv,可以在vlc的存储里面获得。vlc->媒体->convert/save->转换/保存。根据选择不同的形式,在vlc界面的下半部分会有Generatedstreamoutputstring。这个就是具体的argv。不过,请注意将:sout换成一sout。windows平台下vic编译之六:vlc-0・9・8a的编译2008-12-2011:18:20标签:windowscygwincompile休闲vic原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/539865/121316首先感谢vic的qq群*阿来*帮忙解决了一个关键问题。vic用Cygwin编译老是会出这样那样的问题,所以编译起来是相当相当的郁闷。vic-0.9.6版的官方提供的版本会有几个严重的缺陷,在官方网站上面已经郑重道歉了。vic-0.9.8a是目前发行的最新版,所以对其编译是势在必行的。废话了这么多,进入正题。简单写一下,如果有不明白的,看看前面几篇日志。编译环境,目前最新的Cygwin。(《windows平台下vic编译之五:vic-0.9.6的编译》提供下载地址)源码和库:源码:[uri]/pub/videoian/vic/0.9.8a/vic-0.9.8a.tar.bz2[/uri]库:contrib-20081021—win32—bin—gcc-4.2.1—sjij-runtime-3.13-oniy.tar.bz2在我的公共邮箱提供了下载,具体下载方式为:.登录.用户名:jeremiah_vlc.密码:发邮件给我(jeremiah.vlc@),我会告知。.在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。)执行sed-i's/AM_GNU_GETTEXT_VERSION(0.17)/AM_GNU_GETTEXT_VERSION(0.15)/g'configure.ac./bootstrap保存如下脚本为configure-vlcOl.shPATH=/usr/win32/bin:$PATH\PKG_CONFIG—口BDIR=/usr/win32/lib/pkgconfig\CPPFLAGS="-I/usr/win32/include-I/usr/win32/include/ebml"\LDFLAGS=-L/usr/win32/lib\CC="gcc-mno-cygwin"CXX="g++-mno-cygwin"\./configure\--host=i686-pc-mingw32\--enable-nls--enable-sdl--with-sdl-config-path=/usr/win32/bin\--enable-avcodec--enable-avformat--enable-swscale\--enable-faad--enable-flac--enable-theora\--enable-freetype\--enable-fribidi\--enable-live555--with-live555-tree=HYPERLINK/usr/win32/\--enable-caca--with-caca-config-path=/usr/win32/bin\--with--config-path=/usr/win32/bin\--with-dvdnav-config-path=/usr/win32/bin\--disable-cddax--disable-vcdx--enable-goom\--enable-twolame--enable-dvdread\--enable-debug--enable-dca\--disable-mkv--disable-taglib\--disable-zvbi\--enable-mozilla--with-mozilla-sdk-path=/usr/win32/gecko-sdk执行./configure-vlcOl.sh执行make前改两个文件。(行数可能不对,用搜索功能吧)libtool第156行:修改global_symbol_pipe=""为global_symbol_pipe="sed-n-e's/人.*[]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[][]*\\(\\)\\([_A-Za-z][_A-Za-zO-9]*\\)\$/\\1\\2\\3\\3/p'"Makefile.am第695行修改cp"$(top_srcdir)/extras/package/win32/vlc.exe.manifest""$(win32_destdir)/"为cp"$(top_srcdir)/extras/package/win32/vlc.exe.manifest""$(win32_destdir)/"Makefile.am第725行:cp$(top_srcdir)/projects/mozilla/npvlc.dll.manifest$(win32_destdir)/mozilla/为cp$(top_srcdir)/projects/mozilla/npvlc.dll.manifest$(win32_destdir)/mozilla/Makefile.am第736行修改cp$(top_srcdir)/projects/activex/axvlc.dll.manifest$(win32_destdir)/activex/为cp$(top_srcdir)/projects/activex/axvlc.dll.manifest$(win32_destdir)/activex/执行make&&makepackage—win32—base。搞定!周末在家用git下载了vlc-l.O.O-git版本,编译了一下,出现了一个小错误倒腾了半天,源码里面的一函数定义有问题,修改了下,编译成功。由于Jeremiah在写这篇日志的时候官方没有发布1.0.0的源代码,git版本是很不稳定的,比如运行了一下发现界面做的就很不好,播放的画面是另外的一个窗口,而不是播放器本身的窗口。闲言少叙,开始正题。编译环境,目前最新的Cygwin。(《windows平台下vlc编译之五:vlc-0.9.6的编译》提供下载地址)源码和库由于源码官网未提供,git下载速度确实有点不敢恭维。有些朋友的公司还会用代理上网,比如我们公司就这样。git通过代理麻烦的很。所以‘Jeremiah把自己下载的源码放到网盘里面了,请需要的直接点击下载。并且,由于不知道git是不是每天更新,所以不能保证用git下载的和Jeremiah编译的是一个版本。源码:(在我的公共邮箱提供了下载,具体下载方式为:.登录.用户名:jeremiah_vlc.密码:发邮件给我(jeremiah.vlc@),我会告知。.在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。)库:contrib-20081021-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2(在我的公共邮箱提供了下载,具体下载方式为:.登录.用户名:jeremiah_vlc.密码:发邮件给我(jeremiah.vlc@),我会告知。.在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。)Jeremiah提供的源码里面修改了modules\stream_out\raop.c,如果是用git得到的,make的时候可能会遇到错误:.libs/libstream_out_raop_plugin_la-raop.o:Infunction'SplitHeader':/home/wangwei1/vlc-1.0.0/modules/stream_out/raop.c:550:undefinedrefereneeto'_vlc_strsep'/home/wangwei1/vlc-1.0.0/modules/stream_out/raop.c:558:undefinedrefereneeto'_vlc_strsep'.libs/libstream_out_raop_plugin_la-raop.o:Infunction'ExecRequest':/home/wangwei1/vlc-1.0.0/modules/stream_out/raop.c:593:undefinedrefereneeto'_vlc_strsep'/home/wangwei1/vlc-1.0.0/modules/stream_out/raop.c:646:undefinedrefereneeto'_vlc_strsep'/home/wangwei1/vlc-1.0.0/modules/stream_out/raop.c:602:undefinedrefereneeto'_vlc_strsep'Creatinglibraryfile:」ibs/libstream_out_raop_plugin.dll.acollect2:ldreturned1exitstatusmake[5]***[libstream_out_raop_plugin.la]Error1make[5]Leavingdirectory'/home/wangwei1/vlc-1.0.0/modules/stream_out'make[4]***[all-recursive]Error1make[4]Leavingdirectory'/home/wangwei1/vlc-1.0.0/modules/stream_out'make[3]***[all]Error2make[3]Leavingdirectory'/home/wangwei1/vlc-1.0.0/modules/stream_out'make[2]***[all-recursive]Error1make[2]Leavingdirectory'/home/wangwei1/vlc-1.0.0/modules'make[1]***[all-recursive]Error1make[1]Leavingdirectory'/home/wangwei1/vlc-1.0.0'make:***[all]Error2请自己修改modules\stream_out\raop.c,在一堆宏定义下面加入:Ichar*vlc_strsep(char**ppsz_string,constchar*psz_delimiters){char*psz_string=*ppsz_string;if(!psz_string)returnNULL;Ichar*p=strpbrk(psz_string,psz_delimiters);Iif(!p)I{*ppsz_string=NULL;returnpsz_string;I}p++='\0';Ippsz_string=p;returnpsz_string;}执行sed-i's/AM_GNU_GETTEXT_VERSION(0.17)/AM_GNU_GETTEXT_VERSION(0.15)/g'configure.ac./bootstrapcopy脚本configure-vlcOl.sh到源码中。脚本在附件(file.rar)里面提供了,与vlc-0.9.6的编译脚本完全相同。执行./configure-vlcOl.sh执行make前改个文件libtool第144行:修改global_symbol_pipe=""为global_symbol_pipe="sed-n-e's/人.*[]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[][]*\\(\\)\\([_A-Za-z][_A-Za-zO-9]*\\)\$/\\1\\2\\3\\3/p'"不想改就直接覆盖附件(file.rar)中提供的这个文件。执行make&&makepackage—win32—base。搞定!vic的应用之八:MFC调用libvlc・dll2009-07-2723:00:58标签:libvlc休闲vic职场mfc原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。/539865/184115本篇博客将简单介绍MFC调用libvlc.dll作一个简单的播放器,抛砖引玉,各位VC++达人继续深入研究,Jeremiah对VC++确实不太感兴趣,所以就不做太深入的研究了。2009.10.29修改:加入clip_children属性设置。参考第1步。2010.04.14修改:中文路径问题。参考第7步。环境:VC6SP5vlc-0.9.9a0.引言根据上一篇博客的研究,任何一个VC环境都可以调用MinGW/Gcc编译得到的libvlc.dlloVLC在编译打包之后(也就是执行完makepackage-win32-base),或者去官网下载zip包解压之后,或者是安装完VLC之后,在vlc-0.9.9a目录下有个sdk文件夹,里面又包含两个文件夹:include头文件及lib库。这些都是我们用MFC调用libvlc.dll所必须的。头文件没啥好说的,库里面的libvlc.dll.a及libvlccore.dll.a就是上一篇博客所说的静态库,我们分别手动改成libvlc.lib及libvlccore.lib就可以在VC环境中调用啦。下面简要说一下调用的过程,对各位VC++达人来说绝对是小菜一碟。建立工程新建MFCAppWizard(exe)工程,名字为:MFCVLC。选择项目为Dialogbased,点击完成。删除Dialog窗体上的所有的控件,包括“确定”、“取消”按钮及"T0D0"静态文本。勾选窗口的clip_children属性,这样就会避免拖动、最大化最小化及全屏还原时找不到图像的缺陷。画控件画四个控件,两个静态文本框,一个输入框,一个按钮。其中,第一个静态文本框修改Caption为“路径:”,第二个文本框为视频的显示区域,所以讲ID改为IDC_DISPLAY,Caption去掉。输入框关联一个变量,CString类型,命名为名为m_path。按钮的Caption改为“播放”,并为BN_CLICKED增加一个Function。在CMFCVLCdlg的构造方法中加入一下语句方便调试。m_path=_T("d:/01.avi");//输入常用的视频地址的膻abl的膻abl口@關凰回噪ft=日aE國Q33DT血nlscan回已垃ffl修拷贝vlc的相关库及头文件在资源管理器的MFCVLC工程目录下新建文件夹vlc,lib,将vlc-0.9.9a/sdk/include/vlc.h拷贝到MFCVLC工程目录下,将vlc-0.9.9a/sdk/include除了vlc.h之外的所有文件拷贝到vlc目录下,将vlc-0.9.9a/sdk/lib下的libvlc.dll.a及libvlccore.dll.a拷
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年福建福州公安招聘辅警真题
- 基于长短时记忆的CO2加富下番茄灌溉决策
- 山东名校考试联盟2024-2025学年高二下学期期中英语试题(含答案)
- 2025年二手奢侈品鉴定与交易规范创新模式与发展趋势报告
- 2025年二手交易电商平台信用评级与信用评价体系研究报告
- 2025年二手电商信用风险管理与信用评分模型构建报告
- 传动部件能效对标分析创新创业项目商业计划书
- 休闲箱包店铺创新创业项目商业计划书
- 2025年儿童教育游戏化:教学设计创新与效果实证研究
- 2025年动漫产业链协同创新与产业协同效应影响因素研究综述报告
- 学前儿童德育课件
- 2025年C++考试专用复习资料试题及答案
- 2025年江苏省无锡市河埒中学教育集团中考二模英语试题
- 2025年中考英语冲刺仿真模拟测试卷(含答案)
- 2025国家开放大学《商务英语1》综合测试形考任务答案
- 浪潮软件开发面试题目及答案
- 2025年全国保密教育考试试卷附答案(三套)
- 2025年保密观题库及答案
- 2025年河北中考模拟(原创一)语文试题及答案
- 股权代签协议书范本
- 生物安全柜试题及答案
评论
0/150
提交评论