多线程下载并获取电视剧集长度报错:[WinError 6] 句柄无效

背景:

多集电视剧采用分集,使用多线程下载视频,ffmpeg合并,且使用VideoFileClip获取长度

运行结果:

正常下载一集,完成第二集下载后,无法获取长度,报错:[WinError 6] 句柄无效。

原因:

该报错出现的原因是,使用VideoFileClip获取长度导致的,确切说,是第二次使用该方法获取视频长度导致。

报错代码:

def getLength(file_name):
    video_path = 'cache/' + file_name
    clip = VideoFileClip(video_path)
    length = clip.duration
    logging.info('[视频时长] %s s', length)
    if length < 1:
        return 'defeat'
    else:
        return 'succeed'

修复后代码:

def getLength(file_name):
    video_path = 'cache/' + file_name
    clip = VideoFileClip(video_path)
    length = clip.duration
    logging.info('[视频时长] %s s', length)
    clip.reader.close()
    clip.audio.reader.close_proc()
    if length < 1:
        return 'defeat'
    else:
        return 'succeed'

 

你可能感兴趣的:(报错指南)