
Linux マシンでオーディオを設定するためのヘルプやアドバイスを求めています。
スピーカーから出力されるオーディオを HDMI 出力に複製したいと思います。
私の設定を確認してください:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: Generic Digital [Generic Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC662 rev3 Digital [ALC662 rev3 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
# aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
hdmi:CARD=HDMI,DEV=0
HDA ATI HDMI, Generic Digital
HDMI Audio Output
sysdefault:CARD=Generic
HD-Audio Generic, ALC662 rev3 Analog
Default Audio Device
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Front speakers
surround21:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Digital
IEC958 (S/PDIF) Digital Audio Output
そしてその
サウンド.conf
pcm.!default{
type plug
slave.pcm "speakerphat"
}
ctl.!default {
type hw card 1
}
pcm.speakerphat {
type softvol
slave.pcm "plughw:1"
control.name "Master"
control.card 1
}
スピーカーのサウンドが有効になりました:
amixer -q sset 'Master' unmute
amixer -q sset 'IEC958' unmute
答え1
この回答は、ALSA のみのサウンド システムのコンテキストで機能する可能性のある回答です。
以降のすべてのコードは連結され、既存の asound.conf 定義を置き換える必要があります。
定義をカスケードすることで、これらすべてをはるかに短くすることができます。ただし、魔法理解するのが難しくなり、デバッグもさらに難しくなります… ;-)
再サンプリングが必要な場合に使用するレートコンバータの定義を始めましょう(必要な場合はdmixが再サンプリングします)
defaults.pcm.rate_converter "speexrate_best"
次に、主にデバイスにエイリアスを定義します。非ブロック複数のアプリケーションが関連付けられたデバイスを同時に開くことを可能にします。
pcm.ALC662{
type hw
card Generic
device 1
subdevice 0
nonblock true}
ctl.ALC662{
type hw
card Generic}
pcm.ATI{
type hw
card HDMI
device 0
subdevice 0
nonblock true}
ctl.ATI{
type hw
card HDMI}
それでは、ミックスプラグイン定義(複数の音源のミキシングと必要に応じてリサンプリングを可能にする)。サウンド出力デバイスごとに1つ
。ipc_キー(共有メモリ識別子)。一意の番号を選択してください。(最初の起動をチェックしてくださいsudo ipcs -ma
)
また、必要に応じてドキュメント化されていることにも注意してください。私のシステムでは、ipc_key を指定してもまったく役に立たないことに今気づきました。おそらく、sysV のような ipcs の使用を知らないうちに削除したアップグレードがあったのでしょう...?
また、自由に適応してください。期間サイズ&バッファサイズレイテンシー要件とシステム機能に応じて…
pcm.analog {
type dmix
ipc_key 219345
slave{
pcm ALC662
format S32_LE
period_size 1024
buffer_size 4096 }}
pcm.hdmi {
type dmix
ipc_key 219346
slave{
pcm ATI
format S32_LE
period_size 1024
buffer_size 4096 }}
さて、魔法: 複数の(ステレオVG 2チャンネル)ストリームを1つの(ステレオVG 2チャンネル)に結合します。マルチプラグイン:
pcm.analogHDMI {
type multi
slaves.a.pcm "analog"
slaves.a.channels 2
slaves.b.pcm "hdmi"
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 はインターリーブ形式ではなく、「複雑な」形式であることに注意してください。したがって、インターリーブ形式 (または非インターリーブ形式) のみを処理できるアプリケーションからはアクセスできません。このような場合は、この PCM をルート プラグインまたはプラグ プラグインでラップします。
ウィルコ、さあルートチャネル (ソース.宛先ボリューム):
pcm.2in1 {
type route
slave.pcm "analogHDMI"
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1}
もちろん、これをデフォルトの alsa 出力にしたい場合は、以下を追加する必要があります:
pcm.!default {
type plug
slave.pcm "2in1"}
さらなる参照。