ValueError:MoviePy找不到与文件名关联的编解码器。在write_videofile

时间:2018-04-13 09:01:53

标签: python codec moviepy

为什么它会在某些文件上抛出此错误,而对于其他文件则不会?

这些文件都是.mp4视频。

  

'ValueError:MoviePy找不到与文件名关联的编解码器。在write_videofile中提供'codec'参数。'

代码,注释:

    # The videos on which we will work on (intro & a video)
    intro = VideoFileClip('./videos/intro.mp4')
    original = VideoFileClip('./videos/original_video.mp4')


    # We cut 2s and crop the original video
    original.cutout(0, 2)
    original = vfx.crop(original, x1=10)


    # Adding a watermark on top of the original video
    watermark = (ImageClip("./images/watermark.png")
                    .set_duration(original.duration)
                    .set_position(("center","bottom"))
                    .resize(width=intro.w))
    watermaked = CompositeVideoClip([original, watermark], size=original.size)


    # Our final video: Intro + Waterkarmed, and output it.
    final_render = concatenate_videoclips([intro, watermaked], method='compose')
    final_render.write_videofile('./videos/output_video.mp4', fps=30, threads=1)

错误堆栈:

  final_render.write_videofile('./videos/output_video.mp4', fps=30, threads=1)

  File "<decorator-gen-51>", line 2, in write_videofile
  File "/usr/lib/python2.7/site-packages/moviepy/decorators.py", line 54, in requires_duration
    return f(clip, *a, **k)
  File "<decorator-gen-50>", line 2, in write_videofile
  File "/usr/lib/python2.7/site-packages/moviepy/decorators.py", line 137, in use_clip_fps_by_default
    return f(clip, *new_a, **new_kw)
  File "<decorator-gen-49>", line 2, in write_videofile
  File "/usr/lib/python2.7/site-packages/moviepy/decorators.py", line 22, in convert_masks_to_RGB
    return f(clip, *a, **k)
  File "/usr/lib/python2.7/site-packages/moviepy/video/VideoClip.py", line 288, in write_videofile
    raise ValueError("MoviePy couldn't find the codec associated "
ValueError: MoviePy couldn't find the codec associated with the filename. Provide the 'codec' parameter in write_videofile.

1 个答案:

答案 0 :(得分:1)

您需要使用 codec 参数手动放入编解码器。

代码应如下所示:

final_render.write_videofile('./videos/output_video.mp4', fps=30, threads=1, codec="libx264")

编解码器根据视频文件扩展名而变化:

<头>
扩展 编解码器
mp4 libx264
ogv libtheora
webm libvpx
奥格 libvorbis
mp3 pcm_s16le
wav libvorbis
m4a libfdk_aac