FFmpeg для конвертации "многих" mp3 файлов в wav файлы - PullRequest
0 голосов
/ 21 января 2020

I wi sh для преобразования нескольких сотен тысяч файлов малой длительности (<5 se c) <code>mp3 в wav файлы. Но процесс в настоящее время занимает несколько дней. Я хотел бы знать, есть ли более быстрый способ, чем то, что я сейчас делаю.

В настоящее время я просто порождаю темы и звоню ffmpeg через subprocess модуль в Python. Когда я использую subprocess.Popen(), я быстро получаю ошибки памяти, потому что запускается слишком много потоков. Использование subprocess.call() работает без ошибок. Кроме того, я использую threading.Semaphore() для ограничения максимального количества рабочих потоков.

Код:

import threading
import subprocess

maxthreads = 50
sema = threading.Semaphore(value=maxthreads)
threads = []

def task(mp3_path):  # mp3 file path taken from the list of file_ids `mp3_list` below
    sema.acquire()
    subprocess.call(['ffmpeg', '-y',  '-i', mp3_path, '-preset', 'ultrafast', '-ar', '8000', wav_file_path])
    # provide file path and destination path
    sema.release()


def conv_to_wav_():
    for i in mp3_list:
        thread = threading.Thread(target=task,args=([i]))
        threads.append(thread)
        thread.start()

Я работаю на Windows 10 и имею доступный графический процессор Nvidia с поддержкой CUDA а также, если это полезно.

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