使用MoviePy提取视频帧到Word文档时遇AttributeError报错求助
问题解决:AttributeError: 'numpy.ndarray' object has no attribute 'save_frame'
错误原因
video.get_frame()返回的是numpy数组(存储帧的像素数据),而save_frame是VideoFileClip类的方法,并非numpy数组的内置方法,因此直接调用frame.save_frame()会触发属性错误。
解决方法
方法1:直接使用VideoFileClip的save_frame方法(推荐)
无需先获取帧数组,直接调用video.save_frame()保存指定时间点的帧,代码更简洁高效:
from moviepy.editor import VideoFileClip from docx import Document from docx.shared import Inches import os def extract_frames_to_docx(mp4_file, output_docx, interval=1): # 打开视频文件 video = VideoFileClip(mp4_file) # 创建新Word文档 doc = Document() # 计算视频总帧数 total_frames = int(video.duration * video.fps) # 生成需要提取的帧索引列表 frame_indices = range(0, total_frames, interval) for idx in frame_indices: image_path = f"frame_{idx}.png" # 直接保存指定时间点的帧 video.save_frame(image_path, t=idx / video.fps) # 将图片插入Word文档 doc.add_picture(image_path, width=Inches(6)) # 可选:删除临时图片文件,避免磁盘残留 os.remove(image_path) # 保存文档并释放资源 doc.save(output_docx) video.close() # 调用示例:每10帧提取一次 extract_frames_to_docx("testvideo.mp4", "video_frames1.docx", interval=10)
方法2:将numpy数组转为PIL图像保存
如果需要对提取的帧做额外处理(比如裁剪、调色),可以先将numpy数组转为PIL图像再保存:
from moviepy.editor import VideoFileClip from docx import Document from docx.shared import Inches from PIL import Image import numpy as np import os def extract_frames_to_docx(mp4_file, output_docx, interval=1): video = VideoFileClip(mp4_file) doc = Document() total_frames = int(video.duration * video.fps) frame_indices = range(0, total_frames, interval) for idx in frame_indices: # 获取帧的numpy数组 frame = video.get_frame(idx / video.fps) # 将numpy数组转换为PIL图像(moviepy返回的帧为RGB格式,无需调整通道顺序) img = Image.fromarray(np.uint8(frame)) image_path = f"frame_{idx}.png" # 保存图像文件 img.save(image_path) # 插入到Word文档 doc.add_picture(image_path, width=Inches(6)) # 删除临时文件 os.remove(image_path) doc.save(output_docx) video.close() extract_frames_to_docx("testvideo.mp4", "video_frames1.docx", interval=10)
补充说明
- 两种方法均可实现需求,方法1无需额外处理帧数据,更适合基础场景;
- 若需要保留提取的帧文件,可删除代码中的
os.remove(image_path)行。
内容的提问来源于stack exchange,提问作者Arpita Satpathy
相关产品推荐
相关产品推荐

