基于RK3399交叉编译工具交叉编译libx264和ffmpeg
一、交叉编译X264库
解压last_x264.tar.bz2,进入目录,执行以下命令
./configure --enable-shared --enable-static --disable-asm --prefix=/home/rk3399-libx264 --host=arm-linux --cross-prefix=aarch64-linux-gnu-
make
make install
全部成功后会在/home/rk3399-libx264目录下生成libx264头文件和库文件
二、交叉编译FFmpeg源码
解压ffmpeg-4.1.3.tar.bz2,进入目录,执行以下命令
./configure --enable-shared --enable-static --disable-debug --disable-programs --prefix=/home/rk3399-ffmpeg --cross-prefix=aarch64-linux-gnu- --arch=arm64 --target-os=linux --enable-gpl --enable-libx264 --extra-cflags=-I/home/rk3399-libx264/include --extra-ldflags=-L/home/rk3399-libx264/lib --extra-libs=-ldl --enable-ffmpeg
make
make install
说明:
--prefix:编译完成后的安装目录。
--enable-shared:要求编译出共享库。
--enable-static:眼球编译出静态库。
--disable-debug:取消debug信息,不取消的话编译出来的库体积很大。
--disable-programs:取消生成cmd的程序 ffplay ffpserver等。
--cross-prefix:指定交叉编译器。
--arch=arm64:指定CPU架构体系。
--target-os=linux:指定目标操作系统。
--enable-libx264 --extra-cflags=-I/home/rk3399-libx264/include --extra-ldflags=-L/home/rk3399-libx264/lib --extra-libs=-ldl:要求编译出带有264编解码库。
全部成功后会在/home/rk3399-ffmpeg目录下生成ffmpeg头文件和库文件
三、编译结果拷贝到开发板
把rk3399-libx264和rk3399-ffmpeg压缩,拷贝到TB-rk3399proD上的/home/目录下,解压进入/home/rk3399-ffmpeg/bin,执行./ffmpeg -v
toybrick@debian10:/home/rk3399-ffmpeg/bin$ ./ffmpeg -v
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 6.4.0 (ctng-1.23.0-150g-FA)
configuration: --enable-shared --enable-static --disable-debug --disable-programs --prefix=/home/rk3399-ffmpeg --cross-prefix=aarch64-linux-gnu- --arch=arm64 --target-os=linux --enable-gpl --enable-libx264 --extra-cflags=-I/home/rk3399-libx264/include --extra-ldflags=-L/home/rk3399-libx264/lib --extra-libs=-ldl --enable-ffmpeg
出现上面信息证明交叉编译成功。
四、在TB-rk3399proD板子上面直接使用FFmpeg+V4L2抓取图像并编码成MP4
sudo ffmpeg -f v4l2 -s 640x480 -r 30 -vcodec mjpeg -i /dev/video0 -pix_fmt yuvj422p -b:v 2000k -vcodec libx264 -preset veryfast -an usb.mp4
五、说明
ffmpeg和libx264源码请自行下载。