/ ai资讯

ElfBoard技术贴|如何在ELF 2开发板上部署v4l2loopback

发布时间:2025-06-05 17:46:50

在嵌入式系统开发领域,虚拟视频设备技术正成为实现多媒体功能创新的关键技术支撑。v4l2loopback作为一款功能强大的Linux内核模块,可以为视频流处理提供灵活的路由架构,在远程协作、实时流媒体传输及AI视觉处理等场景展现出显著应用价值。本文将以ELF 2开发板为载体,系统阐述v4l2loopback模块的工程化部署全流程。

一、设置环境

首先需配置交叉编译工具链路径,确保系统能够正确识别ARM64架构的编译工具。打开终端,执行以下命令:

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 的定义。执行以下命令编译内核头文件:

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


四、获取并编译v4l2loopback

4.1克隆v4l2loopback仓库

通过Git工具从官方代码仓库获取v4l2loopback的最新源代码。在终端中执行以下命令:

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文件

由于不同开发板的内核架构和配置存在差异,需对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开发板的硬件架构匹配。

CROSS_COMPILE=aarch64-buildroot-linux-gnu-:指定交叉编译工具前缀,确保生成的模块适用于ARM64架构的开发板。

编译过程完成后,将在当前目录下生成名为v4l2loopback.ko的内核模块文件,这是后续需要部署到开发板上的核心文件。

五、测试验证

5.1拷贝v4l2loopback.ko文件到开发板

将生成的v4l2loopback.ko文件通过U盘拷贝到开发板/root目录下。

5.2加载模块

在开发板上加载v4l2loopback模块,创建2个设备并指定设备号

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

参数说明:

devices=2:指定创建2个虚拟视频设备。

video_nr=21,22:手动指定设备号为/dev/video21和/dev/video22,避免与系统已有的视频设备号冲突。

card_label=VirtualCam1,VirtualCam2(可选):为虚拟设备设置易识别的标签,方便后续使用中区分不同设备。

5.3列出已加载的模块

执行以下命令查看已加载的内核模块,确认 v4l2loopback 模块是否成功加载:

root@elf2-desktop:~# lsmod

输出包含v4l2loopback相关信息,则表明模块加载成功。

5.4检查生成的视频设备

通过以下命令列出系统中的视频设备文件,检查是否成功创建了指定的虚拟视频设备:

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开发板连接屏幕;

登录两个终端,一个使用串口登录,一个使用网络登录;

5.6.1在终端1推送测试视频流(FFmpeg)

FFmpeg会持续生成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开发板上部署v4l2loopback的全过程。从事嵌入式开发的工程师与高校师生可基于此构建各种视频应用场景,如视频会议系统、智能监控系统等。如果在实践中遇到问题,欢迎随时交流探讨!

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

如有疑问请发送邮件至:bangqikeconnect@gmail.com