繁体   English   中英

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

[英]ValueError: MoviePy couldn't find the codec associated with the filename. Provide the 'codec' parameter in write_videofile

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

这些文件都是 .mp4 视频。

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

代码,带注释:

    # 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.

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

代码应如下所示:

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

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

扩展 编解码器
mp4 libx264
OGV 自由女神
网络管理器 libvpx
奥格 库沃尔比斯
mp3 pcm_s16le
声波 库沃尔比斯
m4a libfdk_aac

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM