<ul id="gu0q4"></ul>
  • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
    <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    • <samp id="gu0q4"></samp>

      技術(shù)貼|如何在ELF 2開發(fā)板上部署v4l2loopback原創(chuàng)

      發(fā)布時間:2025-06-05 13:43:29
      技術(shù)貼 ELF 2開發(fā)板 v4l2loopback

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

      ?

      01
      設(shè)置環(huán)境
      ?

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

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

      ?

      02
      配置內(nèi)核
      ?
      elf@ubuntu:~/work/ELF2-linux-source$?./build.sh elf2_desktop_defconfig

      ?

      03
      編譯內(nèi)核頭文件
      ?

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

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

      ?

      04
      獲取并編譯v4l2loopback
      ?

      4.1克隆v4l2loopback倉庫

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

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

      ?

      4.2進(jìn)入v4l2loopback目錄

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

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

      ?

      4.3修改v4l2loopback.c文件

      由于不同開發(fā)板的內(nèi)核架構(gòu)和配置存在差異,需對v4l2loopback的源代碼進(jìn)行適當(dāng)修改以確保兼容性。使用文本編輯器打開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-

      ?

      參數(shù)說明:

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

      ?

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

      ?

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

      ?

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

      ?

      05
      測試驗證
      ?

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

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

      ?

      5.2加載模塊

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

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

      ?

      參數(shù)說明:

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

      ?

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

      ?

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

      ?

      5.3列出已加載的模塊

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

      root@elf2-desktop:~# lsmod

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

      ?

      5.4檢查生成的視頻設(shè)備

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

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

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

      ?

      5.5查看設(shè)備信息

      使用v4l2-ctl工具查看虛擬視頻設(shè)備的詳細(xì)信息

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

      ?

      5.6視頻流傳輸

      說明:

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

      登錄兩個終端,一個使用串口登錄,一個使用網(wǎng)絡(luò)登錄;

      ?

      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ā)的工程師與高校師生可基于此構(gòu)建各種視頻應(yīng)用場景,如視頻會議系統(tǒng)、智能監(jiān)控系統(tǒng)等。如果在實踐中遇到問題,歡迎隨時交流探討!

      ?

      其它推薦:

      推薦閱讀:

      /* 53客服*/ /* 百度統(tǒng)計*/ /* 百度站長*/
      <ul id="gu0q4"></ul>
    • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
      <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      • <samp id="gu0q4"></samp>