FFmpeg(Fast Forward Mpeg)是一種可以用來(lái)記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的多媒體視頻處理工具,擁有視頻采集功能、視頻格式轉(zhuǎn)換、視頻抓圖等功能。本文介紹如何將ffmpeg移植到ARM平臺(tái)。 開(kāi)發(fā)板使用迅為i.MX6ULL終結(jié)者和USB免驅(qū)攝像頭,交叉編譯工具為arm-linux-gnueabihf,yocto Qt5文件系統(tǒng)。1.編譯x264獲取x264源碼,可以從網(wǎng)站http://www.videolan.org/developers/x264.htm下載,進(jìn)入如圖1.1界面,點(diǎn)擊下載;或者用我們已經(jīng)下載壓縮包(與文檔同一目錄下的x264-master.tar.bz2); ![]() 將壓縮包放到ubuntu并解壓,tar -vxf x264-master.tar.bz2 ,創(chuàng)建文件夾_x264_install用來(lái)存放編譯后生成的文件,mkdir _x264_install: ![]() 進(jìn)入解壓后的路徑x264-master,執(zhí)行以下命令:./configure --enable-shared --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ --host=arm-linux-gnueabihf --disable-asm 參數(shù)說(shuō)明: --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ :指定編譯后存放路徑 --host=arm-linux-gnueabihf :指定交叉編譯鏈,用戶需要修改為自己的交叉編譯器 --enable-shared :允許共享 --disable-asm:跳過(guò)匯編 ![]() 修改配置文件config.mak,vi config.mak,修改為自己的路徑和交叉編譯工具(本文檔用的arm-linux-gnueabihf-gcc), SYS_ARCH=ARMSYS=LINUX CC= arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-gcc -o AR= arm-linux-gnueabihf-ar rc RANLIB= arm-linux-gnueabihf-ranlib ![]() 執(zhí)行make,成功后如圖 ![]() 執(zhí)行make install,成功后如圖 ![]() 查看文件夾_x264_install,發(fā)現(xiàn)生成的庫(kù)文件已經(jīng)在此目錄下: ![]() 2.編譯FFmpeg FFmpeg下載地址:http://ffmpeg.org/download.html,已經(jīng)把下載好的壓縮包放在了文檔同一目錄下。 ![]() 下載后解壓:tar -vxf ffmpeg-snapshot.tar.bz2 ,創(chuàng)建文件夾_ffmpeg_install存放生成的文件: ![]() 進(jìn)入解壓后的ffmpeg文件夾,修改Makefile,添加編譯選項(xiàng):CFLAGS += -fPIC, ![]() 配置編譯選項(xiàng),執(zhí)行以下命令: ./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_install --enable-shared --disable-static --enable-gpl --enable-nonfree --disable-ffplay --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-x86asm --disable-stripping --enable-libx264 --extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include --extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib --extra-libs=-ldl 參數(shù)說(shuō)明: --cross-prefix=arm-linux-gnueabihf-:配置為自己的交叉編譯工具 --cc=arm-linux-gnueabihf-gcc:配置為自己的交叉編譯工具 --arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_install: ![]() --extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include :改為 ![]() --extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib : 配置成功后如圖 ![]() 執(zhí)行make開(kāi)始編譯,完成后如圖 ![]() 執(zhí)行make install,成功后生成的文件在我們創(chuàng)建好的_ffmpeg_install目錄下: ![]() 3.移植到ARM開(kāi)發(fā)板 將_x264_install下的庫(kù)文件拷貝到開(kāi)發(fā)板的/lib/目錄下, cp *x264* /lib/; ![]() 將_ffmpeg_install/lib下的so庫(kù)文件全部拷貝到開(kāi)發(fā)板的/lib/目錄下,如有警告可忽略; ![]() 將_ffmpeg_install/bin/目錄下的ffmpeg拷貝到開(kāi)發(fā)板的/bin/目錄下: ![]() 4.測(cè)試 插上USB免驅(qū)攝像頭,設(shè)備節(jié)點(diǎn)為/dev/video2,在開(kāi)發(fā)板終端執(zhí)行以下命令: ffmpeg -f video4linux2 -s 320x240 -i /dev/video2 /mnt/topeet.avi 會(huì)出現(xiàn)如下所示: ![]() 開(kāi)發(fā)板的/mnt/目錄下會(huì)出現(xiàn)topeet.avi文件, ![]() 將此文件拷貝到windows上,用視頻播放設(shè)備打開(kāi): ![]() 能看到錄像說(shuō)明移植成功。 ![]() |