私のプログラムにHDMIに出力するように指示できます。またはヘッドフォンジャックは素晴らしいですが、同時に両方のデバイスに出力されるasound.confで仮想デバイスを作成する方法はありますか?
この構成は動作に非常に近いですが、ヘッドフォンジャックにある種のパルスノイズを生成します。
pcm.internal {
type hw
card 1
device 0
}
pcm.hdmi_hw {
type hw
card 0
device 7
}
pcm.hdmi_complete {
type softvol
slave.pcm hdmi_hw
control.name hdmi_volume
control.card 1
}
pcm.sirmix {
type plug
slave.pcm {
type multi
slaves {
a { channels 2 pcm "internal" }
b { channels 2 pcm "hdmi_complete" }
}
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 ]
[ 0 1 0 1 ]
]
}
gst-launch-1.0オーディオテストファイル!オーディオ変換! alsasinkデバイス="sirmix"
答え1
したがって、上記の設定とパイプラインは本質的に優れています。 ALSAフォーラムに行くと、上記のようなものをお勧めします。ただし、rate
出力の一致は別途考慮する必要があります。
pcm.internal {
type hw
card 1
device 0
rate 48000
}
pcm.hdmi_hw {
type hw
card 0
device 7
rate 48000
}
最終設定ファイルは次のとおりです。これには、個々の出力デバイスと共有上位デバイスのボリュームコントロール、および複数の再生プロセスにわたるミキシングが含まれます。
pcm.m_headphone_mixed {
type dmix
ipc_key 595900
ipc_perm 0666
slave {
pcm "hw:1,0"
rate 48000
period_time 0
period_size 1024
buffer_size 4096
format S16_LE
}
bindings {
0 0
1 1
}
}
pcm.m_headphone_rate_adjusted {
type rate
slave {
pcm "m_headphone_mixed"
rate 48000
}
}
pcm.m_headphone {
type softvol
slave.pcm m_headphone_rate_adjusted
control.name m_headphone_volume
control.card 1
}
pcm.m_hdmi_mixed {
type dmix
ipc_key 595901
ipc_perm 0666
slave {
pcm "hw:0,7"
rate 48000
period_time 0
period_size 1024
buffer_size 4096
format S16_LE
channels 2
}
bindings {
0 0 # channel 0 -> channel 0
1 1
}
}
pcm.m_hdmi {
type softvol
slave.pcm "m_hdmi_mixed"
control.name m_hdmi_volume
control.card 1
}
pcm.m_all_base {
type plug
slave.pcm {
type multi
slaves {
a { channels 2 pcm "m_hdmi" }
b { channels 2 pcm "m_headphone" }
}
bindings [
{ slave a channel 0 }
{ slave a channel 1 }
{ slave b channel 0 }
{ slave b channel 1 }
]
}
}
pcm.m_all_routed {
type route
slave.pcm "m_all_base"
slave.channels 4
ttable [
[ 1 0 1 0 ] # route left to channels 0,2
[ 0 1 0 1 ] # route right to channels 1,3
]
}
pcm.m_all {
type softvol;
control.name m_all_volume;
control.card 1
slave.pcm "m_all_routed"
}
pcm.!default "m_all"
これは、標準のDellデスクトップコンピュータがヘッドフォンジャックとDisplayPortの両方に出力できるようにするためです。