当前位置: 首页 > news >正文

【办公类-107-01】20250710视频慢速与视频截图

旅行归来,明天就要去“小学生青椒志愿者课堂”,我有两个课时,分别是手工类“扇子”和“绣球花”。

第一课:扇子

考虑到扇子比较容易,凑不满1小时,就要用视频来凑时间。

IDM下载的视频

第二课,绣球花

这些视频的速度都比较快(加速了)

我想让视频慢一点,折叠动作看的清楚一点。如0.5倍速。用deepseek写代码

第一种:慢0.5倍,没有声音

'''
青椒课堂,绣球花,视频慢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:breakout.write(frame)  # 写入两次,降低播放速度out.write(frame)  # 相当于每帧重复一次cap.release()out.release()print("视频处理完成!输出文件夹:", output_folder)

与原视频比,时间边长了,但是没有声音

第二种:慢0.5倍,有声音(声音延时,沉重)

'''
青椒课堂,绣球花,视频慢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}")

视频减速了,但是我还需要一个折纸步骤截图,选了这个视频做截图

第三步:视频截图

普通质量


'''
青椒课堂,绣球花视频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 = 0while cap.isOpened():ret, frame = cap.read()if not ret:breakif 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 += 1print(f"已保存: {output_path}")frame_count += 1cap.release()
print(f"完成!共保存 {saved_count} 张图片。")

1图大约23K,感觉不清晰

改用高清质量


'''
青椒课堂,绣球花视频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 图像并保存为高质量 JPEGimg = 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秒一张的


'''
青椒课堂,绣球花视频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")# 保存为超清 JPEGImage.fromarray(frame).save(output_path, quality=95, subsampling=0)print(f"已保存: {output_path} (时间: {t:.1f}秒)")print(f"完成!共保存 {total_frames} 张超清图片。")

手动删除重复样式的,保留1张。

最后稍微用到一些截图

希望明天的活动顺利

http://www.lryc.cn/news/583877.html

相关文章:

  • 用OpenCV标定相机内参应用示例(C++和Python)
  • window显示驱动开发—XR_BIAS 和 PresentDXGI
  • 图像亮度调整的简单实现
  • 0基础学Python系列【31】 详细讲解Python中SQLAlchemy包的用法:从入门到精通
  • k8s:安装 Helm 私有仓库ChartMuseum、helm-push插件并上传、安装Zookeeper
  • zookeeper etcd区别
  • 在 Mac 上安装 Java 和 IntelliJ IDEA(完整笔记)
  • macOS 上安装 Miniconda + Conda-Forge
  • 算法练习5-原地移除数组中所有的元素
  • 龙迅#LT8619B适用于HDMI转LVDS/RGB,芯片支持视频图像处理,OSD功能.
  • MacOS 终端(Terminal)配置显示日期时间
  • 在Docker中运行macOS的超方便体验!
  • 基于深度学习的自动调制识别网络(持续更新)
  • 【PTA数据结构 | C语言版】顺序队列的3个操作
  • 在 Mac 上使用 Git 拉取项目:完整指南
  • 【macos用镜像站体验】Claude Code入门使用教程和常用命令
  • 029_构造器重载与默认构造器
  • 基于多模态感知的裂缝2D及3D检测方案
  • 【leetcode】2236. 判断根节点是否等于子节点之和
  • git fetch的使用
  • vue3 uniapp 使用ref更新值后子组件没有更新 ref reactive的区别?使用from from -item执行表单验证一直提示没有值
  • TCP 保活(KeepAlive)机制详解
  • STM32F103之ModBus\RS232\RS422\RS485
  • OpenCV 图像进阶处理:特征提取与车牌识别深度解析
  • 人工智能-基础篇-28-模型上下文协议--MCP请求示例(JSON格式,客户端代码,服务端代码等示例)
  • LabVIEW 波形图表横坐标显示当前日期
  • Eigen 几何模块深拆:Isometry3d vs Affine3d + 变换矩阵本质详解
  • GitHub信息收集
  • STM32单片机_3
  • GitHub敏感信息收集与防御指南