ffmpegを使用して一部のビデオを録画するようにALSAを設定したいので、アプリケーションを聞いて録画できるようにする必要があります(実際には1つのアプリケーションを録画する必要があるかもしれません)。録音マイクはそれほど重要ではありませんが、問題はなく、うまく機能します。内蔵サウンドカードのみがあり、外部サウンドカードはありません(私のNvidiaグラフィックカードにいくつかのオーディオデバイスが追加されています)。編集中です~/.asoundrc
。 ffmpeg wikiのガイドを使ってみましたが、実際にはうまくいきませんでした。 dmixを使用していないため、一度に1つのアプリケーションでのみサウンドを再生できました。また、何らかの理由でアプリからの音も録音されません。アプリが1つだけ聞こえるのに、なぜこのソリューションを放棄したのか覚えていません。それから偶然見つけたこれ問題はここにあります。私はこの問題に対する解決策をコピーし(もちろんこれに基づいてデフォルトのカードを変更しました)、今私の~/.asoundrc
外観は次のようになります。
pcm.snd_card { # my usual sound card
type hw
card 1
}
ctl.!default { # default control; alsamixer and such will use this
type hw
card 1
}
# software mixer for sound card
pcm.dmixer {
type dmix
ipc_key 1
slave.pcm "snd_card"
slave {
period_time 0
period_size 1024
buffer_size 4096
channels 2 # must match bindings
}
bindings {
0 0
1 1
}
}
# software mixer for loopback device
pcm.dmixerloop {
type dmix
ipc_key 2
slave.pcm "hw:Loopback,0,0"
slave {
period_time 0
period_size 1024
buffer_size 4096
channels 2 # must match bindings
}
bindings {
0 0
1 1
}
}
# allows multiple programs to capture simultaneously
pcm.dsnooper {
type dsnoop
ipc_key 2
slave.pcm "snd_card"
slave
{
period_time 0
period_size 1024
buffer_size 4096
channels 2
}
bindings {
0 0
1 1
}
}
pcm.!default {
type asym
playback.pcm "out"
capture.pcm "dsnooper"
}
# Multi, splitting onto usual card and loopback
pcm.out {
type plug
slave.pcm {
type multi
slaves {
a { channels 2 pcm "dmixer" }
b { channels 2 pcm "dmixerloop" }
}
bindings {
0 { slave a channel 0 }
1 { slave a channel 1 }
2 { slave b channel 0 }
3 { slave b channel 1 }
}
}
ttable [
[ 1 0 1 0 ] # left -> a.left, b.left
[ 0 1 0 1 ] # right -> a.right, b.right
]
}
これはうまくいきますが、完璧ではありません。問題はアプリとマイクの音を録音することができますが、アプリが静かすぎるため、一般的な状況ではアプリの音がほとんど聞こえません。 (alsamixerのデフォルト設定は-5dBで、アプリ自体のボリュームは75%)、alsamixerとアプリの両方でボリュームを100%に上げてもあまり良くありませんでした。一方、マイクの音量は正常です。また、端末にalsactl restore
入力すると異常なエラーが発生します。
alsa-lib main.c:1560:(snd_use_case_mgr_open) error: failed to import hw:2 use case configuration -2
私はこれがループバックデバイスに関連していると思いますが、それが何を意味するのかわかりません。これがアプリケーションの量に関連しているかどうかはよくわかりません。このエラーは重要ですか?ボリュームに影響しますか?アプリケーションのボリュームを変更するには?
編集:ffmpeg wikiから切り替えて数回設定しました。再起動後、alsamixerのMasterは46%に設定されていますが、何らかの理由で変更することはできません。一方、私のslstatus(ミキサーから情報を取得する)は92%で表示されます。これは以前に設定した値(-5dB)です。また、この構成では、マイクがDiscordおよびSteamボイスチャットでは機能しないことにも注目する価値があります。ただし、その構成には何の変更もありません。 Discordでも音は全く聞こえません。 Steamボイスチャットでも同じようです。ただし、ffmpegを使用すると、マイクの音を録音できます。 Firefoxやゲームなどの他のアプリケーションから音を聞くことができます。
編集:私は間違っているようです。 DiscordとSteamボイスチャットの両方で音が聞こえます。 Steamは私のマイクを正しくキャプチャできましたが、Discordはそうではありませんでした。
編集:これがどのように機能するのかはわかりませんが(おそらくそうです)、alsamixerでキャプチャマイクをオフにすると何も録音されません。