Python 使用fourcc编解码器h264和opencv中的h265从帧中保存视频
我正在使用h264编解码器将实时流中的帧保存到视频中。我用python中的openCV(版本3.4和4.4)尝试了这一点,但我无法保存它。我可以在XVID和许多其他编解码器中保存视频,但在h264和h265中我没有成功 我正在Python中使用windows opencv 4.4 我的示例代码如下Python 使用fourcc编解码器h264和opencv中的h265从帧中保存视频,python,opencv,video,h.264,openh264,Python,Opencv,Video,H.264,Openh264,我正在使用h264编解码器将实时流中的帧保存到视频中。我用python中的openCV(版本3.4和4.4)尝试了这一点,但我无法保存它。我可以在XVID和许多其他编解码器中保存视频,但在h264和h265中我没有成功 我正在Python中使用windows opencv 4.4 我的示例代码如下 cap = cv2.VideoCapture(0) while(cap.isOpened()): ret,frame = cap.read() if ret
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret,frame = cap.read()
if ret == True:
width = int(cap.get(3)) # float
height = int(cap.get(4)) # float
# fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
fourcc = cv2.VideoWriter_fourcc(*'H264')
out = cv2.VideoWriter(filename, fourcc, 30, (width,height))
out.write(frame)
out.release()
谁能帮助我如何在h264和h265中保存视频。您正在每个帧上重新创建
VideoWriter
,最后只存储一个帧。您需要先创建编写器,在循环中向其写入帧,然后在完成视频后终止它。作为预防措施,如果我们在读取帧时检测到视频中存在任何问题,您还需要打破循环。为确保正确操作,让我们在第一帧中阅读,设置VideoWriter
,然后在建立其创建后才对其进行写入:
cap=cv2.VideoCapture(0)
out=无
而cap.isOpened():
ret,frame=cap.read()
如果ret==True:
如果out为无:
宽度=int(cap.get(3))#浮点
高度=int(cap.get(4))#浮动
fourcc=cv2.VideoWriter_fourcc(*“H264”)
out=cv2.VideoWriter(文件名,fourcc,30,(宽度,高度))
其他:
输出。写入(帧)
其他:
打破
如果out不是None:
out.release()
好的,这是一个bug。但主要的问题是使用h264编写。即使只在循环外创建一次,它也无法使用编解码器h264和H265写入您使用的是哪种操作系统?我使用的是带有opencv 4.4的windows 10。您需要确保您使用的是OpenH264,这是唯一与opencv兼容的框架,并且在windows中写入h264文件:亲爱的,我使用了您告诉的过程。我下载了openh264.dll文件,并将其放在脚本所在的同一目录中,以及更改目录时保存文件的目录中。但它仍然没有保存视频。它以0字节保存。还有别的事要做吗?我错过什么了吗?