Luckfox Pico Pi RV1106学习<4>:RV1106的帧率问题

Luckfox Pico Pi RV1106学习<4>:RV1106的帧率问题

0. 项目代码

可以从下面获取到项目中的代码。
https://github.com/cdsmakc/h264_codec_base_rpi4b_rpi5_rv1106_visual_studio.git

1. 背景

接上篇。我在应用中创建3个线程:

  1. CAM线程,使用V4L2驱动,从 /dev/video11 获取图像。
  2. ENC线程,使用硬件编码器(RK-MPI-VENC)对图像编码。
  3. DTR线程,发送编码后的数据。
    实际上,SDK中的 media 路径下有多个以 sample_ 开头的例程,比这个更简单更高效。一般是直接将VI绑定到VPSS或VENC,直接就可以获取264码流。

2. 问题

应用了 IMX415 摄像头之后,使用V4L2获取图像,只能获取到20FPS左右。而且V4L2驱动不支持 VIDIOC_S_PARM 命令设置帧率。修改了 驱动中 imx415.c 的寄存器列表,支持到90fps(720P情况下),输出帧率也没有变化。

这时候想到不用自己的程序,用 sample_venc_stresstest 这个例程来测试。先修改默认帧率:
在这里插入图片描述
图中修改VI的帧率。结果发现,如果该值设置为30,那么运行时不会报错。如果设置超过30,例如35,运行就会报错。

cmpi             16:47:45-763 {createRuntime     :711} [non-WRAP MODE]: buff size = 1382400
RTIsp3x          16:47:45-768 {ispInitDevice     :591} sensor name = m00_b_imx415 4-0037
RTDeviceV4L2     16:47:45-769 {open              :137} cameraIndex:0, entityName:rkisp_mainpath
RTDeviceV4L2     16:47:45-770 {open              :143} open video name(/dev/video11)
RKViChn          16:47:45-770 {setFrameRateRuntim:437} VVI_IOCTL_SET_FR ioctl fail # <----此处

个人估计是RV1106的VI就不支持超过30FPS。
最早看RV1106的介绍,是支持5M@30fps的编码。由于我只需要720p,因此评估性能,60fps的编码应该是可行的。现在看来,无法从摄像头获取超过30fps的原始图像。

本人不擅长搞软件,如果理解的不对,希望能指出。


使用Luckfox Pico Plus RV1103 Linux微型开发板进行超声波测距的步骤如下: 1. **硬件连接**: - 将超声波传感器(如HC-SR04)的VCC引脚连接到开发板的5V电源引脚。 - 将GND引脚连接到开发板的GND引脚。 - 将Trig引脚连接到开发板的GPIO引脚(例如GPIO17)。 - 将Echo引脚连接到开发板的另一个GPIO引脚(例如GPIO27),并通过一个电阻(如1kΩ)连接到GND。 2. **软件配置**: - 确保开发板已经安装了Linux操作系统,并且可以通过SSH或串口终端进行访问。 - 安装必要的软件包,例如`gcc`和`wiringPi`库(如果使用wiringPi库进行GPIO控制)。 3. **编写代码**: - 创建一个新的C文件,例如`ultrasonic.c`,并编写以下代码: ```c #include <wiringPi.h> #include <stdio.h> #include <sys/time.h> #define Trig 17 #define Echo 27 void setup() { pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); digitalWrite(Trig, LOW); delay(30); } float getDistance() { struct timeval start, end; float distance; digitalWrite(Trig, HIGH); delayMicroseconds(20); digitalWrite(Trig, LOW); while (digitalRead(Echo) == LOW); gettimeofday(&start, NULL); while (digitalRead(Echo) == HIGH); gettimeofday(&end, NULL); distance = (end.tv_usec - start.tv_usec) / 1000000.0 + (end.tv_sec - start.tv_sec); distance = distance * 34000 / 2; return distance; } int main(void) { float distance; if (wiringPiSetupGpio() == -1) { printf("wiringPi setup failed!\n"); return 1; } setup(); while (1) { distance = getDistance(); printf("Distance: %.2f cm\n", distance); delay(1000); } return 0; } ``` 4. **编译和运行**: - 在终端中编译代码: ``` gcc -o ultrasonic ultrasonic.c -lwiringPi ``` - 运行编译后的程序: ``` sudo ./ultrasonic ``` 5. **查看结果**: - 程序将每秒输出一次测距结果,单位为厘米。 通过以上步骤,您可以使用Luckfox Pico Plus RV1103 Linux微型开发板进行超声波测距。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值