4

私の 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
    }
}
4

1 に答える 1