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

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

3天内不再提示

瑞芯微(EASY EAI)RV1126B gstreamer使用介绍

广州灵眸科技有限公司 2026-04-21 16:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. GStreamer介绍

GStreamer 是用来构建流媒体应用的开源多媒体框架(framework)。其目标是要简化音/视频应用程序的开发。

1.1 基本概念

管线(pipeline):又称为管道或流水线,是一个完整的GStreamer工作流,即:一个多媒体任务处理的基本单元(必须要以source类【元素】开头,以sink类【元素】结尾)

v2-c350cc46bf2fe7f78a263975936a826a_720w.webp

元素(element):GStreamer工作流中的每一个节点,例如source类元素、filter类元素、sink类元素。元素与元素之间通过【管道】进行数据传递(而【管道】又通过【衬垫】与【元素】进行连接)

v2-42ba673da1e5e9148042e78cf73e5657_720w.webp

衬垫(Pad):数据通过衬垫进入或离开这个元素,输入衬垫叫sinkPads,输出衬垫叫srcPads,每个元素都会至少一个衬垫,如source类元素和sink类元素。

v2-24aa3b2c41b56c804627fd3f5a3ad0aa_720w.webp

有些元素会有多个衬垫,比如:解复用器(demuxer)和分流器(tee)。

v2-c1405e10bc4746560c1ff68344def8a5_720w.webp

1.2 Gstreamer工具

gst-launch-1.0:gst-launch-1.0是Gstreamer中一个常用和强大的工具,用于创建并启动多媒体管道图。它可以从标准命令行读取管道图的描述,用户可以在命令行中直接运行该描述。它不需要复杂的编程或脚本,使用户方便地测试和调试管道图。

gst-inspect-1.0:gst-inspect-1.0可以打印出可用 GStreamer 插件的信息、特定插件的信息或特定元素的信息。当在没有PLUGIN或ELEMENT参数的情况下执行时,gst-inspect-1.0将打印所有插件和元素的列表以及sumary。当使用PLUGIN或ELEMENT参数执行时,gst-inspect-1.0将打印有关该插件或元素的信息。

1.3 Gstreamer调试信息

使用GST_DEBUG环境变量,可查看调用Gstreamer时所产生的打印信息。比如在终端输入以下命令。

export GST_DEBUG=2

如果想看到更详细的信息,调试等级可设为3。

2. 编码

下文用到的video节点,可以通过以下几篇文章查询:

MIPI-CSI:《外设接口使用说明/摄像头/MIPI-CSI摄像头》

USB Camera:《外设接口使用说明/摄像头/USB摄像头》

2.1 保存录像

通过串口调试或ssh调试,进入开发板环境:

v2-18e8caaeecaf06124107b526ee09df05_720w.webp

经查询,cam0的设备节点是video23。
输入下方命令,即可对video23节点进行录像。效果如下图所示。

gst-launch-1.0 v4l2src device=/dev/video23 ! mpph264enc ! mpegtsmux ! filesink location=./1.ts -e

v2-d1bf754db71dc5546ffeb2e7216ec780_720w.webp

按下组合键【Ctrl+C】后即可退出录像,并得到一个ts文件(MPEG-TS:MPEG Transport Stream)。可在PC端Ubuntu系统用scp的方式从板卡拉取ts文件,并且可以通过vlc对其解码播放。

v2-0f11bdd245469881098f8e0f477a4e3b_720w.webp

调整帧率录制:

gst-launch-1.0 v4l2src device=/dev/video23 ! video/x-raw,framerate=30/1 ! videoconvert ! mpph264enc ! mpegtsmux ! filesink location=./1.ts -e

调整分辨率和帧率录制:

gst-launch-1.0 v4l2src device=/dev/video23 ! video/x-raw,width=1280,height=800,framerate=30/1 ! videoconvert ! mpph264enc ! mpegtsmux ! filesink location=./1.ts -e

除了ts格式,还有通过下方命令录制其它格式的视频:

-flv格式录制:

gst-launch-1.0 v4l2src device=/dev/video23 ! mpph264enc ! h264parse ! flvmux ! filesink location=./1.flv -e

-裸流录制:

gst-launch-1.0 v4l2src device=/dev/video23 ! mpph264enc ! filesink location=./1.h264 -e

2.2 UDP推流

首先创建一个名为gst_test.sdp的文件。

v2-117de788c3564af1c5176a146192997c_720w.webp

用记事本打开此文件,添加如下内容(注意两个IP地址均为用户电脑的IP地址)

v=0 o=- 0 0 IN IP4 192.168.3.191 s=H.264 Stream from RK3576 c=IN IP4 192.168.3.191 t=0 0 m=video 8554 RTP/AVP 96 a=rtpmap:96 H264/90000

然后通过vlc打开刚才设置的文件,如下图所示:

v2-2069e35ba32fb546ad6378dd4d6c6a56_720w.webp

通过adb shell进入【开发板环境】,输入下方命令(注意命令中的IP地址为用户电脑的IP地址),即可对video节点编码,并通过UDP推流到PC的vlc上。

gst-launch-1.0 v4l2src device=/dev/video23 ! video/x-raw,framerate=30/1 ! mpph264enc ! h264parse ! rtph264pay config-interval=1 ! queue max-size-buffers=100 leaky=downstream ! udpsink host=192.168.3.191 port=8554 sync=false

执行现象如下:

v2-15a3a8a13ca7883eee514d5b85bd4d9c_720w.webp

2.3 rtsp服务器

如果要用gstreamer搭建rtsp服务器,则需要额外的库以及第三方基于此库开发的gstreamer应用。

首先,用apt-get安装rtspServer相关的库,命令如下:

sudo apt-get install libgstrtspserver-1.0-dev

安装【成功】后,获取rtspServer应用的源码,命令如下:

wget https://raw.githubusercontent.com/GStreamer/gst-rtsp-server/1.14/examples/test-launch.c

然后通过下方命令编译此源码:

gcc test-launch.c -o test-launch $(pkg-config --cflags --libs gstreamer-1.0 gstreamer-rtsp-server-1.0)

成功生成test-launch后,通过下方命令,运行此rtspServer。

./test-launch "v4l2src device=/dev/video23 ! mpph264enc ! rtph264pay name=pay0 pt=96"

最后用vlc通过8554端口拉取rtsp流。

v2-2c038eddab883d91274fe53e1f3d4888_720w.webp

若要指定分辨率和帧率,可以采用下方的例子:

./test-launch "v4l2src device=/dev/video23 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! videoconvert ! mpph264enc ! rtph264pay name=pay0 pt=96"

2.4 注意事项

编码时要注意编码帧率,不能超过编码格式的最大能力。(假如编h.264的最大帧率只能到30帧,那么给h.264编到60帧。无论是录制还是推流,再解码端都会发生异常)

3. 解码

3.1 录像文件解码

如果录像文件名为1.ts,并且位于/userdata/目录中,就执行下方命令即可用gstreamer解码并播放。否则需要调整一下文件位置。

命令执行后,桌面系统会出现一个窗口,并播放文件的内容,效果如下所示。

gst-launch-1.0 filesrc location=/userdata/1.ts ! tsdemux ! queue ! h264parse ! mppvideodec ! videoflip method=1 ! autovideosink

v2-c32a7bb4f52d755144b80ddfa6e4f18c_720w.webp

注:如果无法满屏播放,请参考一下本文的==2.1保存录像==章节,调整一下分辨率。

同样文件在/userdata/目录中,播放flv格式视频:

gst-launch-1.0 filesrc location=./1.flv ! flvdemux ! h264parse ! mppvideodec ! videoconvert ! videoflip method=1 ! autovideosink

播放h.264裸流视频:

gst-launch-1.0 filesrc location=/userdata/1.h264 ! h264parse ! mppvideodec ! videoflip method=1 ! autovideosink sync=false

3.2 rtsp拉流解码

执行下方命令,即可对一个地址为rtsp://admin:a12345678@192.168.5.68的IPCamera进行拉流并显示。

gst-launch-1.0 rtspsrc location=rtsp://admin:a12345678@192.168.5.68 ! rtph264depay ! h264parse ! mppvideodec ! videoflip method=1 ! autovideosink sync=false

命令执行后,MIPI-DSI屏上会出现一个窗口,并播放IPCamera的内容,效果如下所示。

v2-4ba6d35e5d8e2b8ac1d2aaffa826becc_720w.webp

4. 分流器使用(tee)

tee是一个很常用的元素。比如有一个需要边用屏幕播放摄像头画面,又要边把摄像头的画面录下来应用场景,就需要用到分流器。

命令如下:

gst-launch-1.0 v4l2src device=/dev/video23 ! video/x-raw,framerate=30/1 ! tee name=t t. ! queue ! videoflip method=1 ! autovideosink sync=false t. ! queue ! mpph264enc ! mpegtsmux ! filesink location=./1.ts

节点图解:

v2-144915b846d463e07517c83d271637e3_720w.webp

命令可拆分为三个部分理解:

第一部分,取视频流:

gst-launch-1.0 v4l2src device=/dev/video23 ! video/x-raw,framerate=30/1 ! tee name=t

第二部分,复制一份视频流到显示窗口(autovideosink):

t. ! queue ! videoflip method=1 ! autovideosink sync=false

第三部分,复制一份视频流到编码器,最终打包成ts文件:

t. ! queue ! mpph264enc ! mpegtsmux ! filesink location=./1.ts

4.1 注意事项

分流器的实现原理是通过CPU复制一份,送入管道,因此如果用于处理原格式(YUV/RGB等)数据,将会加大CPU以及内存的开销。

5. gst-inspect-1.0使用

5.1 列出所有元素

直接输入gst-inspect-1.0命令即可列出所有元素,及其简要描述,如下所示。

gst-inspect-1.0

v2-b41462a8c05d1941f21acc6af9713fb7_720w.webp

5.2 查看元素信息

采用gst-inspect-1.0加元素名的方式,即可查看这个元素的详细信息,如下所示。

gst-inspect-1.0 v4l2src

v2-5108e132eada2ecfadbf2e5483f4ce2e_720w.webp

5.3 使用技巧

gst-inspect-1.0可以配合grep来初步筛选自己感兴趣的【元素】,比如pcma格式相关的音频插件元素,如下所示。

gst-inspect-1.0 | grep pcma gst-inspect-1.0 | grep law

v2-79248a096cdbe4df90c5a45de08ae80a_720w.webp

6. Gstreamer文档

Gstreamer文档的官网地址:

https://gstreamer.freedesktop.org

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

    关注

    1819

    文章

    50298

    浏览量

    266843
  • 开发板
    +关注

    关注

    26

    文章

    6409

    浏览量

    120590
  • 瑞芯微
    +关注

    关注

    27

    文章

    846

    浏览量

    54647
  • EASY-EAI灵眸科技

    关注

    4

    文章

    97

    浏览量

    3721
  • RV1126B
    +关注

    关注

    0

    文章

    85

    浏览量

    240
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    全新AI视觉芯片RV1126B:多场景智能终端方案介绍

    微电子股份有限公司正式推出新一代AI视觉芯片——RV1126B作为智能视觉芯片家族中的
    的头像 发表于 07-16 17:00 4159次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>全新AI视觉芯片<b class='flag-5'>RV1126B</b>:多场景智能终端方案<b class='flag-5'>介绍</b>

    (EASY EAI)RV1126B 音频输入

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 12-18 13:41 2557次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输入

    (EASY EAI)RV1126B PWM使用

    1.PWM简介1.1开发板PWM资源1.2查找PWM节点rv1126b的pwm资源表如下:【PWM1CH0】对应的是pwm1_4ch_0,寄存地址为20700000。【PWM1CH1】对应
    的头像 发表于 01-06 10:49 8182次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> PWM使用

    (EASY EAI)RV1126B 音频输出

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 04-01 17:13 8506次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输出

    EASY EAI Nano-TB(RV1126B)开发板试用】+初识篇

    Nano-TB是灵眸科技研发的一款应用于AIoT领域的开发板,它基于RV1126B处理器,集成了4个Cortex-A53及独立的NEON协处理器,它支持4K@30fps的H.
    发表于 10-25 22:06

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-灯闪

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】开箱测评 https://pan.baidu.com/s/15pnbJXPN5TrfV2KfsKaZyQ?pwd=1234 打开
    发表于 11-01 21:26

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】通过wifi连接,使用ssh登录EASY EAI Nano-TB(
    发表于 11-02 18:34

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126B
    发表于 11-03 10:00

    EASY EAI Nano-TB(RV1126B)开发板试用】+1、开箱上电

    ,避免因接触不良导致显示或采集异常。 2 硬件解析:强劲AI核心与丰富接口 2.1 核心处理器性能 EASY EAI Nano-TB开发板的核心基于
    发表于 11-19 21:39

    EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装

    ,并介绍了系统镜像安装部署的相关流程。 介绍 EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。 核心板基于
    发表于 12-23 18:05

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心板EAI11
    的头像 发表于 09-04 10:50 5092次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126B</b>,一文看懂升级差异

    【免费试用】EASY EAI Nano-TB(RV1126B)开发套件评测

    EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。核心板基于RV1126B处理器设计,并引入了新
    的头像 发表于 09-23 08:09 1234次阅读
    【免费试用】<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Nano-TB(<b class='flag-5'>RV1126B</b>)开发套件评测

    RV1126B特性概述

    RV1126BRockchip在2025年第二季度全新推出的Arm架构AI视觉芯片,搭载4核Cortex-A53与自研3Tops算力NPU。全面替代上一代的
    的头像 发表于 10-09 11:22 2140次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b>特性概述

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    AI智能芯片迭代提速,推出了全新的Arm架构AI视觉芯片RV1126B,是否替换RV1126,CPU性能是挤牙膏还是大突破。带着这些核
    的头像 发表于 12-11 17:13 2514次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126B</b>,CPU性能吊打<b class='flag-5'>RV1126</b>

    (EASY EAI)RV1126B 人体关键点识别

    的特点。本人员检测算法在数据集表现如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的运行效率:17个人体关键点索引定义:2.快速上手2.1开发
    的头像 发表于 01-23 10:13 3506次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 人体关键点识别