Moviepy:在 tkinter 窗口错误中显示剪辑的最终文件

问题描述

我正在尝试使用 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 文件错误仍然存​​在。我认为这与文件损坏无关,因为我可以在媒体播放器中打开文件并将它们导入 Adob​​e 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...