私の hw:1,0 は再生専用の外付け USB カードです。レコーディング アプリケーションは、キャプチャのために hw:1,0 を開こうとすると、hw:1,0 に送信されるサンプルをキャプチャできません。alsamixer は、hw:1,0 の「[キャプチャ]」オプションを提供しません。「[再生]」タブのボリューム コントロールは 1 つだけです。
アプリケーションの再生からストリームを受け入れ、2 つのストリーム (コピー) を介して送信する仮想「xxx」デバイスを作成することは可能ですか?キャプチャ機能を提供する別の仮想デバイス「zzz」にストリームを供給し、キャプチャのために「zzz」を開くことができるアプリケーションにストリームを供給しますか?
アップデート
カーネルに ALSA ループバック デバイスを追加しました。これでループバック デバイスができました。次に、動作している.asoundrcを見つけました(以下を参照)が、ffmpegを使用して画面とサウンドをキャプチャすると、サウンドがビデオよりもはるかに前になり、大きな同期の問題が発生します。したがって、この .asoundrc (以下) では、hw:0,0 (ループバック デバイス、hw:0,0 - 再生、hw:0,1 - キャプチャ) を使用して、「デフォルト」に送信するものをキャプチャできます。また、外部 USB hw:2,0 経由でこれらのサンプルを聞くこともできます。
ffmpeg コマンド:
ffmpeg -f alsa -i hw:0,1 -f x11grab -s 854x480 -r 30 -i :0.0 -vcodec libx264 -vb 4000k /tmp/screen_854x480.avi
.asoundrc:
pcm.!default {
type plug
slave.pcm "mdev"
route_policy "duplicate"
}
pcm.mdev {
type multi
slaves.a.pcm "hw:Loopback,0,0"
slaves.a.channels 2
slaves.b.pcm "dmixer"
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:2,0"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
channels 2
format S16_LE
}
}