背景:
多集电视剧采用分集,使用多线程下载视频,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'