我的hw:1,0是僅播放外部USB卡。錄製應用程序無法捕獲發送到hw:1,0的樣本,如果它嘗試打開hw:1,0進行捕獲。 alsamixer沒有爲hw:1,0提供任何「[Capture]」選項 - 只有「[Playback]」選項卡上的一個音量控制。使用ALSA在播放專用聲卡上捕捉播放
是否有可能創建一些虛擬的「xxx」設備,它將接受來自應用程序的流並通過2個流(副本)發送出去 - 第一個到真正的「hw:1,0」(到我的耳機)第二個到另一個虛擬設備「zzz」,它將提供捕獲能力,將該流提供給可打開「zzz」以捕獲的應用程序?
更新
我加ALSA迴環設備在內核,現在我有迴環設備。然後我發現工作.asoundrc(見下文),但是當我使用ffmpeg捕獲屏幕+聲音時,聲音比視頻更糟糕,這是一個很大的同步問題。因此,使用這個.asoundrc(下面)我可以使用hw:0,0(loopback device,hw:0,0 - play,hw:0,1 - capture)捕獲我發送給「默認」的內容。我也可以通過我的外部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
}
}
ALSA lib中conf.c:1686:(snd_config_load1)_toplevel_:4:9:意外的字符 ALSA lib中conf.c:3406:(config_file_open)/家庭/ XX /.asoundrc可能已老化或已損壞:請考慮刪除或修復它 – pavelkolodin
糟糕,'plug'後面有一個多餘的大括號。 –
謝謝!現在我正在努力解決ffmpeg中的同步問題:) – pavelkolodin