瑞芯微Rockchip开发者社区
直播中

王磊

7年用户 1540经验值
私信 关注
[问答]

怎样去解决RK3588 HDMIin输入显示帧率很低的问题呢

  今天在测试rk3588 HDMIin输入的过程中 发现显示帧率很低

  输入源是Windows电脑3840x2160 60p MAC输出1080p也试了一下 1080p下也没有好转

  我用了以下三种方法测试

  1. 用EDGE SDK for Python: HDMICAPTURE + DISPLAY模块 目测帧率15-20帧

  2. 用 toycam -d 0指令预览(应该内部用到了opencv感觉),目测帧率10帧以下

  3. 用gstreamer, v4l2src 到 autovideosink,目测帧率也是10帧以下

  感觉以rk3588的性能不该如此,目前是最新的固件。或许是我有些地方没有配置好吗,还是buffer或者gpu-memory需要配置?

  求助各位

  下面是用gstreamer测试时的warning提示,或许有一些帮助

  WARNING: from element
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXImageSink:autovideosink0-actual-sink-ximage:
A lot of buffers are being dropped.

  Additional debug info:

  。。/libs/gst/base/gstbasesink.c(3132): gst_base_sink_is_too_late ():
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXImageSink:autovideosink0-actual-sink-ximage:

  对了,还有一个小问题,就是颜色不对,感觉要转换一下才能正常显示

回帖(3)

贾桂林

2022-7-20 16:25:58
只有python sdk是完全0拷贝显示的,可以代表最高性能。其他都是第三方库的,第三方库没办法保证0拷贝。
至于多少fps这个要看你输入的的信号是多少的,很可能就是25fps。
举报

刘满贵

2022-7-20 16:26:11
颜色问题新版本已经解决了。新旧版本我都测试过,hdmiin是可以稳定30fps的,没有发现像你说的只有十几帧,4K In也是30fps,你可以自己改下试试。参考测试代码如下:
import toybrick as toy
import time


if __name__ == '__main__':
    count = 0
    begintime = time.time()

    hdmi = toy.HdmiCapture(1920, 1080)
    disp = toy.Display('', 1920, 1080, True)
    print("Connect display width = " + str(disp.width()) + " ; height = " + str(disp.height()))
    while True:
        ret, frame = hdmi.read(1920, 1080)
        if frame is not None:
            ret = disp.imshow(frame)
            if ret == toy.RET_TERMINATED:
                break
            count += 1
            if time.time() - begintime >= 10:
                fps = count / (time.time() - begintime)
                print('fps = ' + str(fps))
                count = 0
                begintime = time.time()
    # End of While
1 举报

曹经

2022-7-25 14:32:41
ubuntu 之前没更新SDK 也是和你一样的问题 更新后 分辨率固定为1080P 了 采集性能也好了很多 能固定25帧
但他这个没有把VI-VENC 做成流水线吗。。害
举报

更多回帖

发帖
×
20
完善资料,
赚取积分