【发布时间】:2021-06-08 13:33:03
【问题描述】:
我有一个大小为 73.7MB 的视频 xx.mp4。它有大量的帧,所以我想通过每 5 帧来减少它。这是我编写的代码(使用 Masoud Rahimi here 的答案)
cap = cv2.VideoCapture('xx.mp4')
length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print(length)
if (cap.isOpened) == False:
print('unable to read file')
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
i = 0
frame_skip = 5
out = cv2.VideoWriter('outskipframe.mp4', cv2.VideoWriter_fourcc('M','J','P','G'), 10, (frame_width, frame_height))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
if i > frame_skip -1:
out.write(frame)
i = 0
continue
i+=1
cap.release()
out.release()
cv2.destroyAllWindows()
视频outskipframe.mp4 以 911MB 的大小保存,但是当我尝试使用 cv2.VideoCapture 播放它时,出现条件(cap.isOpened()==False) 的错误。我检查了帧数,它显示为 0。
我尝试在不跳过任何帧的情况下编写相同的视频,它完美地工作,复制完全相同的文件(帧数更少但 5.5GB 的大小非常大)
谁能告诉我哪里出错了?
【问题讨论】: