FFmpeg是一款專門用于處理數(shù)字音頻和視頻,支持錄制、轉換,并能將這些媒體內容轉化為實時流數(shù)據(jù)的開源計算機程序。它遵循LGPL或GPL許可協(xié)議,為用戶提供了涵蓋音視頻錄制、格式轉換及流媒體分發(fā)的全方位解決方案,深入掌握FFmpeg已成為每一位多媒體開發(fā)工程師的必修課。今天就跟各位小伙伴分享一篇共創(chuàng)社的學習筆記,探討一下如何移植FFmpeg。
arm交叉編譯器下載完成后,創(chuàng)建/usr/local/arm目錄并將下載的壓縮包拷貝到該目錄下并解壓。
sudo mkdir /usr/local/arm
sudo cp gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz /usr/local/arm/
sudo tar -vxf ggcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
tar -vxf x264-snapshot-20191217-2245-stable.tar.bz2
mkdir x264_install
之后進入解壓的“x264-snapshot-20191217-2245-stable”文件夾下(我這里將文件夾重命名為了x264),并執(zhí)行如下命令。
./configure --enable-shared --prefix=/home/feng/文檔/開發(fā)/Linux/proj/ffmpeg/x264_install/ --host=arm-linux-gnueabihf --disable-asm
- prefix=/home/feng/文檔/開發(fā)/Linux/proj/ffmpeg/x264_install/表示指定編譯后存放路徑。
-
host=arm-linux-gnueabihf :表示指定交叉編譯鏈,用戶需要修改為自己的交叉編譯器。
之后修改“config.mak”文件,需要將交叉編譯工具修改為自己使用的交叉編譯工具。
SYS_ARCH=ARM
SYS=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
make install
之后與x264編譯類似,解壓并創(chuàng)建文件夾ffmpeg_install用于存放生成的文件
tar -vxf ffmpeg-snapshot.tar.bz2
mkdir ffmpeg_install
進入解壓后的ffmpeg文件夾,并修改Makefile文件,添加編譯選項。
CFLAGS += -fPIC
執(zhí)行如下命令來配置編譯選項。
./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/feng/文檔/開發(fā)/Linux/proj/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/feng/文檔/開發(fā)/Linux/proj/ffmpeg/x264_install/include --extra-ldflags=-L/home/feng/文檔/開發(fā)/Linux/proj/ffmpeg/x264_install/lib --extra-libs=-ldl
-
cross-prefix=arm-linux-gnueabihf-:配置為自己的交叉編譯工具 -
cc=arm-linux-gnueabihf-gcc:配置為自己的交叉編譯工具 -
arch=arm --prefix=/home/feng/文檔/開發(fā)/Linux/proj/ffmpeg/ffmpeg_install:編譯后存放路徑 -
extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include:x264的include路徑 -
extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib :x264的lib路徑
這一步可能遇到的問題:
- ERROR: x264 not found using pkg-config
export PKG_CONFIG_PATH=/home/feng/文檔/開發(fā)/Linux/proj/ffmpeg/x264_install/lib/pkgconfig
- error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
解決方法:
sudo apt-get install apt-file
sudo apt-file update
sudo apt-file search libz.so.1
sudo apt-get install lib32z1
如果出現(xiàn)問題,可以查看/ffmpeg/ffbuild目錄下的config.log文件,查看具體報錯原因。
最后執(zhí)行:
make
make install
完成FFmpeg的編譯。
進入x264_install/lib目錄,將x264_install/lib文件夾下的庫文件拷貝到開發(fā)板的/lib/目錄下:
scp -o HostKeyAlgorithms=+ssh-rsa *x264* root@192.168.0.232:/lib/
進入ffmpeg_install/lib目錄,將ffmpeg_install/lib文件夾下的so庫文件全部拷貝到開發(fā)板的/lib/目錄下:
scp -o HostKeyAlgorithms=+ssh-rsa *lib* root@192.168.0.232:/lib/
進入ffmpeg_install/bin/目錄,將ffmpeg_install/bin/目錄下的ffmpeg文件拷貝到開發(fā)板的/bin/目錄下
scp -o HostKeyAlgorithms=+ssh-rsa ffmpeg root@192.168.0.232:/bin/
完成文件的移植。
之后測試使用FFmpeg錄制攝像頭視頻并保存
ffmpeg -f video4linux2 -s 320x240 -i /dev/video2 /home/root/cam_video.avi
會出現(xiàn)如下所示:
使用Ctrl+C打斷錄制,這時候會看到/home/root目錄下出現(xiàn)了cam_video.avi文件,這個就是錄制的視頻文件。
將該視頻文件傳輸?shù)诫娔X上進行查看。在命令行輸入
scp -o HostKeyAlgorithms=+ssh-rsa cam_video.avi feng@192.168.0.1:/home/feng/
其中“feng@192.168.0.1:/home/feng/”需要改成自己電腦的用戶名和ip地址以及想要存放文件的路徑,這時候在/home/feng/文件夾下就能看到并播放錄制的視頻了。