gpt4 book ai didi

python - Moviepy - 使用 CSV 文件中的时间创建多个子剪辑

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:23 25 4
gpt4 key购买 nike

我正在创建一个使用 MoviePy 模块的 Python 脚本,以从较大的视频中提取剪辑并将它们连接在一起。

像这样在 CSV 文件中详细说明了剪辑的时间;

0,10

11,19

15,20

34,42等等

我所做的是逐行读取 CSV 文件,然后使用 Moviepy 的子剪辑方法创建了一个存储在剪辑列表中的剪辑,但是我得到了一个 IndexError - 列表索引超出范围。

可能是什么问题(如果我不对 CSV 文件中的值使用 subclip 方法,代码工作正常)?

这是我的代码:

video= VideoFileClip('file')

clipsArray = []

import csv
with open('csv file', 'r') as file:
reader = csv.reader(file)
for row in reader:
startTime = row[0]
endTime = row[1]
clip = fullVideo.subclip(startTime, endTime)
clipsArray.append(clip)

错误信息是:

运行文件中的文件“C:\Anaconda3\envs\py35\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 685 行 execfile(文件名,命名空间)

文件“C:\Anaconda3\envs\py35\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 85 行,在 execfile 中 执行(编译(打开(文件名,'rb')。读取(),文件名,'exec'),命名空间)

文件“C:/spyder2-py3/program.py”,第 32 行,位于 clip = fullVideo.subclip(start, end) # 为每个时间戳创建剪辑

文件“”,第 2 行,在子剪辑中

文件“C:\Anaconda3\envs\py35\lib\site-packages\moviepy\decorators.py”,第 86 行,在包装器中 for (arg, name) in zip(a, names)]

文件“C:\Anaconda3\envs\py35\lib\site-packages\moviepy\decorators.py”,第 86 行,在 for (arg, name) in zip(a, names)]

文件“C:\Anaconda3\envs\py35\lib\site-packages\moviepy\tools.py”,第 78 行,在 cvsecs 中 发现 = re.findall(expr, 时间)[0]

IndexError: 列表索引超出范围

CSV 文件:

0,12
16,21
22,29
34,59
89,130
140,160
162,171

最佳答案

失败的原因是当您从这个 csv 文件中读取时,您得到 startTimeendTime 作为字符串,例如 '0'和第一行的 '12'

MoviePy 只接受两种时间格式:

  • 表示秒数的数字格式(整数或 float )
  • 'hh:mm:ss.dd'(小时、分钟、秒、秒的小数位)形式的字符串,例如'05:12:10.50' 5 小时 12 分 10.5 秒。

所以你应该写

startTime = float(row[0])
endTime = float(row[1])
clip = fullVideo.subclip(startTime, endTime)

关于python - Moviepy - 使用 CSV 文件中的时间创建多个子剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com