1、下载FFmpeg库文件
2、解压
3、编译 /usr/local/ffmpeg为自己创建文件夹
./configure --prefix=/usr/local/ffmpeg --enable-shared
make
sudo make install
注意:如果执行 configure 时,报如下错误,则在最后加上 --disable-x86asm 即可
找到so的路径,将路径添加到/etc/ld.so.conf文件最后一行,如我的是/usr/local/ffmpeg/lib,保存之后,再运行:/sbin/ldconfig –v更新一下配置即可。
如果是交叉编译,
1、先安装 pkg-config
apt-get install pkg-config
2、在安装x264,可以下载最新的
Index of /pub/videolan/x264/snapshots/
./configure --prefix=/home/share/x264 --enable-shared --host=arm-linux-gnueabihf --cross-prefix=arm-linux-gnueabihf- --disable-asm
make
make install
/home/share/x264是我自己建的一个文件夹。可以改成自己的路径
注意:
如果报 No working C compiler found. 错误,检查configure命令是否正确
--cross-prefix 后面 有个 - ;而--host 后面没有 - ;
3、在安装ffmpeg
./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/share/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping --enable-libx264 --extra-ldflags=-L/home/share/x264/lib --extra-cflags=-I/home/share/x264/include --extra-cflags="-fPIC" --pkg-config=true
make
make install
交叉编译错误:
错误一:
WARNING: using libx264 without pkg-config,这个最后我也没管,但编译也出来了
错误二:
ffmpeg recipe for target 'doc/print_options.o' failed
检查config执行后面的命令是否正确。反正我是通过改后面的命令解决的(每次需要make clean一下之后在编译)
错误三:error: invalid 'asm': invalid operand for code 'w'
看一下 --arch=arm --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc 这四个参数是否正确,尤其是--arch= 后面写 arm 还是 aarch还是其它参数
错误四:
C compiler test failed.错误
查看 ffbuild/config.log里面的报错(最后几行),根据报错进行修改参数
4、将/usr/local/ffmpeg下的include和lib文件夹拷贝到工程目录下
5、修改.pro文件,添加
INCLUDEPATH += $$PWD/include
LIBS += $$PWD/lib/libavformat.so
LIBS += $$PWD/lib/libavdevice.so
LIBS += $$PWD/lib/libavcodec.so
LIBS += $$PWD/lib/libavutil.so
LIBS += $$PWD/lib/libswscale.so
LIBS += $$PWD/lib/libswresample.so
(注意添加顺序,否则会编译出错)
6、添加头文件,添加方式为
extern "c"
{
#include <libavformant/avformat.h>
}
然后可以使用了
PS:遇到问题
QT编译工程时遇到如下问题
undefined reference to symbol ‘inflateEnd’
这是因为未添加外部库zlib,所以./configure后面添加一个选项--extra-libs=-lm即可