基于C#+winform开发,使用opencvsharp调用3840*2160分辨率,设置了视频格式MJPG,使用多线程读取一帧videoCapture.Read(frameMat),读取的速度达不到1秒30帧,录视频也达不到
使用队列 + 多线程,一个读放队列里,另一个从队列里取,然后绘制,记得队列保留几个做缓存,不然不流畅,会卡顿。
我们当时开发也试了,不知道为啥就是一秒不够30帧
videoCapture.Read(frameMat)这个读的代码就要花费80多毫秒,这样就达不到1秒30帧了,放队列也没用,还有就是录视频功能写入视频文件的时候也慢
@yuxianan:
videoCapture.Read(frameMat)这个读的代码就要花费80多毫秒 估计是带宽不够。
@yuxianan: 你们干啥使啊,4k@60Hz这么高的帧率,一般线缆带宽可不够啊。试试H.264或者265编码的吧。摄像头可以试试yuv格式的
@echo_lovely: 用的USB3.0,像OBS或者AMCAP的软件就非常流畅,是opencvsharp本身的局限性吗
@echo_lovely: 只能设置成MJPG,设置成其他的格式,要么不显示图像,要么就卡的很严重
@yuxianan: 我感觉OBS拉流估计没有4k,你可以试试ffmpeg命令行,看看ffmpeg效果怎么样。opencv底层也是ffmpeg
@yuxianan: 我感觉OBS拉流估计没有4k或者没有60Hz