背景:需要在debian/ubuntu中同时录制视频和两个音频,
1 安装ffmpeg/libav
#apt-get install ffmpeg libav-tools
2 分别获取speaker占用的设备和麦克风的设备
获取speaker设备:
# pactl list sources| grep alsa_output.pci-[0-9_.a-z]*.analog-stereo.monitor
Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
alsa_output.pci-[some number].analog-stereo.monitor:表示从音响或耳机中的声音(即播放视频或音频时听到的声音),有时候电脑有两个声卡,就要看正在使用的是哪个声卡。monitor表示监听内部声音
获取麦克风设备,不含monitor的音频输入设备:
alsa_input.pci-0000_00_1b.0.analog-stereo:表示麦克风设备
3 安装pavucontrol,选择正确的输入设备,内部monitor(默认内部音频,模拟立体声) 和麦克风(也是内部音频,模拟立体声,但是端口要选择已经插入可工作的设备)
4 录制
ffmpeg -f x11grab -s 1600x900 -i :0.0 -f pulse -i alsa_input.pci-0000_00_1b.0.analog-stereo -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -map 0:0 -map 1:0 -map 2:0 1.mkv
录制时,将麦克风的音轨放前面,播放声音speaker的音轨放后面。
多个stream需要使用map参数(三个及以上),第一个是0:0,第二个是1:0, 第三个是3:0。
获取speaker设备方法: http://askubuntu.com/questions/233060/recording-speaker-audio-using-avconv