chan_alsaがロードされると、アスタリスクはALSAデバイスをロックします。

chan_alsaがロードされると、アスタリスクはALSAデバイスをロックします。

オーディオをALSAデバイスにルーティングする拡張900を実装しています。また、ALSA経由で音楽を再生するmpdを使用しています。

スター15、OpenWrt 18.06

mpd.conf:

log_file "syslog"

bind_to_address "127.0.0.1"
bind_to_address "192.168.1.18"

input {
    plugin          "curl"
}

audio_output {
    type            "alsa"
    name            "sun4icodec"
    device          "hw:0,0"
    mixer_control   "Power Amplifier"
}

extensions.conf拡張に関連する部分は次のとおりです。

;SIP 900
exten => 900,1,NoOp(Testing calls to speakers. Dialing ${EXTEN} from ${CALLERID})
same => n,System(kill -9 `pgrep mpg123`)
same => n,System(amixer set 'Power Amplifier' 80%)
same => n,System(/usr/bin/aplay /var/lib/myapp/sounds/tone3.wav &)
same => n,System(sleep(4))
same => n,NoOp(Testing calls to speakers. Dialing ${EXTEN} from ${CALLERID})
same => n,Dial(CONSOLE/ALSA)
same => n,Hangup()
same => n,System(sleep(1))
same => n,System(amixer set 'Power Amplifier' 80%;)
same => n,System(sleep(4))

chan_alsaがロードされると、ALSAデバイスがロックされてmpdで何かを再生すると、次のエラーが発生します。

aplay: main:722: audio open error: Resource busy

私はこれに会ったVoIP情報しかし、これを実装する方法がわかりません。ソフトウェアとハ​​ードウェアの混在を調整する必要があるかどうかはわかりません。

  • 出力デバイス=<ALSA デバイス名>

    サウンドの再生(つまりリスニング)に使用されるALSAデバイスの名前を示します。ここで指定されたデバイス名は変更されずにALSAサウンドレイヤに渡されるため、すべてのALSAデバイス名が有効である必要があります。 警告する: Asterisk は、Asterisk プロセスの全期間中、ここで指定された ALSA デバイスをロックできます。 Asteriskが出力デバイスを独占しないようにするには、ソフトウェアおよび/またはハードウェアのミキシング設定を調整する必要があります。

答え1

これは、同時アクセスを可能にするミキサーが必要であることを意味します。

ただし、あなたの使命は保健省を通じて簡単に行うことができます。

関連情報