编译环境:ubuntu12.04
交叉编译器:arm-none-linux-gnueabi-gcc 4.4.1
目标板:iTOP4412 (cortex A9)
ffmpeg库的移植主要包括:
1.yasm移植(可选,yasm是汇编编译器,ffmpeg加入它是为了提高编译速度,可在x264配置时使用--disable-asm选择不使用)
2.x264移植
3.xvid移植(可选)
4.ffmpeg移植
具体步骤:
1.编译yasm
1)进入源码压缩包目录,解压
2)制作编译脚本yasm_build.sh
vim yasm_build.sh
添加内容:
#!/bin/sh cd yasm-1.3.0 mkdir _install ./configure --enable-shared --prefix=${PWD}/_install --host=arm-none-linux-gnueabi make make install
3)执行编译脚本
./yasm_build.sh
则在yasm目录下的_install目录里生成/include /lib /bin
2.设置临时环境变量
export PATH=$PATH:/home/jiangyu/software/x264/yasm-1.3.0/_install/bin
3.编译x264
1. 进入x264文件夹,进行配置
1
$ .
/configure
--prefix=${PWD}/_install
--enable
-shared --disable-asm --host=arm-none-linux-gnueabi
(如果配置出现找不到目录错误,单独一个一个添加配置选项尝试,确保都配置上)
说明:--prefix=
{PWD}/_install
安装目录
--enable-shared 打开动态链接,可以生成libx264.so
--disable-asm 因为是移植到arm开发板上,因此把汇编选项关闭
--host=arm-none-linux-gnueabi
指定目标CPU和系统2. 配置完后生成config.mak,打开config.mak修改:
1)将 CC=gcc 改为 CC=arm-none-linux-gnueabi-gcc
2)将 LD=gcc -o 改为 LD=arm-none-linux-gnueabi-gcc –o
3)将 AR=ar rc 改为 AR=arm-none-linux-gnueabi-ar rc
4)将 RAMLIB=ranlib 改为 RANLIB=arm-none-linux-gnueabi-ranlib
保存退出3. make 编译
4. make install 安装
安装之后在指定安装目录就有/bin,/include,/lib这三个文件夹
3.编译xvid
1)进入主目录下build/generic/
2)配置:mkdir _install
./configure --host=arm-none-linux-gnueabi --target=arm-linux --prefix=${PWD}/_install
3)make
4)make install
_install下生成/include /lib
4.编译ffmpeg
进入ffmpeg主目录,mkdir _install
1)配置 :
./configure --prefix=/home/jiangyu/software/ffmpeg/_install --disable-x86asm --disable-ffmpeg --disable-debug --disable-doc --disable-ffplay --disable-ffprobe --enable-version3 --enable-shared --enable-nonfree --enable-gpl --enable-libx264 --enable-pthreads --enable-decoder=h264 --enable-parser=h264 --enable-demuxer=h264 --enable-protocol=file --cross-prefix=arm-none-linux-gnueabi- --target-os=linux --arch=arm --enable-cross-compile --cc=arm-none-linux-gnueabi-gcc --extra-cflags=-I/home/jiangyu/software/ffmpeg/x264-snapshot-20181014-2245/_install/include --extra-ldflags=-L/home/jiangyu/software/ffmpeg/x264-snapshot-20181014-2245/_install/lib --extra-libs=-ldl
2)make -j4
3)make -j4 install
./_install下生成lib include share bin四个文件夹
5.拷贝库以及可执行文件到开发板
cp (x264路径)/_install/lib/lib* /home/jiangyu/rootfs/lib
cp (x264路径)/_install/bin/x264 /home/jiangytu/rootfs/app/
cp (ffmpeg路径)/_install/lib/lib* /home/jiangyu/rootfs/lib
cp (ffmpeg路径)/_install/bin/ffmpeg /home/jiangytu/rootfs/app/
(上述库及可执行文件均注意需要添加可执行权限)
6.测试
x264测试:
./x264 -o test.264 test.yuv (.yuv文件通过x264编码压缩生成test.264视频文件)
ffmpeg测试:
./ffmpeg -f video4linux2 -s 1920x1080 -i /dev/video5 test.avi 按q退出录制视频,生成test.avi文件,可直接用播放器播放查看
至此,此次移植过程结束,上述过程只移植了ffmpeg的x264编码部分,需要其它功能可自行添加。