问题描述
我正在尝试使用 Tkinter GUI 和 Moviepy 构建一个小型视频编辑器。
所需子剪辑的开始/结束时间由用户输入。用户未指定结束时间(程序使用源视频的时长作为子剪辑的结束时间)时会出现错误。
source_video = VideoFileClip("sample_video_clip.mp4")
start_time = float(start_time_entry.get())
例如:6 秒
用户没有指定结束时间,所以程序使用moviepy持续时间函数使用源剪辑的持续时间
end_time = source_video.duration
例如。 56.11 秒
然后我尝试显示与这些时间位置相关的帧
end_frame_image_array = source_video.get_frame(end_time)
end_frame_image_location = Image.fromarray(end_frame_image_array)
end_frame_image_resized = end_frame_image_location.resize((150,100))
end_frame_image = ImageTk.PhotoImage(end_frame_image_resized)
end_frame_label.config(image=end_frame_image)
出现以下错误。
OSError:MoviePy 错误:无法读取视频文件的第一帧 C:/Users/.../sample_video_clip.mp4。 这可能意味着文件已损坏。这也可能意味着 您正在使用弃用的 FFMPEG 版本。在 Ubuntu/Debian 上 例如,不推荐使用回购中的版本。请更新为 来自网站的最新版本。
如果用户输入有效的结束时间,不包括手动输入 56.11 秒(剪辑的持续时间),则显示帧。
Edit 1.0:尝试使用其他 .mp4 文件但错误仍然存在。我认为这与文件损坏无关,因为我可以在媒体播放器中打开文件并将它们导入 Adobe Premier pro 2015
Edit 2.0:从结束时间开始查看 frame.1 秒并显示图像(请参阅下面的代码更改)。如果不包含 -.1
,错误会继续
end_frame_image_array = source_video.get_frame((end_time-.1))
编辑 3.0:手动输入时间片段,直到出现此错误 源剪辑持续时间(长度)= 56.11 秒 输入 56.038 秒作为结束时间根据需要生成剪辑 输入 56.04 及以上会出现上述错误
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)