gpt4 book ai didi

python - 如何使用 OpenCV 将 mp4 文件 FPS 值 30 更改为 5

转载 作者:行者123 更新时间:2023-12-04 23:34:34 25 4
gpt4 key购买 nike

我想将 mp4 文件的帧率从 30 更改为 5。我试过 set(cv2.CAP_PROP_FPS, 10) .但它没有用。我找不到使用 ffmpeg 的方法.请帮我这样做。谢谢。

import cv2

cap = cv2.VideoCapture('./data/video/7e2.mp4')
fps = int(cap.get(cv2.CAP_PROP_FPS))
print('fps :'+str(fps))

if (cap.isOpened()== False):
print("Error opening video stream or file")

while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
cv2.imshow('Frame',frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()

最佳答案

如果您正在读取文件,则文件不会被修改,原始文件的 FPS 将不会改变。 cv2.VideoCapture( ) 以读取模式打开文件。要保存视频文件,您需要使用 VideoWriter,然后使用打开输出文件

video.open(out_filename,VideoWriter::fourcc('M','P','4','V'),FPS, Size(FRAME_WIDTH,FRAME_HEIGHT),true) 
然后最后使用 write 函数进入每一帧。
因此,您的代码将如下所示:
cv::VideoWriter video;
video.open(out_filename,VideoWriter::fourcc('M','P','4','V'),FPS, Size(FRAME_WIDTH,FRAME_HEIGHT),true)
In loop {
... Read Each Frame
video.write(frame);
(我已经给出了C++代码,Python代码会类似)
我正在为您提供完整的代码。它应该工作。
import cv2

cap = cv2.VideoCapture('./data/video/7e2.mp4')
fps = int(cap.get(cv2.CAP_PROP_FPS))
print('fps :'+str(fps))
# Change the FPS whatever you want
FPS=5;
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
writer = cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc('M','J','P','G'), FPS, (frame_width,frame_height) )

if (cap.isOpened()== False):
print("Error opening video stream or file")

while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
cv2.imshow('Frame',frame)
writer.write( frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
writer.release()
cap.release()
cv2.destroyAllWindows()

关于python - 如何使用 OpenCV 将 mp4 文件 FPS 值 30 更改为 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69978767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com