加入星計劃,您可以享受以下權益:

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

如何移植FFmpeg

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

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

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

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

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”查詢是否搭建成功,如果沒搭建成功,請檢查上一步的PATH路徑是否填寫正確。

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

將下載的壓縮包放到你的工作目錄下并解壓,并創(chuàng)建一個“x264_install”文件夾用于存放編譯后生成的文件。
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的編譯。
編譯FFmpeg

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

之后與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
參數(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文件,查看具體報錯原因。

最后執(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/

完成文件的移植。

測試

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

之后測試使用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/文件夾下就能看到并播放錄制的視頻了。

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
VOD217T 1 Vishay Intertechnologies VOD205T, VOD206T, VOD207T, VOD211T, VOD213T, VOD217T Optocoupler, Phototransistor Output, Dual Channel, SOIC-8 Package

ECAD模型

下載ECAD模型
$0.76 查看
TJA1051T/E,118 1 NXP Semiconductors TJA1051 - High-speed CAN transceiver SOIC 8-Pin

ECAD模型

下載ECAD模型
$0.3 查看
ECS-250-20-33-DU-TR 1 ECS International Inc Parallel - Fundamental Quartz Crystal, 25MHz Nom, SMD, 4 PIN
$0.86 查看
飛凌嵌入式

飛凌嵌入式

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

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

查看更多

相關推薦

電子產業(yè)圖譜