当前位置: 首页 > 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      : uvcvideo
        Card type        : YJX-YL7: YJX-YL7
        Bus info         : usb-xhci-hcd.9.auto-1
        Driver version   : 5.10.160
        Capabilities     : 0x84a00001
                Video Capture
                Metadata Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : uvcvideo
        Model            : YJX-YL7: YJX-YL7
        Serial           : 20240514001
        Bus info         : usb-xhci-hcd.9.auto-1
        Media version    : 5.10.160
        Hardware revision: 0x00000001 (1)
        Driver version   : 5.10.160
Interface Info:
        ID               : 0x03000002
        Type             : V4L Video
Entity Info:
        ID               : 0x00000001 (1)
        Name             : YJX-YL7: YJX-YL7
        Function         : V4L2 I/O
        Flags         : default
        Pad 0x01000007   : 0: Sink
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height      : 1280/720
        Pixel Format      : 'YUYV' (YUYV 4:2:2)
        Field             : None
        Bytes per Line    : 2560
        Size Image        : 1843200
        Colorspace        : sRGB
        Transfer Function : Rec. 709
        YCbCr/HSV Encoding: ITU-R 601
        Quantization      : Default (maps to Limited Range)
        Flags             : 
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 1280, Height 720
        Default     : Left 0, Top 0, Width 1280, Height 720
        Pixel 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     : timeperframe
        Frames per second: 10.000 (10/1)
        Read buffers     : 0
                     brightness 0x00980900 (int)    : min=0 max=255 step=1 default=128 value=128
                       contrast 0x00980901 (int)    : min=0 max=255 step=1 default=45 value=45
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=70 value=70
                            hue 0x00980903 (int)    : min=-180 max=180 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=90 max=150 step=1 default=120 value=120
                           gain 0x00980913 (int)    : min=0 max=128 step=1 default=75 value=75
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
                                0: Disabled
                                1: 50 Hz
                                2: 60 Hz
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=10 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=7 step=1 default=6 value=6
         backlight_compensation 0x0098091c (int)    : min=0 max=2 step=1 default=0 value=0
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
                                1: Manual Mode
                                3: Aperture Priority Mode
              exposure_absolute 0x009a0902 (int)    : min=2 max=1250 step=1 default=156 value=156 flags=inactive
         exposure_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

相关文章:

  • 建筑兔零基础自学记录41|cityengine2019生成场地周围建筑模型
  • 粒子群优化算法初探(PSO)
  • VUE的第二天
  • 511机器翻译
  • 简记_ MCU管脚的防静电处理
  • 驱动开发系列45 - Linux 显卡KMD驱动代码分析(六)- 显卡驱动与OS接口
  • LeetCode 2597.美丽子集的数目:二进制枚举-一个实现起来容易但非最优的方法
  • Python怎样安装,Windows/Mac/Linux系统安装教程
  • Android原生gif动图加载AnimatedImageDrawable
  • C 语言异常处理:从传统到进阶的探索
  • PostgreSQL、SQL Server和MySQL数据库性能调优与故障排除技术
  • 力扣刷题134. 加油站
  • 将长上下文大语言模型研究从输入转向输出
  • Python爬虫入门实战:爬取博客文章数据并保存
  • #UVM# 关于 config_db 机制中的直线非直线设置和获取讲解
  • 《UE5_C++多人TPS完整教程》学习笔记35 ——《P36 武器类(Weapon Class)》
  • 软考 中级软件设计师 考点笔记总结 day01
  • 编程考古-Borland历史:《.EXE Interview》对Anders Hejlsberg关于Delphi的采访内容(中)
  • qt 操作多个sqlite文件
  • RuoYi框架添加自己的模块(学生管理系统CRUD)
  • 龙岗招聘网/关键词优化排名用哪个软件比较好
  • 动态网站的功能与特点/关键词优化公司前十排名
  • jsp网站建设/网店代运营需要多少钱
  • 找哪个网站做摩配/百度权重怎么看
  • h5case什么网站/怎么让百度搜索靠前
  • 网站建设优化兼职在家/关键词推广效果分析