相信大家最近在B站看到了不少用1080p60帧看和用30帧看会看到不同画面的视频,其原理主要是因为B站视频的规则是遇到120帧的视频时,在生成60帧视频时,会将该视频每两帧为一组,取每组第二针作为60帧视频的其中一帧,而生成30帧视频则会将视频每四帧为一组,取每组第一帧作为30帧视频的其中一帧
知道原理了,代码自然就好实现了
import os, glob
import shutil
import cv2
from matplotlib import pyplot as plt
frame_rate2 = 0
frame_rate1 = 0
def extract_frames(video_path, fold_name):
# 使用OpenCV打开视频
the_video_fold = get_video_fold(video_path)
if not os.path.exists(the_video_fold + fold_name):
os.makedirs(the_video_fold + fold_name)
output_folder = the_video_fold + fold_name
video = cv2.VideoCapture(video_path)
# 初始化帧计数器
count = 0
# 遍历视频中的每一帧
while True:
# 读取下一帧
success, frame = video.read()
# 如果读取失败,说明已到视频末尾
if not success: