旅行归来,明天就要去"小学生青椒志愿者课堂",我有两个课时,分别是手工类"扇子"和"绣球花"。
第一课:扇子
考虑到扇子比较容易,凑不满1小时,就要用视频来凑时间。
IDM下载的视频
第二课,绣球花
这些视频的速度都比较快(加速了)
我想让视频慢一点,折叠动作看的清楚一点。如0.5倍速。用deepseek写代码
第一种:慢0.5倍,没有声音
python
复制代码
'''
青椒课堂,绣球花,视频慢0,5倍。没有声音
deepseek,阿夏
20250710
'''
import cv2
import os
# 设置视频路径
path = r"C:\Users\jg2yXRZ\Downloads\Video"
folder_path=path+r"\绣球"
output_folder = path+r"\绣球2"
os.makedirs(output_folder, exist_ok=True)
# 遍历文件夹中的 MP4 文件
for filename in os.listdir(folder_path):
if filename.endswith(".mp4"):
video_path = os.path.join(folder_path, filename)
cap = cv2.VideoCapture(video_path)
# 获取原视频的帧率和尺寸
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 设置输出视频(0.5倍速,FPS减半)
output_path = os.path.join(output_folder, f"slow_{filename}")
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_path, fourcc, fps * 0.5, (width, height))
# 逐帧读取并写入(实现0.5倍速)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
out.write(frame) # 写入两次,降低播放速度
out.write(frame) # 相当于每帧重复一次
cap.release()
out.release()
print("视频处理完成!输出文件夹:", output_folder)
与原视频比,时间边长了,但是没有声音
第二种:慢0.5倍,有声音(声音延时,沉重)
python
复制代码
'''
青椒课堂,绣球花,视频慢0,5倍。有声音(慢速,不好听)
deepseek,阿夏
20250710
'''
from moviepy.editor import VideoFileClip
from moviepy.video.fx import all as vfx
import os
# 设置视频路径
path = r"C:\Users\jg2yXRZ\Downloads\Video"
folder_path = path + r"\绣球"
output_folder = path + r"\绣球3"
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(folder_path):
if filename.endswith(".mp4"):
video_path = os.path.join(folder_path, filename)
# 加载视频并确保音频存在
clip = VideoFileClip(video_path)
# 0.5倍速处理(同时放慢视频和音频)
slow_clip = clip.fx(vfx.speedx, 0.5)
# 输出文件路径
output_path = os.path.join(output_folder, f"slow_{filename}")
# 写入文件,设置音频质量参数
slow_clip.write_videofile(
output_path,
codec="libx264",
audio_codec="aac",
audio_bitrate="192k", # 提高音频比特率
fps=clip.fps, # 保持原始帧率
threads=4 # 使用多线程加速处理
)
# 关闭剪辑以释放资源
clip.close()
slow_clip.close()
print(f"处理完成!所有视频已保存到: {output_folder}")
视频减速了,但是我还需要一个折纸步骤截图,选了这个视频做截图
第三步:视频截图
普通质量
python
复制代码
'''
青椒课堂,绣球花视频1秒截图1张 普通质量格式
deepseek,阿夏
20250710
'''
import cv2
import os
# 视频文件夹路径
path = r'C:\Users\jg2yXRZ\Downloads\Video\绣球3'
output_folder = os.path.join(path, "绣球截图")
os.makedirs(output_folder, exist_ok=True)
# 视频文件路径
video_path = os.path.join(path, "00slow_樱花绣球花折纸教程,轻松做出春日浪漫花朵,手作,剪纸折纸,好看视频.mp4")
# 尝试打开视频
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print("错误:无法打开视频文件!请检查路径或格式。")
exit()
# 获取帧率
fps = cap.get(cv2.CAP_PROP_FPS)
if fps == 0:
print("警告:未能读取帧率,尝试默认 30 FPS。")
fps = 30 # 默认值
frames_per_second = int(round(fps))
print(f"视频帧率: {fps} FPS")
# 截图
frame_count = 0
saved_count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
if frame_count % frames_per_second == 0:
output_path = os.path.join(output_folder, f"frame_{saved_count:04d}.jpg")
cv2.imwrite(output_path, frame)
saved_count += 1
print(f"已保存: {output_path}")
frame_count += 1
cap.release()
print(f"完成!共保存 {saved_count} 张图片。")

1图大约23K,感觉不清晰
改用高清质量
python
复制代码
'''
青椒课堂,绣球花视频1秒截图1张 超清格式
deepseek,阿夏
20250710
'''
from moviepy.editor import VideoFileClip
import os
from PIL import Image
# 设置路径
path = r'C:\Users\jg2yXRZ\Downloads\Video\绣球3'
output_folder = os.path.join(path, "绣球截图超清")
os.makedirs(output_folder, exist_ok=True)
# 加载视频
video = VideoFileClip(os.path.join(path, "00slow_樱花绣球花折纸教程,轻松做出春日浪漫花朵,手作,剪纸折纸,好看视频.mp4"))
print(f"视频分辨率: {video.size}")
for t in range(0, int(video.duration)):
frame = video.get_frame(t) # 获取 NumPy 数组格式的帧
output_path = os.path.join(output_folder, f"frame_{t:04d}.jpg")
# 转换为 Pillow 图像并保存为高质量 JPEG
img = Image.fromarray(frame)
img.save(output_path, quality=95, subsampling=0) # subsampling=0 禁用色度抽样
print(f"已保存超清帧: {output_path}")
print(f"完成!共保存 {int(video.duration)} 张超清图片。")
1秒1图,超清是60K
我感觉不够,还是做了0,5秒一张的
python
复制代码
'''
青椒课堂,绣球花视频0.5秒截图1张 超清格式
deepseek,阿夏
20250710
'''
from moviepy.editor import VideoFileClip
import os
from PIL import Image
# 设置截图间隔(秒)
interval = 0.5 # 0.5秒1张
# 设置路径
path = r'C:\Users\jg2yXRZ\Downloads\Video\绣球3'
output_folder = os.path.join(path, f"绣球截图超清_{interval}秒")
os.makedirs(output_folder, exist_ok=True)
# 加载视频
video = VideoFileClip(os.path.join(path, "00slow_樱花绣球花折纸教程,轻松做出春日浪漫花朵,手作,剪纸折纸,好看视频.mp4"))
print(f"视频分辨率: {video.size}")
# 计算总截图数量
total_frames = int(video.duration / interval)
print(f"预计截图数量: {total_frames} 张")
# 截图
for i in range(total_frames):
t = i * interval # 当前时间点(秒)
frame = video.get_frame(t) # 获取当前帧
output_path = os.path.join(output_folder, f"frame_{i:04d}.jpg")
# 保存为超清 JPEG
Image.fromarray(frame).save(output_path, quality=95, subsampling=0)
print(f"已保存: {output_path} (时间: {t:.1f}秒)")
print(f"完成!共保存 {total_frames} 张超清图片。")

手动删除重复样式的,保留1张。
最后稍微用到一些截图
希望明天的活动顺利