Я не могу понять, как правильно использовать PyDub.Я хочу разрезать большой mp3 на более мелкие файлы, хотя я не могу найти способ правильно разрезать каждую дорожку, используя начальную и конечную точки.
Я использовал метод, с помощью которого я передаю определенные конечные точки вмассив и использовать это, чтобы вырезать дорожку.Тем не менее, это приводит к проблеме песни, начинающейся с 0 каждый раз, то есть 0-2: 34, 0-5: 34, 0-9: 32 и т. Д.
Я также получаю ошибку памяти, когда япопробуйте запустить
PS H:\> & C:/Users/Luke/AppData/Local/Programs/Python/Python37-32/python.exe h:/song_slice.py
Exception in thread Thread-3:
Traceback (most recent call last):
File "C:\Users\Luke\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\Users\Luke\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Luke\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1238, in _readerthread
buffer.append(fh.read())
MemoryError
import pandas as pd
from pydub import AudioSegment
global tracks
# track list no. array
tracklisting = []
# track list song endpoint array
tracklisting_range = []
# the mp3 file
sound = AudioSegment.from_mp3("somemix.mp3")
def track():
tracks = int(input("How many tracks?"))
while True:
if (tracks > 0):
return tracks
else:
tracks = int(input("Invalid number, please try again:"))
if __name__ == "__main__":
no_track = track()
# takes amount of tracks, ask endpoint for each, stores them in a list
for i in range(no_track):
temp_val = int(input("Select endpoint for for Track {0} ".format(i)))
tracklisting.append(temp_val)
tracklisting_range = pd.Series(tracklisting)
tracklisting_range = tracklisting_range.astype(int)
# know we have an array full of end points in milliseconds
print((tracklisting_range * 100000).to_list())
# pass list so it can cut music
# TODO figure out how to cut song from last endpoint
for i in range(tracklisting_range):
x = x + 1
track = sound[i:]
track.export("Track %x", format="mp3")
В результате я хотел бы иметь возможность уже знать, где была последняя точка резки, и начать с нее.Однако, просматривая документацию, я не могу понять, как это установить.С моей точки зрения, песня начинается с 0, и вы можете установить только то место, где хотите ее вырезать, а не то, откуда ее вырезать.