import ctypesimport timeclass RTSP_YOLOV5_CONFIG(ctypes.Structure): _fields_ = [ ("rtsp_url", ctypes.c_char_p), ("model_path", ctypes.c_char_p), ("label_path", ctypes.c_char_p), ("remote_rtsp_url", ctypes.c_char_p), ("channel_id", ctypes.c_char_p), ("output_stream_name", ctypes.c_char_p), ("video_type", ctypes.c_int), ("fps", ctypes.c_int), ("skip_frames", ctypes.c_int), ("queue_size", ctypes.c_int), ("enable_local_rtsp", ctypes.c_int), ("enable_local_rtmp", ctypes.c_int), ("output_width", ctypes.c_int), ("output_height", ctypes.c_int), ("output_fps", ctypes.c_int), ("output_bitrate", ctypes.c_int), ("conf_threshold", ctypes.c_float), ("nms_threshold", ctypes.c_float), ("max_processing_fps", ctypes.c_int), ("anchors", ctypes.c_int * 6 * 3) ]def main(): lib = ctypes.CDLL("/home/zk/rknntest/rknn_deip/install/rknn_deip_Linux/lib/librknn_deip.so") lib.rtsp_yolov5_init.argtypes = [ctypes.POINTER(RTSP_YOLOV5_CONFIG)] lib.rtsp_yolov5_init.restype = ctypes.c_void_p lib.rtsp_yolov5_start.argtypes = [ctypes.c_void_p] lib.rtsp_yolov5_start.restype = ctypes.c_int lib.rtsp_yolov5_keepalive.argtypes = [ctypes.c_void_p] lib.rtsp_yolov5_keepalive.restype = ctypes.c_int lib.rtsp_yolov5_get_status.argtypes = [ ctypes.c_void_p, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int) ] lib.rtsp_yolov5_get_status.restype = ctypes.c_int lib.rtsp_yolov5_release.argtypes = [ctypes.c_void_p] lib.rtsp_yolov5_release.restype = None config = RTSP_YOLOV5_CONFIG() config.rtsp_url = b"rtsp://172.16.0.182:554/rtp/34020000001320000001_34020000001310000001" config.model_path = b"/home/zk/rknntest/rknn_deip/yolov5/model/yolov5s-80.rknn,/home/zk/rknntest/rknn_deip/yolov5/model/my.rknn" config.label_path = b"/home/zk/rknntest/rknn_deip/yolov5/model/coco_80_labels_list.txt,/home/zk/rknntest/rknn_deip/yolov5/model/my_labels_list.txt" config.remote_rtsp_url = b"rtsp://172.16.0.227:18554/live/test" config.channel_id = b"channel_1" config.output_stream_name = b"test_stream" config.video_type = 264 config.fps = 30 config.skip_frames = 4 config.queue_size = 2 config.enable_local_rtsp = 1 config.enable_local_rtmp = 0 config.output_width = 1280 config.output_height = 720 config.output_fps = 15 config.output_bitrate = 2000000 config.conf_threshold = 0.25 config.nms_threshold = 0.45 config.max_processing_fps = 30 default_anchors = [ [10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326] ] for i in range(3): for j in range(6): config.anchors[i][j] = default_anchors[i][j] handle = lib.rtsp_yolov5_init(ctypes.byref(config)) if not handle: return result = lib.rtsp_yolov5_start(handle) if result != 0: lib.rtsp_yolov5_release(handle) return try: while True: time.sleep(5) if lib.rtsp_yolov5_keepalive(handle) != 0: break except KeyboardInterrupt: pass except Exception: pass lib.rtsp_yolov5_release(handle)if __name__ == "__main__": main()