为什么moviepy的write_videofile函数在处理每一帧时变得越来越慢?以及如何改进/修复它?

时间:2017-09-18 15:09:55

标签: python moviepy

我的脚本将两个电影文件作为输入,并写入2x1阵列电影输出(立体并排半宽)。输入视频片段具有相同的分辨率(1280x720),帧率(60),帧数(23,899),格式(mp4)...... 当write_videofile函数开始处理时,它提供了一个非常合理的估计完成时间~20分钟。当它处理每一帧时,过程变得越来越慢,越来越慢(由进度条和估计的完成时间表示)。在我的例子中,输入影片剪辑大约6分钟。处理三分钟后,表示完成需要3个多小时。经过半小时的处理后,它表明将需要24小时才能完成。 我已经尝试了write_videofile函数的'threads'选项,但没有帮助。 任何的想法?谢谢你的帮助。

----脚本----

movie_L = 'movie_L.mp4'
movie_R = 'movie_R.mp4'
output_movie = 'new_movie.mp4')
clip_L = VideoFileClip(movie_L)
(width_L, height_L) = clip_L.size
clip_L = clip_L.resize((width_L/2, height_L))
clip_R = VideoFileClip(movie_R)
(width_R, height_R) = clip_R.size
clip_R = clip_R.resize((width_R/2, height_R))
print("*** Make an array of the two movies side by side")
arrayClip = clips_array([[clip_L, clip_R]])
print("*** Write the video file")
arrayClip.write_videofile(output_movie, threads=4, audio = False)  

1 个答案:

答案 0 :(得分:0)

我意识到这已经过时了,但对于仍有这个问题的人来说,一定要加上 progress_bar = False代码。 EG。

arrayClip.write_videofile(output_movie, threads=4, audio = False, progress_bar = False) 

每次更新到IDLE时打开进度条会占用大量内存,从而减慢程序直到完全停止。