转:x264安装

error while loading shared libraries的解決方法
 者 icq 21:03 | 靜態連結網址 | 迴響 (0) | 引用 (1) | 點閱次數 (270) | Programming
 行程式時,如此遇到像下列這種錯誤:

./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory


那就表示系統不知道xxx.so 放在哪個目錄下。

這個時候就要在/etc/ld.so.conf中加入xxx.so所在的目錄。

 一般而言,有很多so檔會在/usr/local/lib這個目錄下,所以在/etc/ld.so.conf中加入/usr/local/lib這一行,可以解決此問題。

 

將 /etc/ld.so.conf存檔後,還要執行「sudo  ldconfig –v」來更新一下才會生效。

 

其实网上不乏有这方面教程,但还是想说说我配置过程中遇到的问题:
ubuntu 是11.1
gcc是4.6.1
1。
下载x264,我的版本是x264-snapshot-20120101-2245-stable
./configure --disable-asm --enable-shared
要使用asm要另处下载别的东西,这里先无视。
enable shared后会生成动态库,这样就可以被ffmpeg找到。若选择不生成动态库,就将静态库拷到usr/local/lib里,这样应该也能被ffmpeg识别出来。
2。
下载ffmpeg,我的版本是0.6
./configure --enable-gpl --enable-libx264 --enable-pthreads
必须开启多线程支持x264的多线程编码,否则将产生一堆相关函数的链接错误
要使用x264必须开启gpl
3。
使用x264编码器
avcodec_find_encoder(CODEC_ID_H264)
开启编码器前必须设置参数:
        c->me_range = 16;
        c->max_qdiff = 4;
        c->qmin = 10;
        c->qmax = 51;
        c->qcompress = 0.6;
若不进行设置则将会报错(log:broken ffmpeg default settings detected等)退出,具体取值不一定按上述,只要score>=5就行,原因可以看x264的encoder.c里518行
4 调用ffmpeg库写的程序可能需要链接的其它库
-lx264 -lm -lz -lasound -lSDL
另外就是注意指定头文件包含的目录(设置在ffmpeg文件夹下)

附带的乱七八糟的问题和解决:
(1)下载ffmpeg最好把权限改成777,我在该文件夹下写自己的程序,fwrite出现了段错误,盖因无权限,稀奇了好一会。
(2)实时编码强烈建议设置c->rc_lookahead=0,这样就不会延迟编码器的输出了。
(3)我是虚拟机下装的ubuntu,在驱动摄像头的 时候遇难到了很大的困难,我的虚拟机对USB支持不好,经常ubuntu检测不到camera,多插拔几次就会出现传说中的ubuntu的bug:疯狂的 向val里的一个log写入warning,直到摄像头被拔出。目前我的应对办法是,强行kill那个log,拔出摄像头,挂起虚拟机,重新插入摄像头, 在windows下打开再关闭,再拔出cam,打开虚拟机如此反复直到ubuntu不抽。     求高手指点一下有没什么彻底解决的办法。
(4)
在ubuntu下用ffplay打开编好的264文件(实时)会出现警告:
[h264 @ 0xa852da0]missing picture in access unit
[h264 @ 0xa8533d0]Estimating duration from bitrate, this may be inaccurate
Input #0, h264, from 'myff264output.264':
Duration: N/A, bitrate: N/A
可以不用理会,因为实时编码不知道文件大小,无法计算码率和时间很正常。(5)这个版本的ffmpeg已经用avcodec_decode_video2了,如果还是使用avcodec_decode_video会报一个警告。

posted @ 2012-11-30 08:45  李伯波  阅读(1259)  评论(0编辑  收藏  举报