我做了一个小剧本来连接一些剪辑。剪辑的名称存储在从其中读取的另一个文本文件中。
我首先得到的错误是
in ffmpeg_parse_infos
line = [l for l in lines if keyword in l][index]
IndexError: list index out of range
然后,在上述异常期间,另一个出现在下面。
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或视频本身进行任何操作,让它们与电影一起工作?
代码如下:
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)
编辑:
我发现了一些奇怪的东西。当我手动创建组合视频时,没有错误,但是创建的视频已损坏且不可播放。
发布于 2022-08-24 20:49:06
从文件中读取文件名,将'\n‘字符追加到末尾。这可以用字符串的.strip()函数删除。这导致了最初的错误。此外,文件视频看起来很奇怪,因为有不同分辨率的剪辑。这可以用参数法=‘组合’来修正。
https://stackoverflow.com/questions/73437665
复制相似问题