ffmpeg를 사용하여 일부 비디오를 녹화하도록 ALSA를 설정하려고 하므로 애플리케이션을 듣고 녹화할 수 있어야 합니다(실제로는 특정 애플리케이션 1개를 녹화해야 할 수도 있습니다). 녹음 마이크는 그다지 중요하지 않지만 아무런 문제도 없고 잘 작동합니다. 내장 사운드 카드만 있고 외부 사운드 카드는 없습니다(내 Nvidia 그래픽 카드에 일부 오디오 장치가 추가되어 있음). 편집 중입니다 ~/.asoundrc
. ffmpeg wiki의 가이드를 사용해 보았지만 실제로는 효과가 없었습니다. dmix를 사용하지 않았기 때문에 한 번에 하나의 응용 프로그램에서만 사운드를 재생할 수 있었습니다. 또한 어떤 이유에서인지 앱에서 나오는 소리도 녹음되지 않습니다. 앱이 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에서 캡처 마이크를 끄면 아무것도 녹음되지 않습니다.