加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

如何移植FFmpeg

06/07 16:11
857
閱讀需 14 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

FFmpeg是一款專門用于處理數(shù)字音頻和視頻,支持錄制、轉(zhuǎn)換,并能將這些媒體內(nèi)容轉(zhuǎn)化為實(shí)時(shí)流數(shù)據(jù)的開源計(jì)算機(jī)程序。它遵循LGPL或GPL許可協(xié)議,為用戶提供了涵蓋音視頻錄制、格式轉(zhuǎn)換及流媒體分發(fā)的全方位解決方案,深入掌握FFmpeg已成為每一位多媒體開發(fā)工程師的必修課。今天就跟各位小伙伴分享一篇共創(chuàng)社的學(xué)習(xí)筆記,探討一下如何移植FFmpeg。

配置交叉編譯環(huán)境

ElfBoard官方使用的是arm-poky-linux-gnueabi-gcc交叉編譯器,但是在使用中發(fā)現(xiàn)會(huì)報(bào)錯(cuò),這里使用的是gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux(在實(shí)驗(yàn)中使用gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf會(huì)報(bào)一個(gè)與pkg-config有關(guān)的錯(cuò)誤,暫未找到問題原因及解決方法)。

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

之后配置環(huán)境變量,使用命令“sudo gedit /etc/profile”打開profile文件,并在文件最后添加“export PATH=$PATH:/usr/local/arm/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin”。

最后保存文件并使用reboot命令重啟系統(tǒng),在命令行輸入“arm-linux-gnueabihf-gcc -v”查詢是否搭建成功,如果沒搭建成功,請(qǐng)檢查上一步的PATH路徑是否填寫正確。

編譯x264
首先從以下網(wǎng)站獲取x264的源碼并下載。
(http://download.videolan.org/pub/videolan/x264/snapshots/)

將下載的壓縮包放到你的工作目錄下并解壓,并創(chuàng)建一個(gè)“x264_install”文件夾用于存放編譯后生成的文件。
tar -vxf x264-snapshot-20191217-2245-stable.tar.bz2
mkdir x264_install

之后進(jìn)入解壓的“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的編譯。
編譯FFmpeg

首先從以下網(wǎng)站上下載ffmpeg源碼并放置在工作目錄下。
(http://ffmpeg.org/download.html)

之后與x264編譯類似,解壓并創(chuàng)建文件夾ffmpeg_install用于存放生成的文件

tar -vxf ffmpeg-snapshot.tar.bz2
mkdir ffmpeg_install

進(jìn)入解壓后的ffmpeg文件夾,并修改Makefile文件,添加編譯選項(xiàng)。

CFLAGS += -fPIC

執(zhí)行如下命令來配置編譯選項(xiàng)。

./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
參數(shù)說明:
  • 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
解決方法:需要指定x264/lib/pkgconfig的路徑:
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文件,查看具體報(bào)錯(cuò)原因。

最后執(zhí)行:

make
make install

完成FFmpeg的編譯。

文件移植

進(jìn)入x264_install/lib目錄,將x264_install/lib文件夾下的庫(kù)文件拷貝到開發(fā)板的/lib/目錄下:

scp -o HostKeyAlgorithms=+ssh-rsa *x264* root@192.168.0.232:/lib/

進(jìn)入ffmpeg_install/lib目錄,將ffmpeg_install/lib文件夾下的so庫(kù)文件全部拷貝到開發(fā)板的/lib/目錄下:

scp -o HostKeyAlgorithms=+ssh-rsa *lib* root@192.168.0.232:/lib/

進(jìn)入ffmpeg_install/bin/目錄,將ffmpeg_install/bin/目錄下的ffmpeg文件拷貝到開發(fā)板的/bin/目錄下

scp -o HostKeyAlgorithms=+ssh-rsa ffmpeg root@192.168.0.232:/bin/

完成文件的移植。

測(cè)試

將免驅(qū)的USB攝像頭插到ELF 1開發(fā)板的USB口上,可以看到在/dev文件夾下會(huì)新增一個(gè)video2的設(shè)備,這個(gè)就是攝像頭。

之后測(cè)試使用FFmpeg錄制攝像頭視頻并保存

ffmpeg -f video4linux2 -s 320x240 -i /dev/video2 /home/root/cam_video.avi

會(huì)出現(xiàn)如下所示:

使用Ctrl+C打斷錄制,這時(shí)候會(huì)看到/home/root目錄下出現(xiàn)了cam_video.avi文件,這個(gè)就是錄制的視頻文件。

將該視頻文件傳輸?shù)诫娔X上進(jìn)行查看。在命令行輸入

scp -o HostKeyAlgorithms=+ssh-rsa cam_video.avi feng@192.168.0.1:/home/feng/

其中“feng@192.168.0.1:/home/feng/”需要改成自己電腦的用戶名和ip地址以及想要存放文件的路徑,這時(shí)候在/home/feng/文件夾下就能看到并播放錄制的視頻了。

至此,就完成了FFmpeg的移植。期望這一過程能為正在探索嵌入式領(lǐng)域知識(shí)的小伙伴們帶來實(shí)質(zhì)性的幫助。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
NRF52840-QIAA-R7 1 Nordic Semiconductor Telecom Circuit, 1-Func, PBGA73, AQFN-73
$7.48 查看
CM7V-T1A-LOW-ESR-32.768KHZ-7PF-20-TA-QC 1 Micro Crystal AG Parallel - Fundamental Quartz Crystal,

ECAD模型

下載ECAD模型
$3.02 查看
AT27C512R-45JU-T 1 Microchip Technology Inc OTP ROM, 64KX8, 45ns, CMOS, PQCC32

ECAD模型

下載ECAD模型
$2.23 查看
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國(guó)內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國(guó)家和地區(qū)擁有國(guó)際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國(guó)內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國(guó)家和地區(qū)擁有國(guó)際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜