ffmedia如何设置帧等待时间
我的需求是每秒钟采集一张图像识别目前是Cv2Display里面做一个判断
def run(self):
while not self.is_stop:
with self.lock:
while not self.frame_complete:
self.condition.wait()
try:
if self.last < (time.time() * 1000) - 1000:
self.last = time.time() * 1000
input_para = self.module.getOutputImagePara()
data = self.frame.getActiveData()
# 帧数据转换为数组形式
img = data.reshape((input_para.vstride, input_para.hstride, 3))
print('--------------------------')
except ValueError as e:
print("Invalid image resolution!")
resolution = find_two_numbers(data.size // 3, input_para.hstride, input_para.vstride)
print("Try the recommended resolution: -o {}x{}".format(resolution, resolution))
break
self.frame_complete = False
self.condition.notify()采集一个rtsp的留CPU使用了百分之8
有什么好的解决办法
回调不出去,那模块就无法处理下一帧,所以你可以在回调等待1秒,或者你用个定时器一秒再去拿帧 dengkx 发表于 2023-9-20 09:56
回调不出去,那模块就无法处理下一帧,所以你可以在回调等待1秒,或者你用个定时器一秒再去拿帧
def cv2_call_back(obj, VideoBuffer):
time.sleep(1)
with obj.lock:
while obj.frame_complete:
if not obj.condition.wait(timeout=1):
return
vb = obj.module.exportUseMediaBuffer(VideoBuffer, obj.frame, 0)
if vb is not None:
obj.frame = vb
obj.frame_complete = True
obj.condition.notify()
我在回调函数中做了等待,但是有时候会出现报错,请问这个是什么原因 chenll 发表于 2023-9-20 12:47
我在回调函数中做了等待,但是有时候会出现报错,请问这个是什么原因
你的是rtsp实时流,如果你阻塞了链路,那么rtsp会因为缓冲区满而丢帧,导致解码器就无法解出p帧,p帧需要参考前一帧才能解出来。如果是实时流,就不能阻塞,可以使用过滤或者隔帧推理 dengkx 发表于 2023-9-20 16:10
你的是rtsp实时流,如果你阻塞了链路,那么rtsp会因为缓冲区满而丢帧,导致解码器就无法解出p帧,p帧需要 ...
请问 过滤或者隔帧推理这个有demo吗,ffmedia_release 如何隔帧推理 chenll 发表于 2023-9-20 16:53
请问 过滤或者隔帧推理这个有demo吗,ffmedia_release 如何隔帧推理
隔帧推理,每过几帧推理一帧. 最新的ffmedia初步支持了rknn,可以看下 dengkx 发表于 2023-9-20 17:24
隔帧推理,每过几帧推理一帧. 最新的ffmedia初步支持了rknn,可以看下
https://gitlab.com/firefly-linux/ffmedia_release
我在这里的主分支的demo.py文件中没有看到隔振推理的参数
不是在参数里面吗
parser.add_argument("-i", "--input_source", dest='input_source', type=str, help="input source")
parser.add_argument("-f", "--save_file", dest='save_file', type=str, help="Enable save dec output data to file, set filename, default disabled")
parser.add_argument("-o", "--output", dest='output', type=str, help="Output image size, default same as input")
parser.add_argument("-b", "--outputfmt", dest='outputfmt', type=str, default="NV12", help="Output image format, default NV12")
parser.add_argument("-e", "--encodetype", dest='encodetype', type=int, default=-1, help="Encode encode, set encode type, default disabled")
parser.add_argument("-m", "--enmux", dest='enmux', type=str, help="Enable save encode data to file, Enable package as mp4, mkv, or raw stream files depending on the file name suffix. default disabled")
parser.add_argument("-M", "--filemaxframe", dest='filemaxframe', type=int, default= 0, help="Set the maximum number of frames that can be saved. The default number is unlimited")
parser.add_argument("-p", "--port", dest='port', type=int, default=0, help="Enable push stream, default rtsp stream, set push port, depend on encode enabled, default disabled\n")
parser.add_argument("--push_type", dest='push_type', type=int, default=0, help="Set push stream type, default rtsp. e.g. --push_type 1\n")
parser.add_argument("--rtsp_transport", dest='rtsp_transport', type=int, default=0, help="Set the rtsp transport type, default 0(udp)")
parser.add_argument("-s", "--sync", dest="sync", type=int, default=-1, help="Enable synchronization module, default disabled. e.g. -s 1")
parser.add_argument("-a", "--aplay", dest='aplay', type=str, help="Enable play audio, default disabled. e.g. -a plughw:3,0")
parser.add_argument("-r", "--rotate", dest='rotate',type=int, default=0, help="Image rotation degree, default 0" )
parser.add_argument("-d", "--drmdisplay", dest='drmdisplay', type=int, default=-1, help="Drm display, set display plane, set 0 to auto find plane")
parser.add_argument("-c", "--cvdisplay", dest='cvdisplay', type=int, default=0, help="OpenCv display, set window number, default 0")
parser.add_argument("-x", "--x11display", dest='x11display', type=int, default=0, help="X11 window displays, render the video using gles. default disabled") chenll 发表于 2023-9-20 19:15
https://gitlab.com/firefly-linux/ffmedia_release
我在这里的主分支的demo.py文件中没有看到隔振推 ...
demo在rknn/src下,py的只添加了接口,还没写出demo。你可以认为推理时间大于视频帧间隔,可以跳过一帧或多帧再推理一帧,后面跳过的帧继续使用这帧的推理结果直到再次推理 dengkx 发表于 2023-9-21 10:01
demo在rknn/src下,py的只添加了接口,还没写出demo。你可以认为推理时间大于视频帧间隔,可以跳过一帧或 ...
等不能说一下py的接口是哪个,我看了demo.cpp 但是没有找到是哪里使用的,因看不懂C