视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于VLC的网络视频播放器
2025-09-29 09:07:18 责编:小OO
文档
基于VLC的网络视频播放器

bavon@163.com

VLC Media Player(www.videolan.org/vlc/) 是一个优秀的、跨平台、支持多种传输协议、支持多种视频编码格式的视频播放器(同时也可以作为服务器)。VLC提供了二次开发包,在windows下可以利用VLC提供的ActiveX控件来进行二次开发。本文档介绍了如何在win32平台上利用mingw进行VLC的移植,并通过VLC的ActiveX进行二次开发,实现一个多媒体播放器。

在win32平台上利用mingw进行VLC的移植

首先是创建VLC的编译环境。

到http://sourceforge.net/project/showfiles.php?group_id=2435下载相关文件。

下载MinGW-5.1.3.exe或者更高的版本,然后运行,按照提示安装,最好选择安装full版本。

下载MSYS-1.0.10.exe或者更高的版本,然后运行,按照提示安装,中间要正确填写已经安装好的MinGW的目录,例如“j:/MinGW”。主要要用“/”。

下载msysDTK-1.0.0.exe或者更高的版本,然后运行,按照提示安装。

其次是编译VLC。

下载http://download.videolan.org//pub/testing/win32/contrib-0.8.6e-gcc-3.4.5-only.tar.bz2 到某个目录,如“j:\\vlc”。

到http://www.videolan.org/vlc/download-sources.html下载VLC source code tar.gz文件到上述目录。

运行msys程序,在弹出的控制终端中输入

mkdir /vlc

然后用windows的记事本编辑器编辑msys\\1.0\\etc\\fstab文件,在里面加入一行 j:/VLC /vlc,这样可以挂载vlc目录。

在msys的控制终端中输入

cd /vlc

tar jxvf contrib-0.8.6e-gcc-3.4.5-only.tar.bz2 –C /

会把解码库解压到/usr/win32-branch目录中。

在当前目录继续输入

tar zxvf vlc-0.8.6e.tar.gz

将vlc的源代码解压缩到vlc-0.8.6e目录中。

在当前目录继续输入

  cd vlc-0.8.6e

  ./bootstrap 

  PKG_CONFIG_PATH=/usr/win32-branch/lib/pkgconfig \

  CPPFLAGS="-I/usr/win32-branch/include -I/usr/win32-branch/include/ebml" \

  LDFLAGS=-L/usr/win32-branch/lib \

  ./configure \

      --disable-gtk \

      --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32-branch/bin \

      --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \

      --with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora \

      --with-wx-config-path=/usr/win32-branch/bin \

      --with-freetype-config-path=/usr/win32-branch/bin \

      --with-fribidi-config-path=/usr/win32-branch/bin \

      --enable-caca --with-caca-config-path=/usr/win32-branch/bin \

      --with-xml2-config-path=/usr/win32-branch/bin \

      --with-dvdnav-config-path=/usr/win32-branch/bin \

      --disable-cddax --disable-vcdx --enable-goom \

      --enable-twolame --enable-dvdread \

      --disable-mkv \

      --enable-debug

开始VLC的配置,然后执行

make

开始编译。编译过程中先出现如下错误:

j:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/sys/stat.h:113: error: syntax error before "off_t"

j:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/sys/stat.h:118: error: syntax error before '}' token

make[4]: *** [libaccess_output_file_plugin_a-file.o] Error 1

make[4]: Leaving directory `/vlc/vlc-0.8.6e/modules/access_output'

make[3]: *** [all-modules] Error 1

make[3]: Leaving directory `/vlc/vlc-0.8.6e/modules/access_output'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/vlc/vlc-0.8.6e/modules'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/vlc/vlc-0.8.6e'

make: *** [all] Error 2

原因是:没有在sys/stat.h之前包含“config.h”文件。这2个头文件有冲突。

解决办法:将vlc-0.8.6e /modules/access_out/file.c和vlc-0.8.6e /modules/access_out/udp.c这两个文件的“#include ”注释掉。

继续编译,又同样出类似问题

j:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/sys/stat.h:113: error: syntax error before "off_t"

j:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/sys/stat.h:118: error: syntax error before '}' token

make[6]: *** [libmux_ps_plugin_a-pes.o] Error 1

make[6]: Leaving directory `/vlc/vlc-0.8.6e/modules/mux/mpeg'

make[5]: *** [all-modules] Error 1

make[5]: Leaving directory `/vlc/vlc-0.8.6e/modules/mux/mpeg'

make[4]: *** [all-recursive] Error 1

make[4]: Leaving directory `/vlc/vlc-0.8.6e/modules/mux'

make[3]: *** [all] Error 2

make[3]: Leaving directory `/vlc/vlc-0.8.6e/modules/mux'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/vlc/vlc-0.8.6e/modules'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/vlc/vlc-0.8.6e'

make: *** [all] Error 2

解决办法:将vlc-0.8.6e\\modules\\mux\\mpeg\\pes.c文件的“#include ”注释掉。

继续编译,还是有问题

j:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/wchar.h:419: error: `off_t' does not name a type

make[3]: *** [libaxvlc_a-main.o] Error 1

make[3]: Leaving directory `/vlc/vlc-0.8.6e/activex'

make[2]: *** [all] Error 2

make[2]: Leaving directory `/vlc/vlc-0.8.6e/activex'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/vlc/vlc-0.8.6e'

make: *** [all] Error 2

原因:off_t类型没有定义。

解决办法:在MinGW/include/wchar.h文件中加入如下代码:

#ifndef _OFF_T_DEFINED 

typedef long off_t;

#define _OFF_T_DEFINED

#endif

继续编译,可以通过,并在vlc-0.8.6e目录下面生成vlc.exe可执行文件,这就是可以用于windows下的VLC了。通过实验,编译成功的文件可以播放*.mpg、*.mp3等格式的多媒体文件以及接收播放网络流媒体。

通过VLC的ActiveX进行二次开发,实现一个多媒体播放器

首先要注册VLC的ActiveX控件。

拷贝vlc-0.8.6e\\activex目录下面的axvlc.dll文件到c:\\windows目录下面,然后运行命令提示符cmd。在命令提示符中输入如下命令注册该控件

REGSVR32 C:\\WINDOWS\\AXVLC.DLL

系统会提示注册成功,但是实际上是无法使用播放功能的!通过分析注册表的注册信息知道,播放的时候依赖的一些动态链接库没有在ActiveX中。

所以得去选择适合Windows下的VLC播放器,取其编译好的插件。到http://www.videolan.org/vlc/download-windows.html下载播放器并安装,然后复制其目录下的axvlc.dll、axvlc.oca、libvlc.dll、npvlc.dll以及plugins下的所有文件到某个目录(例如myRelease)中,作为支持VLC ActiveX控件运行的基础。有了这些文件之后就可以卸载安装的VLC,使用自己开发的播放器了。

运行命令cmd,进入myRelease目录,执行下面的命令注册VLC ActiveX控件:

REGSVR32 AXVLC.DLL

然后使用VC++6.0开发一个简单的播放器。具体开发过程不详述了,请参考myVLC目录下面的myVLC.dsw工程文件。

由于VLC没有使用文档,更加没有ActiveX的开发手册,开发时使用的是VLC ActiveX Plugin v1,通过阅读vlccontrol.h文件中的类声明来了解VLC控件的用法的。从中可以知道它实现了基本的播放功能,但是没有提供获取文件播放时间的接口,所以无法使用时间来显示播放进度,只能以播放百分比来表示。

播放器使用方法

运行myVLC.exe后,打开一个VLC控件支持的多媒体文件就可以播放了。

该播放器可以实现以下功能:

1.全屏显示:在播放视频时,可以双击VLC播放窗口实现全屏显示与窗口显示的切换。目前还不知道如何刷新窗口,当播放窗口被部分遮住时,可能会无法自动刷新,得通过全屏切换来实现刷新。

2.进度显示:播放过程中,进度条显示播放进度,进度条旁边的标签显示播放百分比。拖动进度条不会改变播放进度。

3.“FileName”:显示已经打开的文件或者URL。

4.“OpenFile”:选择并播放一个磁盘上的多媒体文件

5.“PlayURL”:在文本输入框中输入网络流媒体URL后单击进行播放。如果接收的是广播,则无法快进/快退、调整播放速度、暂停/继续等。

6.“Play”:从文件的开始处播放。

7.“Pause/Resume”:暂停/继续的切换。

8.“Stop”:停止播放,播放窗口显示VLC的logo。

9.“Backward”:后退5秒钟。在播放mpeg视频时,这个按钮有用,在播放mp3时会导致重新播放。

10.“Forward”:前进5秒钟。在播放mpeg视频时,这个按钮有用,在播放mp3时会导致重新播放。

11.“PlaySlower”:减慢播放速度。单击一次减少一半的速度,最慢只能达到正常速度的1/8。

12.“PlayFaster”:加快播放速度。单击一次增加一倍的速度,最快只能达到正常速度的8倍。

13.“-”“+”:调节音量,每次以5增加或者减少。

14.“Mute”:静音/非静音的切换。

15.“About”:作者信息。

16.“Exit”:退出应用程序。下载本文

显示全文
专题