本帖最后由 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]
|