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

简介: 首先是创建VLC的编译环境。 到http://sourceforge.net/project/showfiles.php?group_id=2435下载相关文件。 下载MinGW-5.1.3.exe或者更高的版本,然后运行,按照提示安装,最好选择安装full版本。

首先是创建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等格式的多媒体文件以及接收播放网络流媒体。

相关文章
|
Oracle 网络协议 关系型数据库
Oracle会话超时设置1:在sqlnet.ora和listener.ora中设置
这篇文章是Oracle会话超时设置的第一个文章,简述和Oracle 数据库 net services有关的会话超时管理。
2089 0
Oracle会话超时设置1:在sqlnet.ora和listener.ora中设置
|
11月前
|
移动开发 HTML5
HTML5 3D地球仪可按经纬坐标定位特效
这是一个基于HTML5的3D地球仪动画,地球仪不仅可以自动自西向东旋转,而且还可以旋转到指定经纬度坐标。另外,还有一个控制面板,可以控制地球是否自转、光晕是否显示,以及地理缩放。你也可以通过拖拽鼠标来改变地球仪的视角,可以将它移至南北极的视角,也可以移至赤道的视角,非常方便。需要的朋友可下载试试!
572 2
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
网络协议 Ubuntu Linux
gpg从公钥服务器接收失败(gpg: keyserver receive failed: Server indicated a failure)
通过上述步骤,大多数情况下应该能够解决GPG从公钥服务器接收失败的问题。如果问题依旧存在,可能需要进一步调查与公钥服务器相关的更深层次的技术问题,或者考虑在相关社区论坛寻求帮助。
2772 1
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
806 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
JSON 数据格式 索引
Jackson行为特征SerializationFeature和DeserializationFeature【收藏】
Jackson行为特征SerializationFeature和DeserializationFeature【收藏】
|
缓存 Shell 开发工具
Git Bash⭐一、安装软件,与Git Bash基础命令
Git Bash⭐一、安装软件,与Git Bash基础命令
|
Linux 开发者 iOS开发
QT:基于QMediaPlayer制作的视频播放器(最下方有整合包,可直接运行)
QMediaPlayer是Qt多媒体模块中的一个核心类,它提供了播放音频和视频内容的功能。这个类的设计旨在简化跨平台的媒体播放,使得开发者能够在多种操作系统(如Linux、Windows、macOS及移动平台)上轻松集成多媒体播放能力到他们的应用中,而无需关心底层实现细节。以下是关于QMediaPlayer的一些关键点:
689 0
|
存储 供应链 安全
解释区块链技术的应用场景、优势及经典案例
解释区块链技术的应用场景、优势及经典案例
1878 0
|
XML Java Android开发
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
1303 2