0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

ElfBoard 2025-06-05 14:24 次阅读

嵌入式系统开发领域,虚拟视频设备技术正成为实现多媒体功能创新的关键技术支撑。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

做如下修改:

wKgZO2hBM0uASyZlAADBObJOlAM001.pngwKgZPGhBM1aASAjbAAD2MM6BtmA006.png

修改完成后,保存并退出编辑器。

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

wKgZO2hBNGKAZCmtAAAnEnLRipg857.png

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

5.4检查生成的视频设备

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

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

wKgZO2hBNKKAPk5FAABKpF9lbFU302.png

可以看到/dev/video21和/dev/video22两个设备文件。

5.5查看设备信息

使用v4l2-ctl工具查看虚拟视频设备的详细信息

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

wKgZPGhBNRKAQTHQAACEWkwtUS8589.png

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

wKgZPGhBNayAZUGAAABxMwUxxPc810.png

终端1输出:

wKgZPGhBNcCAfm1iAAD3P3UeGdQ669.pngwKgZO2hBNceAN0-7ABT4OOrzTYw701.pngwKgZO2hBNdOABQrDABvZWgYOseo046.png

5.6.2在终端2查看视频流(GStreamer)

root@elf2-desktop:~# gst-launch-1.0 v4l2src device=/dev/video21 ! autovideosink

wKgZO2hBNgmABSL5AAA9oDkFqPw303.png

屏幕弹出一个窗口显示SMPTE测试条:

wKgZO2hBNiOAGL6UAACYKpldTbc377.png

通过以上步骤,我们完成了在ELF 2开发板上部署v4l2loopback的全过程。从事嵌入式开发工程师与高校师生可基于此构建各种视频应用场景,如视频会议系统、智能监控系统等。如果在实践中遇到问题,欢迎随时交流探讨!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6064

    文章

    44932

    浏览量

    647493
  • 嵌入式
    +关注

    关注

    5142

    文章

    19561

    浏览量

    315368
  • Linux开发
    +关注

    关注

    0

    文章

    37

    浏览量

    7255
收藏 人收藏

    评论

    相关推荐
    热点推荐

    ELF 1技术|在NXP源码基础上适配开发板的按键功能

    ELF1开发板。接下来,我们将详细阐述适配过程中关于按键功能实现的完整步骤。值得一提的是,ELF1开发板上预置了标识为K1、K2、K3的三
    的头像 发表于 03-08 16:58 1216次阅读
    <b class='flag-5'>ELF</b> 1<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|在NXP源码基础上适配<b class='flag-5'>开发板</b>的按键功能

    ElfBoard技术|如何在NXP源码基础上适配ELF 1开发板的UART功能

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。在i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发板,实际引出
    的头像 发表于 09-25 13:56 2724次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如<b class='flag-5'>何在</b>NXP源码基础上适配<b class='flag-5'>ELF</b> 1<b class='flag-5'>开发板</b>的UART功能

    ElfBoard技术|ELF 1开发板适配摄像头详解

    ELF1及ELF1S开发板适配的OV5640摄像头,集成了CMOS图像传感器,作为一款500万像素级别的摄像头,不仅能够支持最高达2592x1944分辨率的QSXGA图像输出,帧率可达15fps
    的头像 发表于 12-27 10:16 1246次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|<b class='flag-5'>ELF</b> 1<b class='flag-5'>开发板</b>适配摄像头详解

    来自资深工程师对ELF 2开发板的产品测评

    来自资深工程师对ELF 2开发板的使用测评
    的头像 发表于 04-28 15:03 798次阅读
    来自资深工程师对<b class='flag-5'>ELF</b> <b class='flag-5'>2</b><b class='flag-5'>开发板</b>的产品测评

    ElfBoard技术实战|ELF 2开发板本地部署DeepSeek大模型的完整指南

    ELF 2开发板本地部署DeepSeek大模型的完整指南
    的头像 发表于 05-16 11:13 1667次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b>实战|<b class='flag-5'>ELF</b> <b class='flag-5'>2</b><b class='flag-5'>开发板</b>本地<b class='flag-5'>部署</b>DeepSeek大模型的完整指南

    学习笔记分享|ElfBoard开发板初识

    大家分享一篇共创官学习笔记,共同见证携手进步的真实写照: 最近很荣幸能够参加保定飞凌嵌入式公司举办的Elfboard\"自创一派\" 共创社活动。下图是本次活动采用的ElF 1开发板
    发表于 01-04 10:22

    飞凌ElfBoard ELF 1板卡-如何在ELF 1开发板上实现对java的支持

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。在ELF 1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的选择空间,今天就为各位小伙伴详细解析如何在
    发表于 03-20 09:51

    ELF 2学习试用】ELF 2开发板开箱测评

    简介 很高兴收到飞凌嵌入式提供的ELF 2开发板ELF 2学习基于瑞芯微RK3588旗舰处理
    发表于 01-15 09:43

    ELF 2学习试用】ELF2开发板开箱体验及基本使用环境搭建

    开发板 输出为12v 3A的电源适配器(和ipad的充电器外观好像) 图1 外包装盒 图2 开箱物品内容 图3 ELF2开发板正面
    发表于 01-19 22:41

    rk3399是怎样使用v4l2loopback实现虚拟camera开发

    1、编译v4l2回环设备驱动camera驱动,生成video0设备;drivers/v4l2loopback/v4l2loopback.cdrivers/v4l2loopback
    发表于 05-06 11:34

    这么简单!G2L开发板安装Docker

    Docker是什么?Docker有什么用?我们不再赘述。RZ/G2L开发板支持ubuntu系统,下面快速演示一下如何在G2L开发板上安装支持
    的头像 发表于 04-15 16:18 938次阅读
    这么简单!G<b class='flag-5'>2L</b><b class='flag-5'>开发板</b>安装Docker

    ELF技术|如何在开发板上实现对Java的支持

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。在ELF1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的选择空间,今天就为各位小伙伴详细解析如何在
    的头像 发表于 03-13 16:47 715次阅读
    <b class='flag-5'>ELF</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如<b class='flag-5'>何在</b><b class='flag-5'>开发板</b>上实现对Java的支持

    ElfBoard技术|在NXP源码基础上适配ELF 1开发板的按键功能

    本次源码适配工作是在NXPi.MX6ULLEVK评估的Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目标是调整功能接口引脚配置,以适应ELF1开发板。接下来
    的头像 发表于 07-10 09:54 886次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|在NXP源码基础上适配<b class='flag-5'>ELF</b> 1<b class='flag-5'>开发板</b>的按键功能

    ElfBoard技术|如何在ELF 1开发板上搭建流媒体服务器

    流媒体服务器是一种专门用于传输实时数据流的服务器软件,广泛用于视频直播、视频会议、音频播放等应用场景。在嵌入式开发领域,将流媒体服务器部署开发板上可以实现诸如视频监控、实时数据传输等功能。本文将介绍如何利用nginx和其rtm
    的头像 发表于 08-20 14:48 869次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如<b class='flag-5'>何在</b><b class='flag-5'>ELF</b> 1<b class='flag-5'>开发板</b>上搭建流媒体服务器

    ElfBoard技术|如何在ELF 1开发板上交叉移植Qt

    在嵌入式系统开发领域,针对特定硬件平台进行Qt框架的移植与适配是一项关键技术任务。作为业界主流的跨平台应用开发框架,Qt凭借其完善的图形界面支持能力,在嵌入式开发图形界面应用程序中占据
    的头像 发表于 02-24 16:18 518次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如<b class='flag-5'>何在</b><b class='flag-5'>ELF</b> 1<b class='flag-5'>开发板</b>上交叉移植Qt