Есть микрофон в звуковухе hw:0,0. Звуковуха двухканальная. Если туда воткнуть микрофон, она выдаст одно и то же в обоих каналах.
Есть микрофон в звуковухе hw:1,0 - это веб-камера. Выглядит как одноканальная звуковуха.
Надо взять один канал с первой звуковухи и единственный со второй и образовать один двухканальный поток. Ну и записать в mp3 файл, например.
Делается это так:
sox -t alsa hw:0,0 -t alsa hw:1,0 -M -p remix 1 3 | ffmpeg -f sox -i - -acodec libmp3lame -ab 128k output.mp3
SoX видит вообще 3 канала. Если не поставить в конце «remix 1 3» (это означает «взять канал 1, взять канал 3»), то ffmpeg получает 3-канальный аудио-поток, но вхрячить ЭТО в mp3 он не может. Поэтому на этапе SoX надо убить лишний канал. ОК.
Но прослушивая output.mp3 заметна рассинхронизация каналов - один из них задерживается относительно второго.
Как бы применить на уровне SoX эффект «delay» только к одному из каналов, идущих на выход?
А вот так можно записать с этой веб-камеры видеофайл со стереозвуком:
sox -t alsa hw:0,0 -t alsa hw:1,0 -M -p remix 1 3 | ffmpeg -f sox -i - -r 24 -s 846x480 -f video4linux2 -i /dev/video0 -acodec libmp3lame -ab 128k output.avi
Но тут вообще беда - картинка опережает оба канала, один из которых опережает второй.
Послушать: http://ymap.dyndns.org/output.mp3 (1.5 MB)