• 正文
  • 相關推薦
申請入駐 產業(yè)圖譜

ElfBoard技術貼|如何在ELF 2開發(fā)板上部署v4l2loopback

06/05 14:09
863
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

嵌入式系統(tǒng)開發(fā)領域,虛擬視頻設備技術正成為實現多媒體功能創(chuàng)新的關鍵技術支撐。v4l2loopback作為一款功能強大的Linux內核模塊,可以為視頻流處理提供靈活的路由架構,在遠程協作、實時流媒體傳輸及AI視覺處理等場景展現出顯著應用價值。本文將以ELF 2開發(fā)板為載體,系統(tǒng)闡述v4l2loopback模塊的工程化部署全流程。

一、設置環(huán)境

首先需配置交叉編譯工具鏈路徑,確保系統(tǒng)能夠正確識別ARM64架構的編譯工具。打開終端,執(zhí)行以下命令:

elf@ubuntu:~/work/ELF2-linux-source$ export PATH=/home/elf/aarch64-buildroot-linux-gnu_sdk-buildroot/bin:$PATH

二、配置內核

elf@ubuntu:~/work/ELF2-linux-source$ ./build.sh elf2_desktop_defconfig

三、編譯內核頭文件

內核頭文件是編譯內核模塊的關鍵依賴,包含了內核 API 的定義。執(zhí)行以下命令編譯內核頭文件:

elf@ubuntu:~/work/ELF2-linux-source$ ./build.sh kernel linux-headers

四、獲取并編譯v4l2loopback

4.1克隆v4l2loopback倉庫

通過Git工具從官方代碼倉庫獲取v4l2loopback的最新源代碼。在終端中執(zhí)行以下命令:

elf@ubuntu:~/work/ELF2-linux-source$ git clone https://github.com/umlaeute/v4l2loopback.git

4.2進入v4l2loopback目錄

克隆完成后,使用cd命令進入v4l2loopback源代碼目錄:

elf@ubuntu:~/work/ELF2-linux-source$ cd v4l2loopback/

4.3修改v4l2loopback.c文件

由于不同開發(fā)板的內核架構和配置存在差異,需對v4l2loopback的源代碼進行適當修改以確保兼容性。使用文本編輯器打開v4l2loopback.c文件:

elf@ubuntu:~/work1/ELF2-linux-source/v4l2loopback$ vi v4l2loopback.c
做如下修改:

修改完成后,保存并退出編輯器。

4.4編譯v4l2loopback模塊

elf@ubuntu:~/work1/ELF2-linux-source/v4l2loopback$ make KERNEL_DIR=$(pwd)/../kernel      ARCH=arm64      CROSS_COMPILE=aarch64-buildroot-linux-gnu-

參數說明:

KERNEL_DIR=$(pwd)/../kernel:指定內核源代碼目錄,用于獲取編譯所需的內核頭文件和編譯配置。

ARCH=arm64:指定目標架構為ARM64,與ELF 2開發(fā)板的硬件架構匹配。

CROSS_COMPILE=aarch64-buildroot-linux-gnu-:指定交叉編譯工具前綴,確保生成的模塊適用于ARM64架構的開發(fā)板。

編譯過程完成后,將在當前目錄下生成名為v4l2loopback.ko的內核模塊文件,這是后續(xù)需要部署到開發(fā)板上的核心文件。

五、測試驗證

5.1拷貝v4l2loopback.ko文件到開發(fā)板

將生成的v4l2loopback.ko文件通過U盤拷貝到開發(fā)板/root目錄下。

5.2加載模塊

在開發(fā)板上加載v4l2loopback模塊,創(chuàng)建2個設備并指定設備號。

root@elf2-desktop:~# insmod v4l2loopback.ko devices=2 video_nr=21,22 card_label=VirtualCam1,VirtualCam2
參數說明:

devices=2:指定創(chuàng)建2個虛擬視頻設備。

video_nr=21,22:手動指定設備號為/dev/video21和/dev/video22,避免與系統(tǒng)已有的視頻設備號沖突。

card_label=VirtualCam1,VirtualCam2(可選):為虛擬設備設置易識別的標簽,方便后續(xù)使用中區(qū)分不同設備。

5.3列出已加載的模塊

執(zhí)行以下命令查看已加載的內核模塊,確認 v4l2loopback 模塊是否成功加載:

root@elf2-desktop:~# lsmod

輸出包含v4l2loopback相關信息,則表明模塊加載成功。

5.4檢查生成的視頻設備

通過以下命令列出系統(tǒng)中的視頻設備文件,檢查是否成功創(chuàng)建了指定的虛擬視頻設備:

root@elf2-desktop:~# ls /dev/video*

可以看到/dev/video21和/dev/video22兩個設備文件。

5.5查看設備信息

使用v4l2-ctl工具查看虛擬視頻設備的詳細信息

root@elf2-desktop:~# v4l2-ctl --device=/dev/video21 --info

5.6視頻流傳輸

說明:

ELF 2開發(fā)板連接屏幕;

登錄兩個終端,一個使用串口登錄,一個使用網絡登錄;

5.6.1在終端1推送測試視頻流(FFmpeg)

FFmpeg會持續(xù)生成SMPTE測試條視頻流,并寫入/dev/video21。

root@elf2-desktop:~# ffmpeg -f lavfi -i smptebars=size=1024x600 -pix_fmt yuv420p -f v4l2 /dev/video21
終端1輸出:

5.6.2在終端2查看視頻流(GStreamer)
root@elf2-desktop:~# gst-launch-1.0 v4l2src device=/dev/video21 ! autovideosink

屏幕彈出一個窗口顯示SMPTE測試條:

通過以上步驟,我們完成了在ELF 2開發(fā)板上部署v4l2loopback的全過程。從事嵌入式開發(fā)工程師與高校師生可基于此構建各種視頻應用場景,如視頻會議系統(tǒng)、智能監(jiān)控系統(tǒng)等。如果在實踐中遇到問題,歡迎隨時交流探討!

飛凌嵌入式

飛凌嵌入式

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

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

查看更多

相關推薦