RK3568 基于Gstreamer的多媒体调试记录
文章目录
- 1、环境介绍
- 2、概念理清
- 3、提前准备
- 4、GStreamer编译
- 5、GStreamer基础介绍
- 6、视频播放初体验
- 7、视频硬编码
- 7.1、h264
- 7.2、h265
- 8、视频硬解码
- 8.1、解码视频并播放
- 解码视频并播放带音频
1、环境介绍
硬件:飞凌ok3568-c开发板
软件:原厂rk356x sdk
2、概念理清
首先,rk3568等芯片内部是物理存在视频编解码硬件加速模块,包括视频解码器(如RKVDEC),视频编码器(RKVENC)等。有了具体的物理硬件,就一定会有对应的软件驱动。所以在kernel态,会存在这些硬件编解码器的设备驱动。为了屏蔽不同芯片平台和操作系统的差异,诞生了媒体处理软件平台,也就是所谓的MPP(Media Process Platform),MPP会实现对硬件编码器的功能开发。同时MPP向上为用户态应用程序开发者提供了统一的视频媒体处理接口,也就是MPI(Media Process Interface)。各种多媒体中间件如GStreamer、OpenMAX,以GStreamer为例,可以使用MPI接口编写GStreamer硬件编解码插件。也可以直接在应用程序中使用MPI接口实现多媒体处理。
而本文,我们将使用GStreamer来测试多媒体功能。Rockchip开发了一个GStreamer插件,叫作rockchipmpp,这样使用GStreamer工具时(如gst-play,gst-launch)显示指定编解码插件,就可以体验硬件编解码能力。
rochchipmpp插件包含众多元素,如解码相关的:mppvideodec和mppjpegdec。编码相关的:mpph264enc,mppvp8enc,mppjpegenc等。GStreamer在视频解码阶段会优先调⽤rockchipmpp插件。
3、提前准备
本例准备了一个7寸的1024*600分辨率的hdmi屏来配合视频播放测试。
4、GStreamer编译
以下以buildroot系统为例,menuconfig中需要开启相关配置,SDK其实已经默认开启。相关宏均以整理至/buildroot/configs/rockchip/multimedia/gst/,在目标config里直接包含即可。
5、GStreamer基础介绍
Gstreamer的插件主要分为三大类:源插件(Source)、过滤器/类过滤器插件(Filter)、接收插件(Sink)。 源插件只产生数据,但不接收数据,比如filesrc插件,用于读取文件,videotestsrc插件,用于生成指定的图像等。过滤器/类过滤器插件接收数据,对数据进行一些处理,再发送给后级,比如一些解封装器,编解码器等插件。接收插件只接收数据,但不产生数据,比如filesink,用于保存文件,waylandsink,用于渲染画面等。
6、视频播放初体验
直接使用gst-play命令播放mp4视频:
# 由Gstreamer自动查找解码器,由于mppvideodec优先级最高,只要是该插件支持的格式,最终就会选择该插件解码
root@rk3568-buildroot:/# gst-play-1.0 /oem/SampleVideo_1280x720_5mb.mp4
Press 'k' to see a list of keyboard shortcuts.
Now playing /oem/SampleVideo_1280x720_5mb.mp4
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
0:00:29.5 / 0:00:29.5
Reached end of play list.
7、视频硬编码
7.1、h264
如下命令会生成一个h264编码的mp4文件:
root@rk3568-buildroot:/# gst-launch-1.0 mp4mux name=mux ! filesink location=enc_h264_test.mp4 videotestsrc num-buffers=600 ! video/x-raw,framerate=60/1,width=1920,height=1080,format=NV12 ! mpph264enc ! h264parse ! mux.video_0 -e
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Prerolled, waiting for async message to finish...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:17.661260775
Setting pipeline to NULL ...
Freeing pipeline ...
可以自行在windows下打开查看。
7.2、h265
root@rk3568-buildroot:/# gst-launch-1.0 mp4mux name=mux ! filesink location=enc_h265_test.mp4 videotestsrc num-buffers=600 ! video/x-raw,framerate=60/1,width=1920,height=1080,format=NV12 ! mpph265enc ! h265parse ! mux.video_0 -e
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Prerolled, waiting for async message to finish...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:17.624120229
Setting pipeline to NULL ...
Freeing pipeline ...
可以自行在windows下打开查看。
8、视频硬解码
8.1、解码视频并播放
# 由Gstreamer自动查找解码器,由于mppvideodec优先级最高,只要是该插件支持的格式,最终就会选择该插件解码
root@rk3568-buildroot:/# gst-play-1.0 /oem/SampleVideo_1280x720_5mb.mp4# 手动构建pipeline
root@rk3568-buildroot:/# gst-launch-1.0 filesrc location=/oem/SampleVideo_1280x720_5mb.mp4 ! parsebin ! mppvideodec ! waylandsink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Pipeline is PREROLLED ...
Prerolled, waiting for async message to finish...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
[13:38:44.139] seeing the first app
Got EOS from element "pipeline0".
Execution ended after 0:00:29.561555096
Setting pipeline to NULL ...
Freeing pipeline ...
解码视频并播放带音频
root@rk3568-buildroot:/# gst-launch-1.0 filesrc location=/oem/SampleVideo_1280x720_5mb.mp4 ! qtdemux name=demux demux.video_0 ! queue ! parsebin ! mppvideodec ! autovideosink demux.audio_0 ! queue ! aacparse ! faad ! alsasink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Pipeline is PREROLLED ...
Prerolled, waiting for async message to finish...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstAudioSinkClock
Got EOS from element "pipeline0".
Execution ended after 0:00:29.607928266
Setting pipeline to NULL ...
Freeing pipeline ...
插入耳机或者喇叭,就可以体验画音同步。
相关文章:
RK3568 基于Gstreamer的多媒体调试记录
文章目录 1、环境介绍2、概念理清3、提前准备4、GStreamer编译5、GStreamer基础介绍6、视频播放初体验7、视频硬编码7.1、h2647.2、h265 8、视频硬解码8.1、解码视频并播放解码视频并播放带音频 1、环境介绍 硬件:飞凌ok3568-c开发板 软件:原厂rk356x …...
ZYNQ笔记(五):AXI GPIO 中断
版本:Vivado2020.2(Vitis) 任务:使用 AXI GPIO IP 核以中断方式实现按键 KEY 控制 LED 亮灭翻转(两个都在PL端) 目录 一、介绍 二、硬件设计 三、软件设计 四、效果 一、介绍 AXI GPIO 中断通常…...
C++23 多维下标运算符:探索 P2128R6 提案
文章目录 一、背景与动机二、语法与实现2.1 语法2.2 实现方式 三、应用场景3.1 多维数组3.2 自定义数据结构3.3 并行计算 四、性能影响4.1 编译时优化4.2 自定义数据结构的优化 五、总结 C23 引入了许多新特性,其中之一便是多维下标运算符(P2128R6&#…...
原理图设计准备:页面栅格模板应用设置
一、页面大小的设置 (1)单页原理图页面设置 首先,选中需要更改页面尺寸的那一页原理图,鼠标右键,选择“Schmatic Page Properties”选项,进行页面大小设置。 (2)对整个原理图页面设…...
LeeCode 409.最长回文串
给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的 回文串 的长度。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 示例 1: 输入:s "abccccdd" 输出:7 解释: 我们可以构造的…...
保护PCBA的不同方法:喷三防漆 vs 镀膜
PCBA(印刷电路板组件)的防护工艺中,喷三防漆和镀膜(如Parylene气相沉积)是两种常见技 术。它们在防护目的上类似,但在具体实现方式和应用场景上有显著差异。以下从外观、工艺、性 能、物理性质和成本五个…...
XILINX FPGA万兆光电口PXIE板卡设计
主要性能指标 1、 FPGA 型号: XC7K325-TFFG676-2 ; 2、 网络端口速率 : 10Gbps/1Gbps/2.5Gbps ; 3、 网络端口形式 : 3 路 SFP 万兆光电口 ; 4、 内存数量: 4Gb 4 ; 5、 内存带宽&…...
LangChain4j实战-Java AI应用开源框架之LangChain4j和Spring AI
今天这篇文章我来分享LangChain4j实战-Java AI应用开源框架之LangChain4j和Spring AI。 在贝恩聊架构AI专栏中通过学习如何使用Java相关AI应用开源框架,到后续开发企业级Java AI应用,将大型语言模型和AI工具集成到现有系统中。我们将重点介绍如何使用Sp…...
机器学习十大算法全解析机器学习,作为人工智能的基石,涵盖了众多高效的算法。今天,我们就来深入探讨其中的十大核心算法!
1️⃣ 线性回归:通过最小化误差的平方和来寻找最佳函数匹配。 2️⃣ 逻辑回归:用于分类问题,通过逻辑函数来预测事件发生的概率。 3️⃣ 决策树:基于特征选择和阈值来构建树形结构,用于分类和回归。 4️⃣ 朴素贝叶…...
day26图像处理OpenCV
文章目录 一、OpenCV1.介绍2.下载3.图像的表示4.图像的基本操作4.1图片读取或创建4.1.1读取4.1.2创建 4.2创建窗口4.3显示图片4.3.1设置读取的图片4.3.2设置显示多久4.3.3释放 4.4.保存图片4.5图片切片(剪裁)4.6图片大小调节 5.在图像中绘值5.1绘制直线5…...
怎么查询SQL Server AlwaysOn
1. SQL Server AlwaysOn 是什么? SQL Server AlwaysOn 是 Microsoft 提供的高可用性(High Availability, HA)和灾难恢复(Disaster Recovery, DR)解决方案,包含以下两个核心技术: 组件描述故障…...
10分钟做了一个投资回报计算器,欢迎大家使用
一、背景 今天突然想算一下1万本金,2%利率存2年情况下的投资回报收益情况,但是发现手上没有计算器,想着自己做一个网页简单实现一下,于是有了这个小工具(FutureValueCalculator——未来价值计算器)。 二、…...
报错:mount: unknown filesystem type ‘vfat’
服务器重启之后 进入 Ctrl D 界面 界面报错是 FAILED to mount /boot/efi 输入密码进去之后 (py38) [rootlocalhost data]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 1.5T 0 disk ├─sda1 8:1 0 50M 0 part /bo…...
Java学习手册:面向对象编程核心概念
面向对象编程(OOP)是Java语言的核心编程范式,它强调通过对象之间的交互来实现程序功能。OOP的核心思想是将现实世界中的事物抽象为对象,通过对象的属性和行为来描述和操作这些事物。本文将深入探讨Java中面向对象编程的三大核心概…...
工厂模式(简单工厂,工厂方法,抽象工厂)
工厂模式 工厂模式是java中最常用的设计模式,主要是用来完成对象的创建,使得对象创建过程和对象使用过程分离。 简单来说是取消对象创建者和使用者的耦合,简化new 对象的创建。 优势 :对象的属性创建完整。 缺点: 创建…...
【实际项目分享】多相机取图存图问题
1、项目介绍 针对 5路相机同步取图 场景,设计了一套高并发、低延迟的图像数据管理方案,重点解决多线程环境下的数据竞争与存储效率问题。 2、设计目标 高并发写入:支持5个相机线程同时写入数据,无锁冲突…...
LLMs基础学习(七)DeepSeek专题(1)
LLMs基础学习(七)DeepSeek专题(1) 文章目录 LLMs基础学习(七)DeepSeek专题(1)DeepSeek 相关资料官方资料与基础文档实践指南和技术解析 热启动与冷启动**热启动(主流&…...
安装vllm
ubuntu 22.04, RTX3080, cuda 12.1, cudnn 8.9.7,cuda和cudnn的安装参考:https://blog.csdn.net/m0_52111823/article/details/147154526?spm1001.2014.3001.5501。 查看版本对应关系,下载12.1对应的whl包,https://github.com/vl…...
SVMSPro分布式综合安防管理平台--地图赋能智慧指挥调度新高度
SVMSPro分布式综合安防管理平台–地图赋能智慧指挥调度新高度 在智慧城市建设和公共安全需求日益增长的背景下,SVMSPro分布式综合安防管理平台凭借其强大的地图功能与多协议兼容能力,正在成为公安、司法、消防、城管、交通等领域的指挥调度“智慧大脑”…...
科技快讯 | OpenAI:向Plus和Pro用户推出ChatGPT记忆提升功能;我国成功发射通信技术试验卫星十七号;芯片国产化率超九成
继 OpenAI 后,谷歌 Gemini 模型将支持 Anthropic 的 MCP 协议 4月10日,谷歌DeepMind宣布将支持Anthropic的模型上下文协议(MCP),以实现大语言模型与外部数据源的集成。MCP由Anthropic推出,旨在建立安全双向…...
【教学类-102-08】剪纸图案全套代码08——Python点状虚线优化版本02(有空隙)+制作1图2图6图24图
背景需求 代码实现了点状虚线的全套流程,但是图片中主体图案和虚线与左右两边粘连。 【教学类-102-07】剪纸图案全套代码07——Python点状虚线优化版本01(无空隙)+制作1图2图6图24图-CSDN博客文章浏览阅读665次,点赞11次,收藏11次。【教学类-102-07】剪纸图案全套代码07…...
深入解析 Microcom:嵌入式串口调试利器
在嵌入式系统开发中,串口通信是调试和与外部设备交互的核心手段之一。Linux 系统中,Minicom 是一个广为人知的串口调试工具,但其依赖较多库(如 libncurses),在资源受限的嵌入式环境中可能显得臃肿。 而 Mi…...
算法驱动的场景识别:规则引擎与机器学习的强大结合
引言 在智能驾驶系统、交通分析和安全监控等领域,场景识别是一项核心技术。传统的场景识别方法主要依赖人工标注,不仅耗时耗力,还容易受主观因素影响。随着技术的发展,算法驱动的场景识别方法逐渐兴起,通过结合规则引…...
typescript开发心得
语法知识点 回调地狱问题 用await,或者有些库提供了sync方法 yield 用法跟python的一样。 yield只能用于生成器里,生成器是function*,例如: export function* filter(rootNode: ts.Node, acceptedKind: ts.SyntaxKind) {for…...
淘宝开放平台 API 调用全解析:商品详情数据采集接口接入教程
一、引言 在电商领域蓬勃发展的当下,淘宝作为行业领军者,其平台上琳琅满目的商品蕴含着海量有价值的信息。无论是电商从业者想要精准把握竞品动态、优化自身商品策略,还是数据分析师试图挖掘消费趋势、洞察市场需求,亦或是科研人…...
SQL注入(SQL Injection)深度解析
SQL注入是一种利用Web应用程序与数据库交互机制缺陷的网络攻击技术,其核心在于通过恶意构造的输入参数篡改原始SQL查询逻辑,进而实现对数据库的非授权操作。以下从定义、攻击原理、技术分类、危害及防御体系多维度展开分析: 一、定义与本质 技…...
MCP基础学习四:MCP在AI应用中的集成(MCP在AI应用中的完整架构图)
MCP在AI应用中的集成 文章目录 MCP在AI应用中的集成一,学习目标二,学习内容1. 在AI应用中配置和使用MCP服务1.1 不同AI工具连接方式与部署模式1.1.1 了解不同的MCP传输模式1.1.2 掌握如何在AI客户端中配置MCP服务Cursor 客户端中配置MCP服务Cherry Studio AI客户端中…...
K8S-证书过期更新
K8S证书过期问题 K8S证书过期处理方法 Unable to connect to the server: x509: certificate has expired or is not yet valid 1、查看证书有效期: # kubeadm certs check-expiration2、备份证书 # cp -rp /etc/kubernetes /etc/kubernetes.bak3、直接重建证书 …...
蓝桥杯考前复盘
明天就是考试了,适当的停下刷题的步伐。 静静回望、思考、总结一下,我走过的步伐。 考试不是结束,他只是检测这一段时间学习成果的工具。 该继续走的路,还是要继续走的。 只是最近,我偶尔会感到迷惘,看…...
BERT - MLM 和 NSP
本节代码将实现BERT模型的两个主要预训练任务:掩码语言模型(Masked Language Model, MLM) 和 下一句预测(Next Sentence Prediction, NSP)。 1. create_nsp_dataset 函数 这个函数用于生成NSP任务的数据集。 def cr…...
mysql 与 sqlite 数学运算 精度 问题
mysql 与 sqlite 数学运算 精度 问题 在 Excel 中,浮点运算得到的结果可能不准确 https://learn.microsoft.com/zh-cn/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result 本文讨论 Microsoft Excel 如何存储和计算浮点数。 由于存在舍入或…...
MySQL的数据库性能分析利器Percona toolkit
目录 简介使用场景 使用示例Mysql 慢查询分析诊断临时开启慢SQL持久化开启慢SQL日志 使用包管理器安装包管理器安装 percona-release使用相应的包管理器安装 Percona Toolkit pt-query-digest 安装安装 pt-query-digest案例实战之慢查询分析诊断查看慢SQL日志使用pt-query-dige…...
力扣HOT100之链表: 148. 排序链表
这道题直接用蠢办法来做的,直接先遍历一遍链表,用一个哈希表统计每个值出现的次数,由于std::map<int, int>会根据键进行升序排序,因此我们将节点的值作为键,其在整个链表中的出现次数作为值,当所有元…...
Azure AI Foundry 正在构建一个技术无障碍的未来世界
我们习以为常的街道和数字世界,往往隐藏着被忽视的障碍——凹凸不平的路面、不兼容的网站、延迟的字幕或无法识别多样化声音的AI模型。这些细节对某些群体而言,却是日常的挑战。正如盲道不仅帮助视障者,也优化了整体城市体验,信息…...
AlmaLinux9.5 修改为静态IP地址
查看当前需要修改的网卡名称 ip a进入网卡目录 cd /etc/NetworkManager/system-connections找到对应网卡配置文件进行修改 修改配置 主要修改ipv4部分,改成自己的IP配置 [ipv4] methodmanual address1192.168.252.129/24,192.168.252.254 dns8.8.8.8重启网卡 …...
P8754 [蓝桥杯 2021 省 AB2] 完全平方数
题目描述 思路 一看就知道考数学,直接看题解试图理解(bushi) 完全平方数的质因子的指数一定为偶数。 所以 对 n 进行质因数分解,若质因子指数为偶数,对结果无影响。若质因子指数为奇数,则在 x 中乘以这个质因子,保证指…...
QT Sqlite数据库-教程001 创建数据库和表-上
【1】创建数据库 #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QtSql/QSqlRecord> QString path QDir::currentPath(); QApplication::addLibraryPath(pathQString("/release/plugins")); QPluginLoader loader(pathQSt…...
安卓手机怎样开启双WiFi加速
1. 小米/Redmi手机 路径: 设置 → WLAN → 高级设置 → 双WLAN加速 操作: 开启功能后,可同时连接一个2.4GHz WiFi和一个5GHz WiFi(或两个不同路由器)。 可选择“智能选择”或手动指定辅助网络。 2. 华为/荣耀手机…...
基于角色个人的数据权限控制
一、适用场景 如何有效控制用户对特定数据的访问和操作权限,以确保系统的安全性和数据的隐私性。 二、市场现状 权限管理是现代系统中非常重要的功能,尤其是对于复杂的B端系统或需要灵活权限控制的场景,可以运用一些成熟的工具和框架&…...
JAVA虚拟机(JVM)学习
入门 什么是JVM JVM:Java Virtual Machine,Java虚拟机。 JVM是JRE(Java Runtime Environment)的一部分,安装了JRE就相当于安装了JVM,就可以运行Java程序了。JVM的作用:加载并执行Java字节码(.class&#…...
【VSCode配置】运行springboot项目和vue项目
目录 安装VSCode安装软件安装插件VSCode配置user的全局设置setting.jsonworkshop的项目自定义设置setting.jsonworkshop的项目启动配置launch.json 安装VSCode 官网下载 安装软件 git安装1.1.12版本,1.2.X高版本无法安装node14以下版本 nvm安装(github…...
UE5,LogPackageName黄字警报处理方法
比如这个场景,淘宝搜索,ue5 T台,转为ue5.2后,选择物体,使劲冒错。 LogPackageName: Warning: DoesPackageExist called on PackageName that will always return false. Reason: 输入“”为空。 2. 风险很大的删除法&…...
ONVIF/RTSP/RTMP协议EasyCVR视频汇聚平台RTMP协议配置全攻略 | 直播推流实战教程
在现代化的视频管理和应急指挥系统中,RTMP协议作为一种高效的视频流传输方式,正变得越来越重要。无论是安防监控、应急指挥,还是物联网视频融合,掌握RTMP协议的接入和配置方法,都是提升系统性能和效率的关键一步。 今天…...
AI 驱动的全链路监控,从资源管理到故障自愈的实战指南--云监控篇
一、3 步完成多云接入,告别繁琐配置 1. 账号绑定 AWS:输入访问密钥,自动拉取 EC2、RDS、S3 等资源清单。 Azure:通过服务主体认证,一键发现 VM、SQL 数据库、存储账户。 GCP:上传服务账号密钥࿰…...
大模型在初治CLL成人患者诊疗全流程风险预测与方案制定中的应用研究
目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与慢性淋巴细胞白血病相关知识 2.1 大模型技术原理与特点 2.2 慢性淋巴细胞白血病的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模…...
Express中间件(Middleware)详解:从零开始掌握(2)
1. 请求耗时中间件的增强版 问题:原版只能记录到控制台,如何记录到文件? 改进点: 使用process.hrtime()是什么?获取更高精度的时间支持将日志写入文件记录更多信息(IP地址、状态码)工厂函数模式使中间件可配置 con…...
Crossmint 与 Walrus 合作,将协议集成至其跨链铸造 API 中
Crossmint 是一个一站式平台,可为 app、AI Agent 或企业集成区块链。如今,Crossmint 已集成 Walrus 协议,以实现更具可扩展性的通证化场景,特别面向 AI Agent 和企业级用户。这项合作为开发者和企业提供了一种全新的方式ÿ…...
24.OpenCV中的霍夫直线检测
OpenCV中的霍夫直线检测 霍夫直线检测是一种基于参数变换的全局特征提取方法,它能在边缘图像中有效检测出直线,具有鲁棒性强和对噪声干扰容忍度高的特点。本文将从原理、算法实现和 OpenCV 应用三个角度对霍夫直线检测进行详细的阐述,并给出…...
springboot 处理编码的格式为opus的音频数据解决方案【java8】
opus编码的格式概念: Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用…...
【AI提示词】创业导师提供个性化创业指导
提示说明 以丰富的行业经验和专业的知识为学员提供创业指导,帮助其解决实际问题并实现商业成功 提示词 # Role: 创业导师## Profile - language: 中英文 - description: 以丰富的行业经验和专业的知识为学员提供创业指导,帮助其解决实际问题并实现商业…...