FFmpeg(Fast Forward Mpeg)是一種可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的多媒體視頻處理工具,擁有視頻采集功能、視頻格式轉換、視頻抓圖等功能。本文介紹如何將ffmpeg移植到ARM平臺。 開發板使用迅為i.MX6ULL終結者和USB免驅攝像頭,交叉編譯工具為arm-linux-gnueabihf,yocto Qt5文件系統。1.編譯x264獲取x264源碼,可以從網站http://www.videolan.org/developers/x264.htm下載,進入如圖1.1界面,點擊下載;或者用我們已經下載壓縮包(與文檔同一目錄下的x264-master.tar.bz2); ![]() 將壓縮包放到ubuntu并解壓,tar -vxf x264-master.tar.bz2 ,創建文件夾_x264_install用來存放編譯后生成的文件,mkdir _x264_install: ![]() 進入解壓后的路徑x264-master,執行以下命令:./configure --enable-shared --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ --host=arm-linux-gnueabihf --disable-asm 參數說明: --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ :指定編譯后存放路徑 --host=arm-linux-gnueabihf :指定交叉編譯鏈,用戶需要修改為自己的交叉編譯器 --enable-shared :允許共享 --disable-asm:跳過匯編 ![]() 修改配置文件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 ![]() 執行make,成功后如圖 ![]() 執行make install,成功后如圖 ![]() 查看文件夾_x264_install,發現生成的庫文件已經在此目錄下: ![]() 2.編譯FFmpeg FFmpeg下載地址:http://ffmpeg.org/download.html,已經把下載好的壓縮包放在了文檔同一目錄下。 ![]() 下載后解壓:tar -vxf ffmpeg-snapshot.tar.bz2 ,創建文件夾_ffmpeg_install存放生成的文件: ![]() 進入解壓后的ffmpeg文件夾,修改Makefile,添加編譯選項:CFLAGS += -fPIC, ![]() 配置編譯選項,執行以下命令: ./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 參數說明: --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 : 配置成功后如圖 ![]() 執行make開始編譯,完成后如圖 ![]() 執行make install,成功后生成的文件在我們創建好的_ffmpeg_install目錄下: ![]() 3.移植到ARM開發板 將_x264_install下的庫文件拷貝到開發板的/lib/目錄下, cp *x264* /lib/; ![]() 將_ffmpeg_install/lib下的so庫文件全部拷貝到開發板的/lib/目錄下,如有警告可忽略; ![]() 將_ffmpeg_install/bin/目錄下的ffmpeg拷貝到開發板的/bin/目錄下: ![]() 4.測試 插上USB免驅攝像頭,設備節點為/dev/video2,在開發板終端執行以下命令: ffmpeg -f video4linux2 -s 320x240 -i /dev/video2 /mnt/topeet.avi 會出現如下所示: ![]() 開發板的/mnt/目錄下會出現topeet.avi文件, ![]() 將此文件拷貝到windows上,用視頻播放設備打開: ![]() 能看到錄像說明移植成功。 ![]() |