博客统计信息

51cto推荐博客
用户名:jeremiah
文章数:41
评论数:558
访问量:556314
无忧币:1208
博客积分:1490
博客等级:5
注册日期:2008-11-20

我的技术圈(2)

更多>>
windows平台下vlc编译之十:vlc-1.0.0的编译
2009-07-15 21:19:46
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeremiah.blog.51cto.com/539865/178696
        VLC-1.0.0正式版已经发布。Jeremiah抽空编译测试了一下,发现没啥太大问题,比较好用,也更加人性化,增加了buffer的显示和历史输入的提示。在这Jeremiah想把VLC-1.0.0的编译过程写详细一些,省得大家再往前翻看以前的博客了。
 
2009-07-30更新:vlc-1.0.1编译,与vlc-1.0.0编译相同,提供vlc-1.0.1源码下载地址。
2010-04-15更新:vista或win7下面使用cygwin可能出现fork不出来的现象,解决方法见第8步。感谢vlc研究2群hali的提醒和帮助。
 
        1. Cygwin的安装
        Jeremiah继续使用Cygwin-new(20081208)版。最新的Cygwin应该也问题不大。Cygwin-new(20081208)在我的公共邮箱提供了下载,具体下载方式为:
2). 用户名:jeremiah_vlc
3). 密码:发邮件给我(
jeremiah.vlc@gmail.com),我会告知。
4). 在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。
        安装过程中选择包为
Archive        
                unzip    
                zip    
Devel        
                autoconf    
                automake    
                binutils    
                cvs    
                gcc    
                gcc-core    
                gcc-g++    
                gcc-mingw    
                gcc-mingw-core    
                gcc-mingw-g++    
                gdb    
                gettext    
                gettext-devel
                git    
                libiconv
                libgcrypt-devel
                libtool    
                make    
                mingw-runtime
                nasm
                patchutils
                pkg-config    
                subversion    
Editor        
                vim    
Libs        
                expat
                libgcrypt
Web        
                curl
                wget
 
        2. 源码及库
解压源码到~(/home/yourname)下,解压库到/下。这里的解压都可以直接用winrar解压,不过要选对目录哟,源码是解压在X:/cygwin/home/yourname下面,库是解压到X:/cygwin/下面。
 
        3. 一点点清理工作
        删除/usr/win32/bin下面的moc,rcc,uic这三个文件,注意,保留moc.exe,rcc.exe,uic.exe。
 
        4. bootstrap
        cd到vlc-1.0.0中执行
./bootstrap
        成功后会显示
Successfully bootstrapped
 
        5.  configure
        保存以下脚本为myvlc.sh
PATH=/usr/win32/bin:$PATH \
PKG_CONFIG_LIBDIR=/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=/usr/win32/live.com \
                 --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
        执行
./myvlc.sh
        成功后会显示
libvlc configuration
--------------------
version                             : 1.0.0
system                                : mingw32
architecture                    : i686 mmx sse sse2
build flavour                 : debug devel
vlc aliases                     : cvlc rvlc svlc qvlc
plugins/bindings            : activex mozilla

You can tune the compiler flags in vlc-config.
To build vlc and its plugins, type `./compile' or `make'.
 
        6. 修改工作
        (1) 修改libtool第144行。
修改        
global_symbol_pipe=""        
为        
global_symbol_pipe="sed -n -e 's/^.*[                 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[                                                 ][                                                ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1\\2\\3 \\3/p'"
        (2) 注释掉Makefile.am第700,730,741行,就是行首加入#。
#             cp "$(top_srcdir)/extras/package/win32/vlc.exe.manifest" "$(win3
2_destdir)/"

#             cp $(top_srcdir)/projects/mozilla/npvlc.dll.manifest $(win32_des
tdir)/mozilla/

#             cp $(top_srcdir)/projects/activex/axvlc.dll.manifest $(win32_des
tdir)/activex/
        (3) 修改share/Makefile.am第1行,share/Makefile第639行,share/Makefile.in第639行。
修改
MOSTLYCLEANFILES = $(nobase_vlcdata_DATA)

MOSTLYCLEANFILES = skins2/default.vlt
        注意行数可能不对,请对照着改。
        解释下这些错误的修改。
        第一个错误主要是一个正则表达式,libtool的问题。
        第二个错误因为在执行make package-win32-base的时候,会提示找不到某些manifest文件,所以注释掉,让它在打包的时候不去cp这些manifest。
        第三个错误是vlc-1.0.0特有的。主要是执行make clean后再次make会出现No rule to make target `skins2/fonts/FreeSans.ttf'的错误。主要是clean的时候把FreeSans.ttf等文件给删除了,这样的修改防止了错误删除。
 
        7. make
        执行
make
        应该不会报错,成功后,执行
make package-win32-base
        就此搞定!
 
        8. vista或win7有可能出现fork不出来的错误,如下:
8928 [main] perl 4540 C:\cygwin\bin\perl.exe: *** fatal error - unable to remap C:\cygwin\li
b\perl5\5.10\i686-cygwin\auto\File\Glob\Glob.dll to same address as parent(0x910000) != 0x9F000
0
            8 [main] perl 4476 fork: child 4540 - died waiting for dll loading, errno 11
         参考官网的解决方法:
It might fail with some unable to remap error <some_dll_file_name>. It seems you need to rebase all Cygwin DLLs: close all your cygwin applications and launch 'ash' from basic windows command prompt (Start -> Run -> cmd), from there run rebaseall (so start e.g. C:\cygwin\bin\ash.exe and type there text below).    

/bin/rebaseall -v
        也就是在cmd下面运行
X:\cygwin\bin\ash.exe
        然后在里面执行
/bin/rebaseall -v
        将cygwin所有使用的dll重新rebase一遍,就能解决问题。

本文出自 “海狗哥的流媒体空间” 博客,请务必保留此出处http://jeremiah.blog.51cto.com/539865/178696

分享至
更多
一键收藏,随时查看,分享好友!

文章评论

 <<   1   2   3   4   5   >>   页数 ( 1/9 )  
2009-07-20 17:40:56
体验了下,比较好用,确实也更加人性化

2009-07-27 08:49:38
很好的博文,继续关注中。。。

2009-08-01 18:51:27
请教,我用的是vlc1.0.1版本,在执行./myvlc.sh时出现configure无法找到,请指点一下
博主回复:
2009-08-01 20:04:56
./bootstrap了吗?
是在vlc源码目录下执行的./configure吗?
有视频可以下载来看。

2009-08-19 22:51:35
楼主,问个问题,后面的版本都没有axvlc.cab文件了,插件如何解决这个调用的问题,还是根本就不依赖这个cab了,还是怎么样,等待你的回复,谢谢
博主回复:
2009-08-20 10:49:30
axvlc.cab是自己制作的.... 参考我前面的博客.

2009-08-20 10:08:09
楼主,你好,问个问题,问什么9.0以前版本可以播264文件,但播不了rmvb的文件(其他类型没试),而9.0以后则倒过来了,能播rmvb但播不了264文件
博主回复:
2011-05-13 08:58:31
对于ffmpeg做了调整。rmvb是我们群里面一个大牛加上去的。所以0.9以前版本不支持。

 <<   1   2   3   4   5   >>   页数 ( 1/9 )  

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: