当我尝试使用pydub
和glob
合并一个文件夹中的多个.mp3文件以遍历文件时,出现以下错误。
from pydub import AudioSegment
from os import getcwd
import glob
cwd = (getcwd()).replace(chr(92), '/')
export_path = f'{cwd}/result.mp3'
MP3_FILES = glob.glob(pathname=f'{cwd}/*.mp3', recursive=True)
silence = AudioSegment.silent(duration=15000)
count, lenght = 0, len(MP3_FILES)
for n, mp3_file in enumerate(MP3_FILES):
mp3_file = mp3_file.replace(chr(92), '/')
count += 1
if count == 1:
print(n, mp3_file)
audio1 = AudioSegment.from_mp3(mp3_file)
elif count == 2:
audio2 = AudioSegment.from_mp3(mp3_file)
elif count == 3:
res = audio1 + silence + audio2
print('Merging')
count = 0
if n+1 == lenght:
res.export(export_path, format='mp3')
print('\ndone!')
预期的输出:一个音频文件,原始音频之间保持静音。
AUDIO_RESULT: audio1 silence audio2 silence audio3...
跟踪:
[mp3 @ 0000021b440ec740] Failed to read frame size: Could not seek to 1026.
C:\Users\Acer\Documents\1 file.mp3: Invalid argument
答案 0 :(得分:0)
它说-Invalid argument
可能是由文件路径中使用的空间引起的。
如果使用命令行传递文件/文件夹路径,则路径字符串应在引号(“”)
内部传递"C:\Users\Acer\Documents\Upwork\Shashank Rai\mp3 segmented delay\1 speech.mp3"
但是,在Windows操作系统中,有时C:\
会产生问题,因为一个\
用于特殊字符。您可以用双\\
进行测试吗?
"C:\\Users\\Acer\\..."
编辑1: 你能测试一下吗?
from pathlib import Path
cwd = Path.cwd()
MP3_FILES = list(cwd.rglob('*.mp3'))
...
...