python使用moviepy包下的VideoFileClip时报错:OSError: [WinError 6] 句柄无效解决方法

在使用moviepy包下的VideoFileClip获取视频时长,在连续获取了若干个视频时长之后,突然报错:

Traceback (most recent call last):
  File "e:\Videos\get_video_duration.py", line 67, in <module>
    run()
  File "e:\Videos\get_video_duration.py", line 62, in run
    gen_video_duration()
  File "e:\Videos\get_video_duration.py", line 49, in get_video_duration
    duration = time_convert(get_video_times(os.path.join(root,i)))
  File "e:\Videos\gen_video_duration.py", line 26, in get_video_times
  File "D:\ProgramData\Anaconda3_x64\lib\site-packages\moviepy\video\io\VideoFileClip.py", line 91, in __init__
    fps_source=fps_source)
  File "D:\ProgramData\Anaconda3_x64\lib\site-packages\moviepy\video\io\ffmpeg_reader.py", line 69, in __init__
    self.initialize()
  File "D:\ProgramData\Anaconda3_x64\lib\site-packages\moviepy\video\io\ffmpeg_reader.py", line 104, in initialize
    self.proc = sp.Popen(cmd, **popen_params)
  File "D:\ProgramData\Anaconda3_x64\lib\subprocess.py", line 664, in __init__
    _cleanup()
  File "D:\ProgramData\Anaconda3_x64\lib\subprocess.py", line 228, in _cleanup
    res = inst._internal_poll(_deadstate=sys.maxsize)
  File "D:\ProgramData\Anaconda3_x64\lib\subprocess.py", line 1216, in _internal_poll
    if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
OSError: [WinError 6] 句柄无效。

 

左侧是错误写法,右侧加了两行问题解决了:

 

正确获取视频时长的代码:

def get_video_time(video_path):
    """
    pip install moviepy
    获取视频时长(s:秒),如果需要换算成时分秒,则调用time_convert()即可
    """
    from moviepy.editor import VideoFileClip
    video_clip = VideoFileClip(filename)
    durantion = video_clip.duration
    video_clip.reader.close()
    video_clip.audio.reader.close_proc()
    return durantion

 

解决方案来源:http://www.voidcn.com/article/p-ynpmrlvx-bwa.html

因为感觉他写得太复杂,不太好看懂,自己简单的几行代码比较容易理解,就写了这么一篇水文

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值