当前位置: 首页 > news >正文

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明

命令参数的描述说明如下:

命令参数

描述说明

-i

输入的图像文件。

-o

输出的码流文件。

-w

图像宽度,单位为像素。

-h

图像高度,单位为像素。

-hstride

垂直方向相邻两行之间的距离,单位为byte。

-vstride

图像分量之间的以行数间隔数,单位为1。

-f

图像色彩空间格式以及内存排布方式,默认为NV12。

-t

码流文件的协议类型。

-tsrc

源码流格式,仅在测试整体编解码性能时使用。

-n

最大解码帧数。测试时若码流较长,可仅输出前n帧。

-g

gop参考模式,对应不同的TSVC码流。

-rc

码率控制模式。0:VBR; 1:CBR; 2:FIXQP; 3:AVBR。

-bps

码率约束参数。命令格式:bps_target:bps_min:bps_max。

-fps

输入/输出帧率控制,默认为30。该命令参数仅说明输入帧率和输出帧率之间的比例关系,与实际帧率无关。

-qc

质量控制。

-s

MPP实例数,默认为1。

-v

日志选项:q为静默标志;f为fps显示标志。

-ini

额外的编码配置文件ini(暂未生效)。

-slt

输出码流对应的校验文件。

查看摄像头的图片格式


cat@lubancat:~/test/mpp/build/linux/aarch64/test$ v4l2-ctl -d /dev/video1 --all
Driver Info:Driver name      : uvcvideoCard type        : YJX-YL7: YJX-YL7Bus info         : usb-xhci-hcd.9.auto-1Driver version   : 5.10.160Capabilities     : 0x84a00001Video CaptureMetadata CaptureStreamingExtended Pix FormatDevice CapabilitiesDevice Caps      : 0x04200001Video CaptureStreamingExtended Pix Format
Media Driver Info:Driver name      : uvcvideoModel            : YJX-YL7: YJX-YL7Serial           : 20240514001Bus info         : usb-xhci-hcd.9.auto-1Media version    : 5.10.160Hardware revision: 0x00000001 (1)Driver version   : 5.10.160
Interface Info:ID               : 0x03000002Type             : V4L Video
Entity Info:ID               : 0x00000001 (1)Name             : YJX-YL7: YJX-YL7Function         : V4L2 I/OFlags         : defaultPad 0x01000007   : 0: Sink
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:Width/Height      : 1280/720Pixel Format      : 'YUYV' (YUYV 4:2:2)Field             : NoneBytes per Line    : 2560Size Image        : 1843200Colorspace        : sRGBTransfer Function : Rec. 709YCbCr/HSV Encoding: ITU-R 601Quantization      : Default (maps to Limited Range)Flags             : 
Crop Capability Video Capture:Bounds      : Left 0, Top 0, Width 1280, Height 720Default     : Left 0, Top 0, Width 1280, Height 720Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 1280, Height 720, Flags: 
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1280, Height 720, Flags: 
Streaming Parameters Video Capture:Capabilities     : timeperframeFrames per second: 10.000 (10/1)Read buffers     : 0brightness 0x00980900 (int)    : min=0 max=255 step=1 default=128 value=128contrast 0x00980901 (int)    : min=0 max=255 step=1 default=45 value=45saturation 0x00980902 (int)    : min=0 max=100 step=1 default=70 value=70hue 0x00980903 (int)    : min=-180 max=180 step=1 default=0 value=0white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1gamma 0x00980910 (int)    : min=90 max=150 step=1 default=120 value=120gain 0x00980913 (int)    : min=0 max=128 step=1 default=75 value=75power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=10: Disabled1: 50 Hz2: 60 Hzwhite_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=10 default=4600 value=4600 flags=inactivesharpness 0x0098091b (int)    : min=0 max=7 step=1 default=6 value=6backlight_compensation 0x0098091c (int)    : min=0 max=2 step=1 default=0 value=0exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=31: Manual Mode3: Aperture Priority Modeexposure_absolute 0x009a0902 (int)    : min=2 max=1250 step=1 default=156 value=156 flags=inactiveexposure_auto_priority 0x009a0903 (bool)   : default=0 value=1

捕获为h264

cat@lubancat:~/test/mpp/build/linux/aarch64/test$ mpi_enc_test -w 1280 -h 720 -t 7 -f 8  -fps 15 -i /dev/video1 -o ./out.h624
注意这里命令-i是可以输入文件,或者是摄像头结点的。很多文章没有说明

    if (cmd->file_input) {if (!strncmp(cmd->file_input, "/dev/video", 10)) {mpp_log("open camera device");p->cam_ctx = camera_source_init(cmd->file_input, 4, p->width, p->height, p->fmt);mpp_log("new framecap ok");if (p->cam_ctx == NULL)mpp_err("open %s fail", cmd->file_input);} else {p->fp_input = fopen(cmd->file_input, "rb");if (NULL == p->fp_input) {mpp_err("failed to open input file %s\n", cmd->file_input);mpp_err("create default yuv image for test\n");}}}

查看rkmpp日志

cat@lubancat:~$ sudo tail -f /var/log/syslog

Mar  8 23:37:58 lubancat mpp[136462]: mpp_opt: setup:real node 67:71 info 22:22
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: cmd parse result:
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: input  file name: /dev/video1
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: output file name: ./out.h624
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: width      : 1280
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: height     : 720
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: format     : 8
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_utils: type       : 7
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_test: mpi_enc_test start
Mar  8 23:37:58 lubancat mpp[136462]: mpi_enc_test: open camera device
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: input devices:Camera 1
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: fmt name: [Motion-JPEG]
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: fmt pixelformat: 'MJPG', description = 'Motion-JPEG'
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: fmt name: [YUYV 4:2:2]
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: fmt pixelformat: 'YUYV', description = 'YUYV 4:2:2'
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: get width 1280 height 720
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: get dma buf(0)-fd: 13
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: get dma buf(1)-fd: 14
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: get dma buf(2)-fd: 15
Mar  8 23:37:59 lubancat mpp[136462]: camera_source: get dma buf(3)-fd: 16
Mar  8 23:37:59 lubancat mpp[136462]: mpi_enc_test: new framecap ok
Mar  8 23:37:59 lubancat mpp[136462]: mpp_info: mpp version: ed377c99 author: Herman Chen   2023-12-14 fix[hal_enc]: Add encoder internal buffer sync
Mar  8 23:37:59 lubancat mpp[136462]: mpi_enc_test: 0x7f84002580 encoder test start w 1280 h 720 type 7
Mar  8 23:37:59 lubancat mpp[136462]: mpp_enc: MPP_ENC_SET_RC_CFG bps 1728000 [108000 : 1836000] fps [15:15] gop 30
Mar  8 23:37:59 lubancat mpp[136462]: h264e_api_v2: MPP_ENC_SET_PREP_CFG w:h [1280:720] stride [2560:720]
Mar  8 23:37:59 lubancat mpp[136462]: mpp_enc: mode vbr bps [108000:1728000:1836000] fps fix [15/1] -> fix [15/1] gop i [30] v [0]
Mar  8 23:38:04 lubancat kernel: [ 2463.954669] mpp_rkvenc2 fdbd0000.rkvenc-core: can not activate fdbd0000.rkvenc-core -> fdbd0000.rkvenc-core
Mar  8 23:38:04 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 0    size 54707   qp 23
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 1    size 12631   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 2    size 13025   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 3    size 12888   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 4    size 11955   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 5    size 11493   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 6    size 11581   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 7    size 11782   qp 26
Mar  8 23:38:05 lubancat mpp[136462]: mpi_enc_test: chn 0 encoded frame 8    size 12097   qp 26

相关文章:

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明 命令参数的描述说明如下: 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度,单位为像素。 -h 图像高度,单位为像素。 -hstride 垂直方向相邻两行之间的距离,单…...

3D数字化:家居行业转型升级的关键驱动力

在科技日新月异的今天,家居行业正经历着一场前所未有的变革。从传统的线下实体店铺到线上电商平台的兴起,再到如今3D数字化营销的广泛应用,消费者的购物体验正在发生翻天覆地的变化。3D数字化营销不仅让购物变得更加智能和便捷,还…...

网安知识点

1.SQL注入漏洞产生的原因是? 前端传到后端的数据,没有经过任何处理,直接当作sql语句的一部分来执行 2.讲一下sql注入,写入webshell需要哪些前提条件 开启导入导出权限secure-file-priv 站点根目录位置/路径 mysql用户对站点根目…...

天津大学02-深度解读DeepSeek:部署、使用、安全【文末附下载链接】

大模型风险与不当用例——价值观错位 大模型与人类价值观、期望之间的不一致而导致的安全问题,包含:• 社会偏见(Social Bias)LLM在生成文本时强化对特定社会群体的刻板印象,例如将穆斯林与恐怖主义关联,或…...

【kubernetes】service

目录 1. 说明2. 原理2.1 服务注册2.2 服务发现2.3 负载均衡 3. Service的类型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用场景 1. 说明 1.kubernetes中的service主要用于提供网络服务,并实现微服务架构中的几个核心功能:全自动…...

Python卷积神经网络(CNN)来识别和计数不同类型的工业零件

以下三种类型工业零件为例,使用卷积神经网络(CNN)来识别和计数不同类型的工业零件。以下是Python实现步骤: 数据准备:收集并标注包含不同形状(如方形、圆形、扇形)的工业零件图像数据集。 模型…...

MoonSharp 文档二

目录 6.Sharing objects 我们先来简单谈谈类型描述符 先说类型描述 稍微复杂一点 调用静态成员 应该使用 “:” 还是 “.” 重载 ByRef 参数(C# 中的 ref/out) 索引器 userdata 上的运算符和元方法 扩展方法 事件 关于 InteropAccessMode 的…...

android 支持自定义布局、线程安全、避免内存泄漏的 Toast 工具类

支持自定义布局:可以灵活地显示自定义样式的 Toast。 线程安全:确保在主线程中显示 Toast,避免崩溃。 避免内存泄漏:使用 ApplicationContext 和取消机制,防止内存泄漏问题。 工具类:作为一个通用的工具…...

景联文科技:以精准数据标注赋能AI进化,构筑智能时代数据基石

在人工智能技术席卷全球的浪潮中,高质量数据已成为驱动AI模型进化的核心燃料。作为全球领先的AI数据服务解决方案提供商,景联文科技深耕数据标注领域多年,以技术为基、以专业为本,致力于为全球客户提供全场景、高精度、多模态的数…...

Mysql的卸载安装配置以及简单使用

MySQL其它问题已经更新在:MySQL完善配置---可视化-CSDN博客 一、卸载 ①控制面板卸载 ②C盘隐藏项目>ProgramData>mysql相关文件夹,还有Program file下的MySQL文件夹 ③开始菜单栏搜索>服务,找到MySQL相关服务删除,如果再…...

使用 ResponseBodyEmitter 实现异步响应式数据流处理

1. 概述 1.1 什么是 ResponseBodyEmitter ResponseBodyEmitter 是 Spring MVC 提供的一个接口,用于支持异步返回响应数据流。它允许在控制器方法中逐步发送数据给客户端,而无需一次性生成完整的响应。 1.2 使用场景 实时数据推送(如股票行情、聊天消息等)。大量数据分批…...

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要:Uniapp作为一款基于Vue.js的跨平台开发框架,支持“一次开发,多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台,并解析常见问题。 一、环境准备 在开始前,请确保已安装以下工具…...

Ubuntu 下 nginx-1.24.0 源码分析 - cycle->modules[i]->type

Nginx 中主要有以下几种模块类型 类型 含义 NGX_CORE_MODULE 核心模块(如进程管理、错误日志、配置解析)。 NGX_EVENT_MODULE 事件模块(如 epoll、kqueue 等 IO 多路复用机制的实现)。 NGX_HTTP_MODULE HTTP 模块&#xf…...

基于SpringBoot的“文物管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“文物管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体功能模块图 E-R实体图 系统首页界面 系统…...

dify + ollama + deepseek-r1+ stable-diffusion 构建绘画智能体

故事背景 stable-diffusion 集成进 dify 后,我们搭建一个小智能体,验证下文生图功能 业务流程 #mermaid-svg-6nSwwp69eMizP6bt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6nSwwp69eMiz…...

Android原生gif动图加载AnimatedImageDrawable

Android原生gif动图加载AnimatedImageDrawable 从Android P(9.0)开始,Android系统支持gif动图的原生控件AnimatedImageDrawable,可以播放加载gif动图。 AnimatedImageDrawable官方文档链接: https://developer.andro…...

Windows 系统 Docker Desktop 入门教程:从零开始掌握容器化技术

文章目录 前言一、Docker 简介二、Docker Desktop 安装2.1 系统要求2.2 安装步骤 三、Docker 基本概念四、Docker 常用命令五、实战:运行你的第一个容器5.1 拉取并运行 Nginx 容器5.2 查看容器日志5.3 停止并删除容器 六、总结 前言 随着云计算和微服务架构的普及&…...

记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)一、创建项目1.1 生成提示词1.2 生成代码 二、编译预览2.1 导入项目2.2 编译预览 三、发布3.1 在微信开发者工具进行上传3…...

实战 - 使用 AutoAWQ 进行量化

文章目录 一、准备1、安装 autoawq2、模型准备 二、量化config.json 文件变化 三、加载量化后模型量化后的输出原始输出对比 四、查看模型的精度1、查看模型卡2、查看 config.json 中的 torch_dtype3、打印模型信息4、model.dtype 未必是模型精度 一、准备 1、安装 autoawq p…...

C++20 格式化库:强大的字符串格式化工具

文章目录 格式化语法常见用法1. 填充和对齐2. 数值格式化3. 进制格式化4. 自定义类型 示例代码注意事项 C20 的格式化库是一个强大的工具,用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能,但语法和用法更符合 C 的风格。以下…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...