Как мне записать многоканальный (квад) с ffmpeg?

382
Toby Eggitt

Недавно я получил четырехканальное USB-устройство ввода (Behringer UMC404HD). Устройство работает, и Linux видит это; Я знаю это, потому что я могу записать четыре независимых канала, используя Audacity. Однако я не могу понять, как попросить ffmpeg сделать то же самое.

Если я настраиваю ALSA и запускаю эту команду:

ffmpeg -f alsa -i pulse test.flac 

Я получаю стереофонический файл, содержащий звук от многоканального устройства, в котором все четыре канала микшированы в стерео (он обрабатывается как фронтальный и тыловой квадрофонический источник).

ffprobe в этом файле сообщает (среди массы другой информации):

Stream #0:0: Audio: flac, 48000 Hz, stereo, s16 

Попробуйте, как я мог, я не могу определить, как перевести эту штуку в режим квадратора, а не в стерео. Эта страница выглядела многообещающе, но я не мог заставить ее работать для моего (конечно, намного проще !?) случая: https://trac.ffmpeg.org/wiki/AudioChannelManipulation

Кто-нибудь знает, как я должен это сделать? Кажется, это должно быть тривиально, и я, вероятно, просто использую неправильные слова в своих поисках.

0
Я не знаю наверняка, но в наше время звук quad настолько редок, что, возможно, вам лучше отформатировать его как 5.1 с двумя пустыми каналами. Tetsujin 5 лет назад 0
Проблема здесь должна быть решена на стороне ввода; повторное матрицирование входа в 4 канала не даст вам ввода, если ffmpeg не принял их в первую очередь. Смотрите [docs] (http://ffmpeg.org/ffmpeg-devices.html#alsa) для опций alsa. Gyan 5 лет назад 2
Тетсуджин, мне все равно, какой это формат, если у него есть четыре независимых канала (они не позиционные, в любом случае они фактически независимые инструменты / голоса). Итак, если вы можете сказать мне, как создать командную строку, которая делает то, что вы предлагаете, это было бы очень полезно. Toby Eggitt 5 лет назад 0
Гьян, спасибо, это в конечном итоге привело меня к решению. Потребовалось несколько попыток выяснить, как использовать функцию каналов и где ее разместить, а затем обнаружить, что контейнер flac не подходит для четырех каналов (или, по крайней мере, так говорит ffmpeg). Но, в конце концов, это сработало: ffmpeg -f alsa -channels 4 -i pulse test.wav Похоже, важно, чтобы -channels предшествовал импульсу -i, а контейнер wav выглядит так, как будто он тратит дисковое пространство, но по крайней мере он содержит четыре канала без проблема. Большое спасибо. Toby Eggitt 5 лет назад 0

1 ответ на вопрос

1
Gyan

Вы должны указать правильное количество каналов на входной стороне, и для сохранения во FLAC вам нужно будет установить поддерживаемую схему каналов. Так,

ffmpeg -f alsa -channels 4 -i pulse -channel_layout quad test.flac 
Спасибо, одна из вещей, которую мне труднее всего узнать о ffmpeg, - это синтаксис команд. Кажется, он критически чувствителен к порядку, и я еще не нашел (в огромной куче документов!) Ту часть, где это описано в общих чертах. Во всяком случае, ваш вклад хорошо прояснился. Toby Eggitt 5 лет назад 0
Смотрите последние два пункта этого раздела: http://ffmpeg.org/ffmpeg.html#Description Gyan 5 лет назад 0