使用moviepy和ffmpeg写入视频文件时出错



我第一次使用moviepy库。我有一个大约7小时长的视频剪辑,我想把它剪辑成小片段。我有一份开始和结束时间的清单。

video = VideoFileClip("videoFile.mp4")
clips = []
for cut in cuts:
clip = video.subclip(cut[0], cut[1])
clips.append(clip)
clips
clip = video.subclip("7:32:18", "7:38:38")
clips.append(clip)
for clip, title in zip(clips, title_list):
clip.write_videofile(title + '.mp4', threads=8, fps=24, audio=True, codec='libx264',preset=compression)
video.close()

clips[]包含剪辑的开始和结束时间。我也有一个标题列表,我是从youtube上刮来的。我这里没有包括这两个列表,但一个小例子可能是:

cuts = [('0:00', '2:26'),
('2:26', '5:00'),
('5:00', '7:15'),
('7:15', '10:57'),
('10:57', '18:00'),
('18:00', '18:22'),
('18:22', '19:57'),
('19:57', '20:37'),
('20:37', '28:27'),
('28:27', '40:32'),
('40:32', '49:57'),...
title_list = ['Introduction (What is Todoist?), tech stack talk', 'Showing the final application (with dark mode!)', 'Installing create react app', "Clearing out what we don't need from create react app", "Let's get building our components!", 'Installing packages using Yarn', 'Building the Header component', 'Building the Content component',...
OSError: [Errno 32] Broken pipe
MoviePy error: FFMPEG encountered the following error while writing file Introduction(WhatisTodoist?),techstacktalkTEMP_MPY_wvf_snd.mp3:
b'Introduction(WhatisTodoist?),techstacktalkTEMP_MPY_wvf_snd.mp3: Invalid argumentrn'
In case it helps, make sure you are using a recent version of FFMPEG (the versions in the Ubuntu/Debian repos are deprecated).

上面是我在运行write_videofile((后得到的错误。我已经查看了github上的文档和问题,我也尝试通过pip更新ffmpeg。我不知道为什么它不能写音频文件。

原因可能是文件名中的特殊字符。至少在窗户上你不能有"?"在文件名中。您可以尝试其他名称来检查是否存在此问题。

正如Marcel Preda所说,它可能是文件路径。这与名称和文件扩展名相同。例如,如果将输出文件用作:

OUTPUT_PATH = os.path.abspath('Test Footage/output/final2.mp4')

但你需要导出音频,然后这将导致一个错误(根据经验(。

OUTPUT_PATH = os.path.abspath('Test Footage/output/final2.mp3')  # change to mp3

最新更新