Как сохранить клипы аудиопотока в Python - PullRequest
1 голос
/ 23 февраля 2020

В целом я пытаюсь сохранить только небольшие разделы файла .mp3, например, 00:00:00 - 00:01:35.

В настоящее время я получаю URL-адрес в формате .mp3 и сохраняю его на диск, прежде чем пытаться редактировать клип. Поскольку существует большая вероятность того, что эти клипы могут быть произвольной длины, я искал возможность пропустить интересующий меня раздел клипа и отредактировать его без полной загрузки.

В настоящее время я использую библиотеку запросов в python, я еще не использовал параметр потока, потому что я не знаю, могу ли я искать другие разделы в потоках.

Текущая реализация :

def download(url, save_location):
    try:
        audio = requests.get(url)
        with open(save_location, 'wb') as audio_file:
            audio_file.write(audio.content)
    except IOError as err:
        print(err)
        print("There was an error retrieving the data. Check your internet connection and try again.")
        sys.exit(0)
    except KeyboardInterrupt:
        print("\n\nYou have interrupted an active download.\n Cleaning up fines now.")
        os.remove(save_location)
        sys.exit(1)

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Насколько я знаю, модуль pydub может сохранять клипы аудио. (Конечно, вы должны использовать модуль запросов для загрузки полного звука)

Но вы должны установить этот модуль и ffmpeg .

Пример для этого:

from pydub import AudioSegment
sound = AudioSegment.from_mp3(your_file_name)

StartTime = 0
EndTime = 10*1000 # ms

# save 0 to 10s
Output_MP3 = sound[StartTime,EndTime]
Output_MP3.export(TheSavePath,format="mp3") 
0 голосов
/ 27 февраля 2020

В итоге я фактически использовал пакет python -ffmpeg , который позволил мне установить время начала и продолжительность клипа с флагами, прежде чем я сохраню вывод.

Код:

import ffmpeg

audio_input = ffmpeg.input(url)
audio_output = ffmpeg.output(audio_input, save_location, ss=start_pos, t=duration)
audio_output.run()
...