windows平台下VLC2.0.5编译
windows平台下VLC2.0.5编译说明
时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器。
暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学习研究使用。但是在对流媒体几乎没有了解的情况下,能有个学习的东西也好。
第一步肯定是要编译VLC了,目前最新的vlc版本是2.0.5,去官网下了2.0.5的源代码,准备开工。
百度了下,没有找到前辈们在windows下编译vlc 2.0.5的资料,没办法,只好自己照着官网的资料来搞了。官网的链接是http://wiki.videolan.org/Win32CompileMSYSNew
话说在官网上死活找不到win32编译的网页,后来还是在别人的博客上发现了这个链接的。这篇博文也是对vlc 官网上win32编译教程的翻译,不过是1.1.0版本的。链接:http://blog.csdn.net/wangyong0921/article/details/8103667
接下来进入正题了,主要内容是对官网教程的翻译,掺杂了解决问题过程中查找的资料,以及自己遇到的问题及解决方法,写这篇博文的目的一方面希望以后能够方便的回顾相关资料,另一方面也希望对遇到相同问题的朋友有点帮助。
由于本人英语及其差劲,翻译可能有很多词不达意或错误,敬请谅解,同时感谢上面那篇博文的博主,很多地方的翻译是参考了他的成果,非常感谢!
==================================================================================
以下是正文
==================================================================================
简介
注意事项:
1.本博文涉及到相关资料、链接都可能随着时间过去而失效,请以vlc官网为准。
2.下文经常需要下载文件并解压到某某目录,请将文件夹里的内容拷贝到相应的文件夹,不要直接覆盖整个文件。
3.请确保登陆的WINDOWS用户名不包含空格(VLC不会建立在一个文件名中包含空格的文件夹内)。
4.编译环境为:Windows XP SP3(32位系统)
相关概念
-----------------------
MinGW:
境,它是Minimalist GNU on Windows的略称。这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC (Microsoft
Foundation Classes微软基础类库)。
Accept Post Install: [y]
MinGW Installed? [y]
path to MinGW: [c:/MinGW]
URL: http://sourceforge.net/projects/gnuwin32/files/wget/1.11.4-1/wget-1.11.4-1-setup.exe/download
解压到c:\MinGW
AutoTools and libcrypt
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/autoconf/autoconf-2.68-1/autoconf-2.68-1-msys-1.0.17-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/automake/automake-1.11.1-1/automake-1.11.1-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/libtool/libtool-2.4-1/libtool-2.4-1-msys-1.0.15-bin.tar.lzma/download
- http://prdownloads.sourceforge.net/mingw/libcrypt-1.1_1-2-msys-1.0.11-dll-0.tar.lzma
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/perl/perl-5.8.8-1/perl-5.8.8-1-msys-1.0.17-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/m4/m4-1.4.14-1/m4-1.4.14-1-msys-1.0.13-bin.tar.lzma/download
Glib and PKG-CONFIG
同样下载以下文件并解压到C:\Msys\1.0
需要注意的是第一个链接需要下载最新版本,目前测试通过最新版本是glib 2.28, non-dev版本
- http://ftp.gnome.org/pub/GNOME/binaries/win32/glib
- ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip
- ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-dev_0.23-3_win32.zip
- http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip
注意:作者在编译glib 2.1版本的时候需要xgettext, msgmerge, msgfmt等等,但这里又变成了需要libiconv,作者不能肯定这里提供的资料是否完整。
添加PKG配置路径变量
在C:\MSys\1.0\msys.bat添加,据wangyong0921翻译,可以直接运行msys.bat,然后输入下面的语句
set PKG_CONFIG_PATH=/win32/lib/pkgconfig
编译LUA工具
VLC采用LUA脚本语言,我们需要先编译LUA工具
URL:http://www.lua.org/ftp/lua-5.1.4.tar.gz
解压到home文件夹(C:\MSys\1.0\home\<username>)
运行Msys并执行下列指令
cd /home/<username>/lua-5.1.4
make mingw
make install
VLC源代码
好吧,终于要进入正题了。。
Git
-------------------------
打开Git,下载contrib
git clone git://git.videolan.org/vlc.git
获取预编译contrib
------------------------
cd vlc/contrib
mkdir win32 && cd win32
../bootstrap --build=i586-mingw32msvc
make prebuilt
这里需要注意几点
1.如果执行过../bootstrap --build=i586-mingw32msvc,再次执行该指令可能会提示unlink command not found,手动删除win32目录,然后重新执行上面的指令即可。
2.在git中直接输入make prebuilt,可能会提示make command not found,请改成输入* make prebuilt
3.在笔者电脑上,运行git执行* make prebuilt不能正常执行make prebuilt,后来无奈将下载的vlc目录copy到home目录下(C:\MSys\1.0\home\<username>),运行msys并打开\home\<username>\vlc\contrib,执行上面的语句。
sed:invalid option --i
echo "Fixing up $file"
sed -i.orig -e "s,$old_prefix,$new_prefix,g" $file
rm -f $file.orig
echo "Fixing up $file"
# sed -i.orig -e "s,$old_prefix,$new_prefix,g" $file
sed -e "s,$old_prefix,$new_prefix,g" $file>$(file).new
mv $file.new $file
rm -f $file.new
tar: i586-mingw32msvc/lib/libdts.a: Cannot create symlink to `/home/jb/vlc/contrib/i586-mingw32msvc/lib/libdca.a': No such file or directory
tar: Error exit delayed from previous errors
make: *** [prebuilt] Error 2
mv i586-mingw32msvc ..
cd ../i586-mingw32msvc
change_prefix.sh
mv: cannot move `./change_prefix.sh.tmp' to `./change_prefix.sh': Permission denied
mv $file.new $file.
echo '<username>'
old: AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2> /dev/null || hostname`", [host which ran configure])
new: AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname`", [host which ran configure])
cd vlc
cp -v /usr/share/aclocal/* m4/
bootstrap
autom4te-2.68:failed to run /bin/m4: Bad file number
aclocal: /usr/bin/autom4t3-2.68 failed with exit status: 1
autoreconf: failed to run aclocal: Bad file number
sh extras/package/win32/configure.sh --host=i586-pc-mingw32msvc --disable-nls
configure: error: Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error
sh extras/package/win32/configure.sh --host=i586-pc-mingw32msvc --with-contrib=contrib/i586-mingw32msvc --disable-nls
PATH=/usr/win32/bin:$PATH make
make package-win32-base
make package-win32-zip
make package-win32
make package-win32-base-debug
make: *** No rule to make target `package-win32-base'. Stop.
git、svn、makensis等not found
------------------------------------------------
git:从git安装目录下将git.exe拷到 C:\msys\1.0\bin\.
svn:从collab.net.下载
makensis: 按照下面修改makefile文件
# Create package
# if makensis -VERSION >/dev/null 2>&1; then \
# MAKENSIS="makensis"; \
# elif [ -x "/cygdrive/c/Program Files/NSIS/makensis" ]; then \
# MAKENSIS="/cygdrive/c/Program\ Files/NSIS/makensis"; \
# elif [ -x "$(PROGRAMFILES)/NSIS/makensis" ]; then \
# MAKENSIS="$(PROGRAMFILES)/NSIS/makensis"; \
# elif wine --version >/dev/null 2>&1; then \
# MAKENSIS="wine C:/Program\ Files/NSIS/makensis.exe"; \
# else \
# echo 'Error: cannot locate makensis tool'; exit 1; \
# fi; \
# eval "$$MAKENSIS $(win32_destdir)/spad.nsi"; \
# eval "$$MAKENSIS $(win32_destdir)/vlc.win32.nsi"
source: C:\msys\1.0\home\<username>\vlc\contrib\i586-mingw32msvc\moc.exe
target: C:\msys\1.0\bin\moc.exe
grep ':' Makefile | grep package-win32
windows平台下VLC2.0.5编译的更多相关文章
- [转]Windows平台下Makefile学习笔记
Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...
- Windows平台下Qt QOpenGL中glutSolidSphere()方法未定义的解决方法
Windows平台下Qt中glut库的使用 用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是 ...
- <转>Windows平台下Makefile学习笔记(二)
本文转自:http://blog.csdn.net/clever101/article/details/8286066 上次我们学习了怎么用Makefile编译一个控制台工程.这次我们学习一下如何使用 ...
- 【VS开发】Windows平台下Makefile学习笔记
作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开 ...
- Windows平台下Git服务器搭建
第一步:下载Java,下载地址:http://www.java.com/zh_CN/ 第二步:安装Java.安装步骤不再详述. 第三步:配置Java环境变量. 右键”计算机” => ”属性” = ...
- Windows平台下PHP开发环境的配置
Windows平台下PHP开发环境的配置 一.基本环境 1.Windows XP 32位 2.Apache 2.2.25,下载地址:http://mirror.bit.edu.cn/apache/ht ...
- Mac平台与Windows平台下AndroidStudio增量升级
Android Studio增量升级什么情况下使用最合适呢? 比如现在的as版本是2.2版本,而你的as版本2.0版本,这个时候点Check For Updates就没有反应了,因为你已经2个有版本没 ...
- 【转】Windows平台下Git服务器搭建
Windows平台下Git服务器搭建 Posted on 2015-05-18 21:29 阿祥当码农 阅读(7637) 评论(0) 编辑 收藏 该文章转自:http://www.codeceo.co ...
- windows平台下nginx+PHP环境安装
因为日常工作在windows下,为方便在window是下进行PHP开发,需要在windows平台下搭建PHP开发环境,web服务器选择nginx,不过windows版本的nginx性能要比Linux/ ...
随机推荐
- 自定义函数实现NULL值替换
数据库环境:SQL SERVER 2005 有时候,想将查询查询数来的数据格式化一下,不希望显示NULL值,或者复制表的数据时,被插入的表不允许有NULL. 我们可以通过ISNULL()函数或者COA ...
- iOS调试程序时,启动应用失败的解决办法
最近在iOS项目中调试程序,项目中用到第三方应用来启动我的应用程序,调试阶段在实体机上用第三方应用启动我的应用时,出现如下错误,程序停止运行: 同时,在AppDelegate对象的如下方法中设置断点: ...
- SVG实现描边动画
说起SVG,我是恨它又爱它,恨它是因为刚开始接触的时候自己傻B地想用代码去写它,其实在web上我们用它做交互也只是用了几个常用的特性而已,其他的标签知道这么一回事就成了,其实说白了它就是一种图片格式, ...
- js事件冒泡和事件委托
js事件冒泡 js所谓的事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行 html: <ul class="clearfix" data-type=&q ...
- NOIP(提高组)DAY1国王游戏
问题描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这n位大臣排成一排,国王站在队伍的最前面.排好队 ...
- SVN: revert all command
If you accidentally marked all your files as "delete" (your file/folder has a red x on it) ...
- 顺序表 C++模板实现
#include <iostream> using namespace std; template <typename T> class list{ private: int ...
- thinkphp分页实现
以上为我对于thinkphp分页的实现效果,两种方法,一种调用公共函数中的函数方法(参考http://www.cnblogs.com/tianguook/p/4326613.html),一种是在模型中 ...
- (转载)Delphi TStringList的用法
Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...
- osg 基本几何图元
转自:osg 基本几何图元 //osg 基本几何图元 // ogs中所有加入场景中的数据都会加入到一个Group类对象中,几何图元作为一个对象由osg::Geode类来组织管理. // 绘制几何图元对 ...