首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MoviePy和OSError索引错误: MoviePy错误:无法读取文件的持续时间

MoviePy和OSError索引错误: MoviePy错误:无法读取文件的持续时间
EN

Stack Overflow用户
提问于 2022-08-21 19:37:04
回答 1查看 216关注 0票数 0

我做了一个小剧本来连接一些剪辑。剪辑的名称存储在从其中读取的另一个文本文件中。

我首先得到的错误是

代码语言:javascript
运行
复制
in ffmpeg_parse_infos
line = [l for l in lines if keyword in l][index]
IndexError: list index out of range

然后,在上述异常期间,另一个出现在下面。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "e:\Projects\TwitchMontage\VideoCompilation\src\create_video.py", line 32, in <module>
    clips = create_clips_from_list(list)
  File "e:\Projects\TwitchMontage\VideoCompilation\src\create_video.py", line 20, in create_clips_from_list
    clip = VideoFileClip(str(video_file_path))
  File "C:\Users\Alejandro\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\video\io\VideoFileClip.py", line 88, in __init__
    self.reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt,
  File "C:\Users\Alejandro\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\video\io\ffmpeg_reader.py", line 35, in __init__
    infos = ffmpeg_parse_infos(filename, print_infos, check_duration,
  File "C:\Users\Alejandro\AppData\Local\Programs\Python\Python38\lib\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 E:\Projects\TwitchMontage\VideoCompilation\VideoFiles\raw_clips\clip0.mp4

我怀疑FFMPEG有问题,但我不知道该修改什么来解决这个问题。我是否可以对FFMPEG或视频本身进行任何操作,让它们与电影一起工作?

代码如下:

代码语言:javascript
运行
复制
import os
from moviepy.editor import VideoFileClip, concatenate_videoclips

PATH_TO_VALID_CLIPS = 'VideoCompilation/ClipData/valid_clips.txt'
PATH_TO_RAW_CLIPS = 'E:\Projects\TwitchMontage\VideoCompilation\VideoFiles\\raw_clips'
os.environ['IMAGEIO_FFMPEG_EXE'] = 'ffmpeg'

def read_valid_clips_list():
    #read valid clips
    file = open(PATH_TO_VALID_CLIPS, 'r')
    list = file.readlines()
    return list

def create_clips_from_list(list):
    clips = []
    for i, filename in enumerate(list):
        print(str(i) + '\n')
        video_file_path = os.path.abspath(os.path.join(PATH_TO_RAW_CLIPS, filename))
        print(video_file_path + '\n')
        clip = VideoFileClip(str(video_file_path))
        clips.append(clip)

    return clips

def create_draft(clips):
    draft = concatenate_videoclips(clips)
    draft.write_videofile("VideoCompilation/VideoFiles/videos/draft.mp4")
    return draft

list = read_valid_clips_list()
clips = create_clips_from_list(list)
draft = create_draft(clips)

编辑:

我发现了一些奇怪的东西。当我手动创建组合视频时,没有错误,但是创建的视频已损坏且不可播放。

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 20:49:06

从文件中读取文件名,将'\n‘字符追加到末尾。这可以用字符串的.strip()函数删除。这导致了最初的错误。此外,文件视频看起来很奇怪,因为有不同分辨率的剪辑。这可以用参数法=‘组合’来修正。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73437665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档