我有一个mp4/avi视频,持续时间为10分钟,FPS为30。我想将持续时间减少到5分钟,但FPS仍为30。这意味着新视频将减少一半的帧(例如,f0 f2 f4
与原始视频f0 f1 f2 f3 f4
相比)。我如何在opencv上做到这一点?这是当前代码,以获得视频的持续时间和FPS。
# import module
import cv2
import datetime
# create video capture object
data = cv2.VideoCapture('C:/Users/Asus/Documents/videoDuration.mp4')
# count the number of frames
frames = data.get(cv2.CAP_PROP_FRAME_COUNT)
fps = data.get(cv2.CAP_PROP_FPS)
# calculate duration of the video
seconds = round(frames / fps)
video_time = datetime.timedelta(seconds=seconds)
print(f"duration in seconds: {seconds}")
print(f"video time: {video_time}")
2条答案
按热度按时间ar7v8xwq1#
从捕获中读取帧,记录已读取的帧数,并每隔N帧写入一次,如下所示:
hiz5n14c2#
此代码将逐帧读取输入视频文件,并每隔一帧将其写入输出视频文件。因此,输出视频的帧数将是输入视频的一半,持续时间也将是输入视频的一半。