Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV python编解码器以html格式显示视频mp4_Python_Opencv - Fatal编程技术网

OpenCV python编解码器以html格式显示视频mp4

OpenCV python编解码器以html格式显示视频mp4,python,opencv,Python,Opencv,因此,我目前正在Keras中编写一个yolo模型,它对视频执行对象检测,使用一个videowriter逐帧写入输出(带有边界框)。输入和输出都是.mp4格式,我使用的编解码器是(*mp4v)。但我需要在html文件(来自s3的帧源)中播放此视频,但html视频仅支持h264编码的视频。我使用的是MacBookPro,代码将部署在docker中,两者都没有此编解码器。然后,我使用moviepy.video_writer()将此视频转换为h264编解码器(指定为参数),但视频从我开始绘制绑定框的部分

因此,我目前正在Keras中编写一个yolo模型,它对视频执行对象检测,使用一个videowriter逐帧写入输出(带有边界框)。输入和输出都是.mp4格式,我使用的编解码器是(*mp4v)。但我需要在html文件(来自s3的帧源)中播放此视频,但html视频仅支持h264编码的视频。我使用的是MacBookPro,代码将部署在docker中,两者都没有此编解码器。然后,我使用moviepy.video_writer()将此视频转换为h264编解码器(指定为参数),但视频从我开始绘制绑定框的部分中断。在这种情况下我该怎么办。是否有其他方法可以使用此编解码器在html上播放视频


def detect_video(in_path, out_path, name, save_as):
    y = load_model()
    download_file(name)
    vid = cv2.VideoCapture(in_path)
    if not vid.isOpened():
        raise IOError("Couldn't open webcam or video")
    video_FourCC    = int(vid.get(cv2.CAP_PROP_FOURCC))
    video_fps       = vid.get(cv2.CAP_PROP_FPS)
    video_size      = (int(vid.get(cv2.CAP_PROP_FRAME_WIDTH)),
                     int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    print("!!! TYPE:", type(out_path), type(video_FourCC), type(video_fps), type(video_size))
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    fourcc = cv2.VideoWriter_fourcc(*'pim1')
    # fourcc = cv2.VideoWriter_fourcc(*'hvc1')
    # fourcc = cv2.VideoWriter_fourcc(*'H264')
    # fourcc = cv2.CV_FOURCC(*'H264')
    out = cv2.VideoWriter(out_path, -1, video_fps, video_size)
    isOutput = True if out_path != "" else False
    accum_time = 0
    curr_fps = 0
    fps = "FPS: ??"
    return_value, frame = vid.read()
    while True & (frame is not None):
        print(frame)
        image = Image.fromarray(frame)
 
        image,annotations = y.detect_image(image)
 
        result = np.asarray(image)
 
        cv2.putText(result, text=fps, org=(3, 15), fontFace=cv2.FONT_HERSHEY_SIMPLEX,
             fontScale=0.50, color=(255, 0, 0), thickness=2)
        # cv2.namedWindow("result", cv2.WINDOW_NORMAL)
  #       cv2.imshow("result", result)
        if isOutput:
            out.write(result)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        return_value, frame = vid.read()

    out.release()
    vid.release()
    acl = "public-read"
    
    s3_client.upload_file(out_path, bucket, "pre-conv"+save_as, ExtraArgs={
                "ACL": "public-read",
                "ContentType": "video/mp4"
            })

    import moviepy.editor as moviepy
    clip = moviepy.VideoFileClip(out_path)
    clip.write_videofile(out_path)

    
    s3_client.upload_file(out_path, bucket, save_as, ExtraArgs={
                "ACL": "public-read",
                "ContentType": "video/mp4"
            })


    os.remove(in_path)
    os.remove(out_path)
    os.remove("model_data/yolo.h5")
这可能有助于您安装
ffmpeg
。然后可以使用
h264
编码。