Я успешно использовал ffmpeg в Python для преобразования mp3-файлов в wav, чтобы я мог публиковать их в Google Speech-To-Text. Теперь у меня такая же ситуация с файлами webm, и старая функция у меня не работает. Он должен преобразовать файл в wav и разбить его на 15-секундные фрагменты. Могу ли я сделать это из webm-файла или мне нужно сначала преобразовать его в какой-то другой формат?
Функция, которую я использовал:
def convert_and_split(filename):
command = ['ffmpeg', '-i', filename, '-f', 'segment', '-segment_time', '15', '-c', 'copy', 'parts/out%09d.wav']
subprocess.run(command,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
РЕДАКТИРОВАТЬ. Забыл упомянуть, что функция делает в данный момент с webm-файлами. Он создает один пустой wav-файл out000000000.wav
. В консоли получаю такое сообщение об ошибке:
[segment @ 0x55970b22fe80] Opening 'parts/out000000000.wav' for writing
[wav @ 0x55970b1ffbc0] opus codec not supported in WAVE format
Could not write header for output file #0 (incorrect codec parameters ?): Function not implemented
РЕДАКТИРОВАТЬ2. Думаю, я правильно понял, но хотел бы услышать, есть ли лучший способ сделать это.
Сначала я конвертирую файл в монофонический wav, а затем разбиваю его на куски. Пожалуйста, не стесняйтесь указывать на любые ошибки или ошибки.
def convert_webm_to_wav(file):
command = ['ffmpeg', '-i', file, '-acodec', 'pcm_s16le', '-ac', '1', '-ar', '16000', '/home/janip/openvidu_files/' + file.name[:-5] + '.wav']
subprocess.run(command,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
def split_audio(filename):
command = ['ffmpeg', '-i', filename, '-f', 'segment', '-segment_time', '15', '-c', 'copy', '/home/janip/work/Holda/Nut_ideas/voice_chat_demos/openvidu-tutorials/openvidu-js-node/python_scripts/parts/out%09d.wav']
subprocess.run(command,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
РЕДАКТИРОВАТЬ3. Я попробовал предложенную функцию llogan и получил эту ошибку:
error:[segment @ 0x55f1c28d2740] Opening 'parts/out000000000.wav' for writing
[segment @ 0x55f1c28d2740] Failed to open segment 'parts/out000000000.wav'
Could not write header for output file #0 (incorrect codec parameters ?): No such file or directory
Error initializing output stream 0:0 --
error:Conversion failed!
Это работает, когда я использую две отдельные функции, но я думаю, что качество звука в wav хуже, чем в оригинальном webm. Что-нибудь, что я могу сделать для этого?
ffmpeg
... из терминала и добавить информацию об ошибке, которая возникла на ваш вопрос. - person Daweo   schedule 28.05.2020