You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用MoviePy处理浏览器录制WebM视频时遇读取时长错误

问题:MoviePy无法处理浏览器录制的WebM视频,FFmpeg转换后音视频不同步

我需要用MoviePy给视频添加文字水印,视频来源分两种:用户上传的视频,以及通过浏览器Javascript MediaStream API录制的WebM视频。因为要保留音频,所以没选用只能处理视频的OpenCV。

目前处理用户上传的视频一切正常,但处理浏览器录制的WebM视频时,MoviePy抛出以下错误:

Traceback (most recent call last):
  File "/home/bengab/.local/lib/python3.10/site-packages/moviepy/video/io/ffmpeg_reader.py", line 286, in ffmpeg_parse_infos
    match = re.findall("([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9])", line)[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bengab/Remote Jobs Files/Weperch/moviepy_test/main.py", line 16, in <module>
    g = generate_watermark_video("house","$500","/home/bengab/Remote Jobs Files/Weperch/Watermark Video/upload_videos_dir/aea7d48358ed4ef99ceea98a46b1f1a7.webm","pvid.mp4")
  File "/home/bengab/Remote Jobs Files/Weperch/moviepy_test/main.py", line 5, in generate_watermark_video
    with VideoFileClip(original_video_path) as video_clip:
  File "/home/bengab/.local/lib/python3.10/site-packages/moviepy/video/io/VideoFileClip.py", line 88, in __init__
    self.reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt,
  File "/home/bengab/.local/lib/python3.10/site-packages/moviepy/video/io/ffmpeg_reader.py", line 35, in __init__
    infos = ffmpeg_parse_infos(filename, print_infos, check_duration,
  File "/home/bengab/.local/lib/python3.10/site-packages/moviepy/video/io/ffmpeg_reader.py", line 289, in ffmpeg_parse_infos
    raise IOError(("MoviePy error: failed to read the duration of file %s.\n"
OSError: MoviePy error: failed to read the duration of file /home/bengab/Remote Jobs Files/Weperch/Watermark Video/upload_videos_dir/aea7d48358ed4ef99ceea98a46b1f1a7.webm.
Here are the file infos returned by ffmpeg:

ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, matroska,webm, from '/home/bengab/Remote Jobs Files/Weperch/Watermark Video/upload_videos_dir/aea7d48358ed4ef99ceea98a46b1f1a7.webm':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
    Stream #0:1(eng): Video: vp8, yuv420p(progressive), 640x480, SAR 1:1 DAR 4:3, 250 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      alpha_mode      : 1
At least one output file must be specified

我试过用os.system调用FFmpeg命令行转换这个WebM视频,但转换后音视频不同步,求各位帮忙解决。


内容的提问来源于stack exchange,提问作者Ben Gab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:15:42