PythonOpencv在内存bu上写入x264视频

2024-04-28 19:37:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在内存缓冲区中写入x264视频(或单帧)时遇到问题。在opencvforimages中,imencode和imdecode执行此任务。但我想保存x264视频帧以降低内存使用率并在互联网上发送。我可以用jpeg,但jpeg的大小比x264视频帧大,质量更差。我搜索了一下,但找不到如何在缓冲区中写入视频帧。在

下面是在网络摄像头上拍摄帧的示例代码

        import numpy as np
        import cv2


        cap = cv2.VideoCapture(0)
        cap.set(3,320)
        cap.set(4,240)
        cap.set(5,30)
        # Define the codec and create VideoWriter object
        fourcc = cv2.VideoWriter_fourcc(*'x264')
        out = cv2.VideoWriter('.....sample.avi',fourcc, 30.0, (320,240))

        while(cap.isOpened()):
            ret, frame = cap.read()
            if ret==True:
                cv2.imshow('frame',frame)
                out.write(frame) #I want to write memory not disk
                if cv2.waitKey(1) & 0xFF == ord('q'):
                    break
            else:
                break

        # Release everything if job is finished
        cap.release()
        out.release()
        cv2.destroyAllWindows()

Tags: 内存import视频ifoutcv2framejpeg
1条回答
网友
1楼 · 发布于 2024-04-28 19:37:54

不幸的是,无法使用cv2.VideoWriter,因为在释放()。在

我在我的项目中发现的方法是从D:\your\directory\opencv\sources\modules\highgui\src实现cap_ffmpeg_impl.hpp,并将捕获的帧发送到该库中。您将通过UDP或TCP/IP发送编码帧,并在它们到达同一库的地方进行解码。还要记住,您需要编译正确的ffmpeg版本才能使用它。在

相关问题 更多 >