当前位置: 首页 > 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.dtcms.com/a/272102.html

相关文章:

  • 用 ngrok + SSH 实现公网远程控制电脑
  • Linux Vim 编辑器详解:从入门到进阶(含图示+插件推荐)
  • FPGA设计思想与验证方法系列学习笔记001
  • XCZU47DR-2FFVG1517I Xilinx FPGA AMD ZynqUltraScale+ RFSoC
  • 原生微信小程序研发,如何对图片进行统一管理?
  • 从代码生成到智能运维的革命性变革
  • 基于elementUI的el-autocomplete组件的自动补全下拉框实践
  • LFU 缓存
  • Vue2_element 表头查询功能
  • Vue+Element Plus 中按回车刷新页面问题排查与解决
  • pytorch 神经网络
  • 深入理解机器学习
  • 【深度学习新浪潮】什么是持续预训练?
  • 深度学习中的常见损失函数详解及PyTorch实现
  • B2、进度汇报(— 25/06/16)
  • Sigma-Aldrich细胞培养基础知识:细胞培养的安全注意事项
  • Vue 中监测路由变化时,通常不需要开启深度监听(deep: true)
  • 基于Python的旅游推荐协同过滤算法系统(去哪儿网数据分析及可视化(Django+echarts))
  • 《Stata面板数据分析:数据检验、回归模型与诊断技术 - 以NLSW工资研究(公开数据)为例》
  • android studio 运行,偶然会导致死机,设置Memory Settings尝试解决
  • 不止于快:金士顿XS2000移动固态硬盘如何重塑你的数字生活
  • 机器学习1
  • ssh: connect to host github.com port 22: connection refused
  • Web学习笔记2
  • 使用球体模型模拟相机成像:地面与天空的可见性判断与纹理映射
  • 「py数据分析」04如何将 Python 爬取的数据保存为 CSV 文件
  • 基于Python的程序员数据分析与可视化系统的设计与实现
  • 三、神经网络——网络优化方法
  • 线上事故处理记录
  • XMAPP MySQL 启动后自动停止