如何修复“ moviepy vfx上需要some_number个字节,0个字节读取错误”

时间:2019-08-08 21:22:24

标签: python moviepy

我正在使用moviepy编写代码,使我可以对上载的视频文件进行各种vfx编辑(裁剪为特定的宽高比,覆盖静态图像,以及使视频变亮或变暗)。该代码完成了我想要的操作,但是在开始的几秒钟后,返回的视频冻结了(尽管音频继续播放)。

我在互联网上四处寻找类似的问题,但是发现的却不多。 https://groups.google.com/forum/#!topic/imageio/kx0R0JQ6RVA建议imageio有时必须估计帧数,而https://github.com/Zulko/moviepy/issues/86建议ffmpeg无法读取某些帧(而且基于网络摄像头的视频更容易读取-我的文件就是这样)。

我当前的错误:(我多次收到它,所以我使用xxx,yyy和zzz来指定各种数字) WARNING:py.warnings: .../moviepy-1.0.0-py3.7.egg/moviepy/video/io/ffmpeg_reader.py:130: UserWarning: Warning: in file /codebase/my_video_file.mp4, xxx bytes wanted but 0 bytes read, at frame yyy/total, at time zzz/total sec. Using the last valid frame instead.

我成功裁剪/变亮/变暗/覆盖了我的视频,但是几秒钟后,视频停止了(大概前几秒钟的每一帧只是前一帧的副本),而音频继续播放,所以我知道视频文件正在继续播放。

编辑(8/14):我处理的视频没有任何变化(因此没有gamma_corr,也没有CompositeVideoClip),并且结果仍然相同-因此这不是帧大小错误。

1 个答案:

答案 0 :(得分:0)

(注意),我不知道此错误总是由我所到达的解决方案解决。

结果是,我将编辑后的视频保存到与输入视频相同的路径,覆盖了原始视频(我可以使用)。通过添加一个临时位置,然后重命名,我可以使用相同的路径,同时避免了该问题。现在,我收到了完整的视频,并带有视频效果。

vl_sans_mp4 = video_location[0:-4] temp_location = vl_sans_mp4 + "temp" + ".mp4" original_video.write_videofile(temp_location, fps=30, bitrate="90k", audio_bitrate="128k") os.rename(video_location, vl_sans_mp4 + "input" + '.mp4') os.rename(temp_location, video_location)