ubuntu16.04 x264、ffmpeg 安装
安装)
说明
OpenCV3 读海康无线网络摄像头rtsp流时,每读几帧就会出现 “Invalid UE glomb code”,在OpenCV群里咨询后一老哥说opencv里面调用的ffmpeg库,重装ffmpeg试试,遂下水。
补充:更新ffmpeg版本后,linux上的现象并没有得到解决;测试了windows平台,运行正常
以下为参考的相关博主:
链接1: https://blog.csdn.net/weixin_44953262/article/details/111290097?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162695353116780265419296%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162695353116780265419296&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-111290097.pc_search_result_control_group&utm_term=ubuntu16.04++x264+ffmpeg4&spm=1018.2226.3001.4187.
1.安装xlib264
- 下载x264库http://download.videolan.org/x264/snapshots,我下载的最新稳定版:x264-snapshot-20191217-2245-stable.tar.bz2
- 解压下载好的x264-snapshot-20191217-2245-stable.tar.bz2
- 进入到库目录下
cd x264-snapshot-20191217-2245-stable
- 配置x264 bash执行
./configure --enable-shared --disable-asm --prefix=/usr/local/x264
- 编译执行
make
- 继续
make install
- x264库将会安装在/usr/local/下, 此时libx264.a默认安装在/usr/local/lib/下。要让其他程序可以使用这个库
打开/etc/ld.so.conf
vim /etc/ld.so.conf
并添加下面的行:
/usr/local/lib
运行下面的命令重新加载共享库 sudo ldconfig
到这里x264就安装好了
2.安装yasm
并且是完全重写了nasm的汇编环境,接收nasm和gas语法,支持x86和amd64指令集,所以这里安装一下yasm即可
- yasm是一款汇编器,并且是完全重写了nasm的汇编环境,接收nasm和gas语法,支持x86和amd64指令集,所以这里安装一下yasm即可,下载地址是:
http://yasm.tortall.net/Download.html. - 执行下面命令安装:
tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
3.安装ffmpeg
- 下载地址:
http://ffmpeg.org/download.html#build-windows. - 解压后后,进入ffmpeg文件夹
需要x264的安装路径:–extra-cflags="-I/usr/local/x264/include" --extra-ldflags="-L/usr/local/x264/lib",否则会出错。
./configure --enable-shared --extra-cflags="-I/usr/local/x264/include" --extra-ldflags="-L/usr/local/x264/lib" --enable-libx264 --enable-gpl --prefix=/usr/local/ffmpeg/
- 编译与安装
make -j4
make install
- 进入安装目录/usr/local/ffmpeg/ ,查看一下发现有bin,include,lib,share这4个目录,其中bin是ffmpeg主程序二进制目录,include是C/C++头文件目录,lib是编译好的库文件目录,share是文档目录,然后进入bin目录,执行
./ffmpeg -version
查看当前版本的详细信息,默认情况下一般会报libavdevice.so.57: cannot open shared object file: No such file or directory,原因是lib目录未加载到链接到系统库中
5. 添加到系统库
vim /etc/ld.so.conf
然后添加一行内容:
/usr/local/ffmpeg/lib
之后保存并退出,然后执行 :
sudo ldconfig
重新加载资源使配置生效,现在再次执行
./ffmpeg -version
显示就正常了
6. 可以根据需要将bin目录添加至环境变量中以保证任何时候都能使用ffmpeg命令:
vi /etc/profile
添加下面这行
export PATH=/usr/local/ffmpeg/bin:$PATH
保存退出,运行profile
source /etc/profile
全局ffmpeg生效
到这ffmpeg安装完成并且生效
软连接:
ln -s /usr/local/ffmpeg/bin/ffmpeg ffmpeg