1.获取源码

下载ffmpeg:http://ffmpeg.org 

IMX6学习记录(15)-ffmpeg移植_IMX6ULL

下载libx264:http://www.videolan.org/developers/x264.html

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_02

有git链接,用git拉算了

下载fdk_aac:

http://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_03

下载SDL2:

http://www.linuxfromscratch.org/blfs/view/systemd/multimedia/sdl2.html

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_04

一共四个东西

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_05

2.编译libx264

配置

./configure --prefix=/home/jun/i.mx6/code/14_ffmprg/x264 --enable-static --host=arm-none-linux-gnueabi --cross-prefix=arm-linux-gnueabihf- --disable-asm

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_06

编译

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_07

将源码目录下,文件夹里面的东西拷贝到文件系统

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_08

3.编译fdk-acc
sudo apt-get install autoconf automake libtool
./configure --prefix=/home/jun/i.mx6/code/14_ffmprg/fdk-aac-2.0.1 --host=arm-linux-gnueabihf --disable-shared
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_09

拷贝编译出来的东西

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_10

4.编译SDL2
sudo ./configure --prefix=/home/jun/i.mx6/code/14_ffmprg/SDL2-2.0.10  --host=arm-linux-gnueabihf --disable-shared&&sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8&&sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install

拷贝文件到文件系统

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_11

5.编译ffmpeg

把/usr/bin/pkg-config复制到arm-none-linux-gnueabi-gcc的同一个目录,并改名为arm-none-linux-gnueabi-pkg-config。

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc  libx11-dev:i386 lib32z1

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

./configure --prefix=/home/jun/i.mx6/code/14_ffmprg/ffmpeg-4.2.1 --enable-cross-compile --cross-prefix=arm-linux-gnueabihf- \
--arch=armel --target-os=linux --enable-gpl --enable-nonfree \
--pkg-config-flags=--static \
--enable-shared 

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install


拷贝文件到文件系统

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_12

6.测试

重新编译文件系统

拷贝到设备上

运行

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_13

好像是超出RAM的大小了

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_14

果然是的

7.制作SD卡分区

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_15

拷贝文件

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_16

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_17

首先搞个正常的文件系统,需要确定MMC的设备号

ls -l /dev/mmc*

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_18

确定卡分区情况

cd mnt/
ls
mkdir m1
mkdir m2
mount /dev/mmcblk0p1 /mnt/m1/
mount /dev/mmcblk0p2 /mnt/m2/
ls m1/
ls m2/

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_19

文件系统在第二区,boot文件在第一区

设置uboot启动参数

setenv bootargs 'console=ttymxc0,115200n8 init=/sbin/init noinitrd root=179:2 rw rootdelay=3 rootfstype=ext3 mem=256M vram=12M'

确定ffmpeg存在,也同时确定当前启动的是SD卡里面的文件系统

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_20

8.测试
查看版本
ffmpeg -version

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_21

放一个mp4视频,然后把声音提取到output.acc
ffmpeg -i mmmm.mp4  -acodec copy -vn output.aac

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_22

AVI转MP4
ffmpeg -i gg.avi out.mp4

IMX6学习记录(15)-ffmpeg移植_IMX6ULL_23