Как разрезать большие одиночные mp3-треки на несколько треков - PullRequest
0 голосов
/ 16 июня 2019

Я не могу понять, как правильно использовать 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, и вы можете установить только то место, где хотите ее вырезать, а не то, откуда ее вырезать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...