Как экспортировать волновые срезы в те же биты на семпл, что и в исходном файле - PullRequest
0 голосов
/ 23 апреля 2019

Я перебираю большой волновой файл, через словарь новых имен, длин и версий файлов. Цикл экспортирует отдельные фрагменты в виде файлов:

mix.export(key, format='wav')

Однако он преобразует исходный 24-битный файл в 32-битные слайсы. Я делал обходные пути к профессиональным инструментам, чтобы вернуть файлы к 24, так как я не могу понять ни настройки ffmpeg, ни получение фрагмента в подпроцесс.

Я пробовал несколько вариантов этой темы:

mix.export(key, format='wav', codec='pcm_s24le')

Как и этот:

mix.export(k, format='wav', parameters=['ffmpeg', '-i', '-acodec', 'pcm_s24le', '-ar', '48000'])

Я не могу заставить отдельные срезы работать в следующем вызове подпроцесса. key - имя файла из пары ключ-значение. Это хорошо работает в 32-битном экспорте, но не уверен, как заставить его работать, когда требуется вызвать временный файл среза, такой как /var/folders/vc/q7jggn7900l099w45463lgx40000gn/T/tmpw_6mxyg8.

subprocess.call(['ffmpeg', '-i', key, 
                 '-acodec', 'pcm_s24le', '-ar', '48000', 'output.wav'])

Надеясь на фрагменты того же формата, что и исходный ввод:

mix_file = AudioSegment.from_wav(file_name)
...