VideoFileClip 获取视频报错、

博客讨论了在处理监控视频时遇到的问题,由于视频文件在保存过程中可能因中断而不足30分钟。使用`VideoFileClip`读取这些文件会报错,因为无法获取准确的视频时长。目前的解决方案是通过列出文件并检查其实际长度来筛选完整视频,然后进行合并。作者寻求更高效的方法来处理这种情况。
摘要由CSDN通过智能技术生成

报错内容:

OSError: MoviePy error: failed to read the duration of file /mnt/data/test/monitor/videos/new_video/1652063723941.mkv.
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 '/mnt/data/test/monitor/videos/new_video/1652063723941.mkv':
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: N/A, start: 0.240000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive), 1920x1080, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
At least one output file must be specified
内容大概是没有获取到视频时长

这边的原因是,监控获取视频是mkv格式,每个视频文件保存30分钟的视频,中途中断程序,视频保存的时长按中断时的进度保存(中断时保存了十分钟,视频文件就存在十分钟的视频)。但此时如果按照  

cap = VideoFileClip(new_save_path + '/' + str(video_new_list),audio=False)

的方法去读取,就会出现上述情况。

我目前想到的方法只能是

sorted(os.listdir(new_save_path))

取出视频名称后,取索引的方式,去掉未满30分钟的视频(也可以加判断,稍微复杂,因为我的是监控视频,不会出现大量的中断的视频)

满足30分钟的视频可以zhenchang取,然后合并。

如果有更好的解决方法可以留言!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值