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即可

Logo

更多推荐