我一直在使用Moviepy将几个较短的视频文件合并为一小时的文件。一些小文件被“破坏”,它们包含视频但未正确完成(即它们与VLC一起播放,但没有持续时间,您无法在视频中跳过)。
当我尝试使用VideoFileClip(file)函数创建剪辑时,我注意到了这个问题。出现的错误是:
MoviePy错误:无法读取文件的持续时间
有没有办法继续从这个视频文件中读取“好”的帧,然后将它们添加到更长的视频中?
更新
为了澄清,我的问题特别是以下函数调用:
clip = mp.VideoFileClip("/home/test/"+file)
在 ffmpeg_reader.py 中检查文件的持续时间时,单步执行代码似乎是一个问题,它会在视频文件中查找duration参数。但是,由于文件从未正确完成录制,因此缺少此信息。我对视频文件的结构方式不太熟悉,所以我不确定如何从这里开始。
答案 0 :(得分:-1)
CLIP1 = VideoFileClip( '路径')
C = clip1.duration
print(c)
答案 1 :(得分:-1)
你是对的。当文件中缺少视频持续时间信息时,通常会出现此问题。 以下是该问题的主题:GitHub moviepy issue 116
一位用户提出了使用MP4Box转换视频的解决方案:RASPIVID tutorial
对我有用的最终解决方案涉及指定ImageMagick的二进制文件的路径,如本文中提到的WDBell。
答案 2 :(得分:-1)
我以一种更简单的方式解决了该问题,借助VLC,我将该文件转换为格式MPEG4 xxx电视/设备, 现在您可以将新文件与python一起使用了
xxx = 720p或 xxx = 1080p
一切取决于您对输出格式的选择
我已经在博客上回答了这个问题:https://github.com/Zulko/moviepy/issues/116