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

Чего я действительно хочу добиться, так это взять два отдельных USB-устройства ввода звука и одновременно записывать их с обоих (синхронизировать, поэтому отдельные файлы на самом деле не кажутся приемлемым вариантом).

Одна проблема в том, что я не уверен, как я могу выразить этот запрос ffmpeg, документы огромны, и начинающему очень трудно даже понять, с чего начать. В некотором смысле, это, вероятно, потому, что я не знаю, как называются концепции, поэтому записи в индексе мне не нужны.

Другая проблема заключается в том, что для достижения этого я почти уверен, что мне нужно будет напрямую обращаться к аппаратным устройствам (поскольку -f alsa -i pulse может, я полагаю, относиться только к "выбранному в данный момент" импульсному устройству) , Теперь, если я попытаюсь выполнить запись с одного устройства, одно из них будет работать нормально, если я назову его именем hw:2 . Другой, в настоящее время hw:3 имеет раздражающую тенденцию сообщать о занятости, но если я об этом забываю , я всегда получаю сообщение об ошибке: cannot set sample format 0x10000 2 (Invalid argument) hw:3: Input/output error Однако, если Я пытаюсь выполнить запись с него по импульсу (это единственное изменение; выберите его в качестве входа по умолчанию и обозначьте его как -i pulse вместо -i hw:3 тогда он работает (все еще по отдельности, очевидно), просто отлично.

Есть указатели? Я пытаюсь что-то невозможное? На какую часть документации ffmpeg я должен ссылаться?

РЕДАКТИРОВАТЬ: Поскольку мой поиск продолжается, я задаюсь вопросом, может ли это быть что-то, для чего я должен понимать «сложный фильтр-граф», или, возможно, что-то, что система "Джек" может обрабатывать. Мне пока не удалось по-настоящему понять, но они кажутся возможными соперниками?

РЕДАКТИРОВАТЬ (добавить информацию):

Вот несколько команд и выводов, которые я пытался использовать, со встроенными комментариями, как обычно [...] указывает, что я упустил материал, который не помогает понять:

toby@LinuxStudio:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
[...]
card 1: PCH [HDA Intel PCH], device 0: 92HD99BXX Analog [92HD99BXX Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: U192k [UMC404HD 192k], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

toby@LinuxStudio:~$ ffmpeg -f alsa -i hw:3 -sample_rate 48000 -channels 4 -channel_layout quad test.wav
[...]
[alsa @ 0x563b07aa6960] cannot set sample format 0x10000 2 (Invalid argument)
hw:3: Input/output error

toby@LinuxStudio:~$ ffmpeg -f alsa -i hw:2 -sample_rate 48000 -channels 2 -channel_layout quad test.wav
[...]
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, quad, s16, 3072 kb/s
[...]
Exiting normally, received signal 2.

toby@LinuxStudio:~$ ffmpeg -f alsa -i pulse -sample_rate 48000 -channels 4 -channel_layout quad test.wav
[...]
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, quad, s16, 3072 kb/s
Exiting normally, received signal 2.

toby@LinuxStudio:~$ ffmpeg -f alsa -i pulse -sample_rate 48000 -channels 4 -i hw:2 -sample_rate 48000 -channels 2 -channel_layout hexagonal test.wav
[...]
hw:2: Protocol not found
Did you mean file:hw:2?

Так, в частности, обратите внимание, что команда с hw:2 работает для двух каналов, команда с hw:3 завершается неудачно с "Неверным аргументом", эквивалентная команда работает, когда ссылается на pulse вместо hw:3 (и с импульсом по умолчанию для устройства установлено значение hw:3 с использованием pavucontrol поэтому они должны быть одной и той же целью).

Кроме того, мое лучшее предположение о формате для захвата из двух входов - это явно синтаксическая ошибка, но я предполагаю, так что это не удивительно!

Наконец, я обнаружил, что примерно в девяти случаях из десяти, если я пытаюсь использовать формат hw для доступа к четырехканальному устройству, ffmpeg отвергает попытку cannot open audio device hw:2 (Device or resource busy) hw:2: Input/output error Это всегда происходит. Я использую pavucontrol чтобы выбрать устройство по умолчанию, но не исчезает, если я отключаю его, и часто происходит, даже если устройство никогда не использовалось по умолчанию.

1 ответ1

2

Я предлагаю вам установить hw:3 в качестве устройства по умолчанию, а затем попробуйте следующее,

ffmpeg -f alsa -sample_rate 48000 -channels 4 -i pulse -f alsa -sample_rate 48000 -channels 2 -i hw:2 -filter_complex amerge test.wav

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .