avconvを使用して2つのオーディオ入力ソースをマージする方法

avconvを使用して2つのオーディオ入力ソースをマージする方法

avconvを使用してスクリーンキャストを作成しようとしたときに問題が発生しました。最後に、コンピュータの出力とマイクの入力を録音しましたが、問題は出力ファイルにマージされないことです。 (私はそれをfilter_complex amix = inputsオプションとして見ましたが、以前のバージョンにしかありませんでした)

マージする他の方法はありますか? (後半製作でも構いません。)

これは私が使用するコマンドラインです

avconv -f alsa -ac 2 -i pulse -f alsa -ac 2 -i hw:2,0 -filter_complex amix=inputs=2 -f x11grab -r 30 -s 1366x742 -i :0.0+1369,25 -map 0:0 -map 1:0 -map 2:0 -acodec flac -vcodec libx264 -preset:v superfast -crf 18 -threads 0 output.mkv

ベストアンサー1

似たようなフィルタを使ってこれをたくさん行うので、ffmpegこれは役に立ちます。これは、スクリーンキャプチャ、コンピュータオーディオ入力screen.avi、マイクキャプチャ入力を想定していますmic.wav

ffmpeg -i screen.avi -i mic.wav -filter_complex '[0:1][1:0]amix=inputs=2:duration=first[all_audio]' -map 0:0 -map '[all_audio]' -vcodec libx264 -crf 28 -preset slow -acodec mp3 out.avi

出力に入るチャンネルが選択されたと思います-map。したがって、元のコマンドラインをデバッグする場合は、損失 -map 1:0 -map 2:0(つまり、マージされていない入力を出力にマッピング)し、amixプラグインの出力名を指定する必要があると思います(たとえば、次のall_audioように)。私の例が表示されます)と-map '[all_audio]'(マージされたオーディオを出力にマッピング)があります。しかし、私は知りませんavconv

おすすめ記事