本帖最后由 18829597798 于 2025-4-30 18:47 编辑

ELF2板卡/OV13855摄像头+Elf2-Ubuntu-Desktop系统+问题:rkmpp进行视频编码时只能输出15 FPS

1. 背景
1.1 预期实现效果
利用搭载RK3588处理器的ELF2板卡采集1920x1080@30fps的视频图像,并通过rkmpp提供的h264/avc视频编码器完成视频编码最后输出并写入.h264码流文件
1.2 产品配置
产品:ELF2/RK3588处理器
硬件配置:4GB LPDDR4x、32GB eMMC、ov13855
软件配置:Ubuntu 22.04.5 LTS (GNU/Linux 5.10.209 aarch64)、rkmpp为2025/04/29从瑞芯微官方仓库下载并编译
2. 详情描述
2.1 具体现象
实际效果:使用命令mpi_enc_test -i /dev/video11 -o output.h264 -t avc-w 1920 -h 1080 -fps 30 -bps 2000000:1000000:3000000 -rc 0 -g 0:5:1 -f nv12进行视频编码测试,同时在新建终端使用命令sudo tail -f /var/log/syslog监控内核日志。测试发现,视频编码能够持续进行,但从内核日志的打印信息可见,编码输出帧率仅15fps,不能达到预期效果。内核打印信息见附件1。[url=]附件1:ov13855摄像头编码内核日 ...[/url]
2.2复现步骤
复现步骤:安装rkmpp多媒体处理库,使用命令mpi_enc_test -i /dev/video11 -o output.h264 -t avc-w 1920 -h 1080 -fps 30 -bps 2000000:1000000:3000000 -rc 0 -g 0:5:1 -f nv12进行测试
尝试步骤:1.尝试降低或增加分辨率配置参数,未能解决,编码仍然输出15fps
2.尝试降低或增加帧率配置参数,未能解决,编码仍然输出15fps(即使设置-fps 10编码时依然输出15fps)
3.尝试切换其他编码器类型(如hevc/h265),未能解决,编码仍然输出15fps
4.尝试检查摄像头格式,输出如下:
root@elf2-desktop:/VideoSender# v4l2-ctl -d /dev/video11 --get-fmt-video
Format Video Capture Multiplanar:
        Width/Height      : 1920/1080
        Pixel Format      : 'NV12' (Y/CbCr 4:2:0)
        Field             : None
        Number of planes  : 1
        Flags             :
        Colorspace        : Default
        Transfer Function : Default
        YCbCr/HSV Encoding: Default
        Quantization      : Full Range
        Plane 0           :
           Bytes per Line : 1920
           Size Image     : 3110400
5.尝试检查摄像头实际帧率支持,输出如下:
root@elf2-desktop:/VideoSender# v4l2-ctl -d /dev/video11 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Type: Video CaptureMultiplanar

        [0]: 'UYVY' (UYVY 4:2:2)
                Size: Stepwise 32x32- 4224x3136 with step 8/8
        [1]: 'NV16' (Y/CbCr 4:2:2)
                Size: Stepwise 32x32- 4224x3136 with step 8/8
        [2]: 'NV61' (Y/CrCb 4:2:2)
                Size: Stepwise 32x32- 4224x3136 with step 8/8
        [3]: 'NV21' (Y/CrCb 4:2:0)
                Size: Stepwise 32x32- 4224x3136 with step 8/8
        [4]: 'NV12' (Y/CbCr 4:2:0)
                Size: Stepwise 32x32- 4224x3136 with step 8/8
        [5]: 'NM21' (Y/CrCb 4:2:0(N-C))
                Size: Stepwise 32x32- 4224x3136 with step 8/8
        [6]: 'NM12' (Y/CbCr 4:2:0(N-C))
                Size: Stepwise 32x32- 4224x3136 with step 8/8
6.尝试检查输出流output.h264帧率信息,显示为30fps正常,但编码速度为15fps,输出信息如下:
root@elf2-desktop:/VideoSender# ffmpeg -i output.h264
Input #0, h264, from 'output.h264':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (High),yuv420p(progressive), 1920x1080, 30 fps, 30 tbr, 1200k tbn
7.尝试解码并播放output.h264码流,画面显示一切正常
8.按教程尝试预览摄像头,使用命令gst-launch-1.0v4l2src device=/dev/video11 ! video/x-raw,format=NV12, width=640, height=480,framerate=30/1 ! autovideosink
测试结果如图所示:[url=]测试结果1.png[/url]
此时画面显示异常,如图所示,但此问题疑似与gst-launch-1.0有关,不应影响mpp编码任务,且播放测试该output.h264码流显示一切正常。
测试结果如图所示:[url=]测试结果2.png[/url]
9. 尝试使用UVC免驱摄像头进行编码测试,测试指令:mpi_enc_test-i /dev/video21 -o output.h264 -t avc -w 640 -h 480 -fps 30 -bps200000:100000:300000 -rc 0 -g 0:5:1 -f YUYV,测试结果一切正常,mpp编码速度可以达到30fps,内核打印信息见附件2.[url=]附件2:UVC摄像头编码内核日志.r ...[/url]



测试结果1.png
测试结果2.png

附件1:ov13855摄像头编码内核日志.rar

3.8 KB, 下载次数: 70

内核日志

附件2:UVC摄像头编码内核日志.rar

5.09 KB, 下载次数: 65

内核日志

1

主题

1

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 昨天 15:39 | 显示全部楼层
沙发
此问题已解决,感谢ELF 水精灵大佬的技术支持,水精灵给出的解决方案如下:

将 /etc/iqfiles/ov13855_CMK-OT2016-FV1_default.json 文件中:
CISMinFps 字段修改为 30
FpsValue 字段修改为 30
保存,重启开发板
验证帧率

v4l2-ctl -d /dev/video11 --set-fmtvideo=width=4224,height=3136,pixelformat='NV12' --stream-mmap=4 --streamto=data.yuv

测试通过。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.