Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183959
  • 博文数量: 40
  • 博客积分: 2036
  • 博客等级: 大尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-12 22:39
文章分类

全部博文(40)

文章存档

2013年(3)

2012年(1)

2011年(18)

2010年(18)

分类: LINUX

2010-06-04 11:07:54

按照网上的做法下载编译,安装完成vlc 1.1.0rc后,运行总是出错。
无字幕解码器模块:
VLC 不支持音频或视频格式 "XVID"。很遗憾的您将没有办法修复它。
无字幕解码器模块:
VLC 不支持音频或视频格式 "cook"。很遗憾的您将没有办法修复它。
无字幕解码器模块:
VLC 不支持音频或视频格式 "RV40"。很遗憾的您将没有办法修复它。
无字幕解码器模块:
VLC 不支持音频或视频格式 "wma2"。很遗憾的您将没有办法修复它
 
vlc -vvv
后发现有
modules无法load,重定位后无法恢复段prot:权限不够
刚刚把问题给解决了,没把具体错误信息复制下来。不过大体是那个样子。
在网上google了许久,终于找到了一篇博文,原来是selinux把plugin给阻止了
只要一句
setenforce 0
就把问题给解决了!!
非常感谢他!
下面是他的博文:
 
 
在fedora10上编译vlc1.0.2
2010-01-22 17:53
在linux上编译vlc,花了很久才搞定 ,因此特地的记录下整个编译过程。
本来先是想在windows上用cygwin,或者msys+mingw来进行编译,后来老大来了句真的linux都编译不过,假的linux更会遇到问题了,想想也是,自己的目的不在于做一个windows上面的vlc版本,而是想调试vlc,看一下它的执行过程,于是还是回到linux进行编译,在真实的linux物理机器上编译速度很快。

linux的版本是fedora10, vlc的版本是最新的vlc1.0.2。

Vlc linux  上的编译过程 : 
1.首先从vlc的官网上下载最新的vlc代码,首先解压缩,然后进入解压后的目录。
因为vlc大量使用了第三方的库, 比如libdvbpsi(TS),libmpeg2,ffmpeg等等,所以我们需要首先下载我们需要的第三方库进行编译。VLC给出了一个自动化的解决方案,关注一下主目录\extras\contrib,里边有一些工具来帮助你自动下载、patch和编译所有可能用到的第三方库。先运行一下那个目录下的bootstrap,如果缺少***.mak的话可以到VLC的代码库中找一下,是一个系统相关的文件,然后简单的一句make就可以了。如果你对这些库比较熟悉的话最好先手动筛选一下,有一些可能不是你所需要的,而下载他们可能需要很长的时间。

after you executed bootstrap, there is  a file called "distro.mk", you can modify it to decide which libs you will compile?

这一步会花很长的时间,中途也会碰到很多问题:
1)
比如在编译ffmpeg的时候需要用到libgsm,当然你如果让ffmpeg不支持libgsm也行,libgsm在给出的链接地址已经找不到了,所以需要你自己从网上下载下来放到extras/contrib/src目录下,然后就可以编译通过了,在编译extras库的过程中,可能有不少链接地址已经失效,这时候就需要自己去下载这些库,然后编译;
2)
编译过程中最郁闷的是libtool的问题,最新给出的libtool有bug存在,所以可以使用系统自带的libtool,在/usr/bin中,你可以把它们拷贝过来,当然你也可以修改configure文件,把里面的libtool换成/usr/bin/libtool也一样。
3)
在编译x264的时候,提示说ffmpeg中libavswscale有错误,编译总是通不过,后来发现是pixdesc.h/.c放在libavcodec中了,而以前是放在libavutil中的,所以得把这个文件放回去,然后修改Makefile文件,这样就可以编译过去了。

2.第一步搞定以后,就可以进入vlc目录下编译vlc的源代码了,这时候才想明白第一步中不是所有的库都需要,其实只需要编译自己需要的库就可以了,比如你只是想让vlc播放带mpeg2的TS流,那么你只需要编译libmpeg2, liba52, libdvbpsi就可以了。
在这里最重要的就是配置configure的参数了,因为它决定了你需要在vlc中添加哪些插件,决定编译后的vlc到底有多大,下面是我的配置文件:

./configure \
--enable-x11 \
--enable-xvideo \
--enable-sdl \
--enable-avcodec \
--enable-avformat \
--enable-swscale \
--enable-mad \
--enable-dvbpsi \
--enable-a52 \
--enable-libmpeg2 \
--enable-dvdnav \
--enable-faad \
--enable-vorbis \
--enable-ogg \
--enable-theora \
--enable-mkv \
--enable-freety --disable-fribidi \
--enable-speex \
--enable-flac \
--disable-live555 \
--enable-caca \
--disable-skins2 \
--enable-alsa \
--disable-qt4 \
--enable-ncurses \
--enable-release \
--with-dvbpsi=/usr/local \
--enable-run-as-root \
--with-libmpeg2-tree=/home/lf/linfeng/vlc/vlc-1.0.4/extras/contrib/src/libmpeg2

在这里可以执行./configure -h在获得有哪些参数可以配置,看多了就明白是怎么回事了。
接着执行make && make install, 注意make install需要超级用户权限.

3. 在第二步中,make的时候同样会遇到很多问题:
1) libtool:
./libtool: line 814: X--tag=CC: command not found
google得出结论是libtool的版本问题,最新的好像有bug,但是找个老版本来安装太麻烦,无意间看到一个方法:修改libtool文件,将ECHO="echo"替换为echo="echo",错误消失...

4. 经过make install后,vlc就以及编译并安装好了,这时候就可以执行vlc命令了。
用vlc播放*.m2v, *.ts的文件,vlc界面上就会出现如下错误:

main decoder error: no suitable decoder module for fourcc `mpgv'.
同时,console中还会出现如下警告:
重定位后无法恢复段 prot: 权限不够

一度以为是自己没有将libmpeg2给安装上, 后来弄了半天才发现是selinux把插件给禁止了, 所以vlc没有把这些插件给加载进去,当然就找不到mpgv的解码器libmpeg2, 执行setenforce 0把selinux关闭。

5. 这样,我们就可以运行我们的vlc播放器了,如果要调试vlc的代码,就可以修改源码,然后进行调试:)

最后总结下,如果要编译vlc这种比较大的开源库,就要做好花时间的准备,这个不可能一下子就弄完,中间你会遇到很多问题,当然在借助google的同时,还需要自己认真去分析是哪里出问题了,因为linux下很多开源软件在不断的升级中,其中肯定会有很多的bug还没有解决可能就提交源代码了,所以有时候需要自己所学的只是去解决这些问题,在解决问题的过程中,你就成长了。
阅读(3850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~