Asterisk AudioSocketのソースを表示
←
Asterisk AudioSocket
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます: メール確認された利用者、
管理者
。
このページのソースの閲覧やコピーができます。
Asterisk 18~で実装されたTCPベースの『簡単な』オーディオ・ストリーム入出力。<br> <br> アプリケーション(app_audiosocket)とチャネルドライバ(chan_audiosocket)があるので注意。CODEC指定が可能なのはチャネルドライバのみ。<br> ==データフォーマット== 0 1 2 3..... PT LEN LEN Payload PT-ペイロードタイプ<br> LEN-ペイロード長(2byte)<br> Payload-ペイロード本体<br> <br> 最小のデータは切断(0x00,0x00,0x00)の3byte<br> ===ペイロードタイプ=== 注意:appで使えるのはPT=0x10の16bit 8kHzのみ。 0x00 – 切断(ソケットのクローズでも可) 0x01 – ペイロードはUUID(16byteバイナリ) 0x03 – ペイロードは1byte の DTMF(ASCII) 0x10 – ペイロードは符号付リニア, 16-bit, 8kHz, モノラル PCM 0x11 – ペイロードは符号付リニア, 16-bit, 12kHz, モノラル PCM 0x12 – ペイロードは符号付リニア, 16-bit, 16kHz, モノラル PCM 0x13 – ペイロードは符号付リニア, 16-bit, 24kHz, モノラル PCM 0x14 - ペイロードは符号付リニア, 16-bit, 32kHz, モノラル PCM 0x15 - ペイロードは符号付リニア, 16-bit, 44.1kHz, モノラル PCM 0x16 - ペイロードは符号付リニア, 16-bit, 48kHz, モノラル PCM 0x17 - ペイロードは符号付リニア, 16-bit, 96kHz, モノラル PCM 0x18 - ペイロードは符号付リニア, 16-bit, 192kHz, モノラルPCM 0xff – エラー:ペイロードはエラーコードを含む <br> 注意:LEN(ペイロード長)は2byteだが、NBOなのでビッグ・エンディアン。ペイロードに乗る音声データはリトル・エンディアン。 ==app_audiosocket== サンプル exten => 7000,1,NoOp exten => 7000,n,Answer() exten => 7000,n,Set(MYUUID=${UUID()}) exten => 7000,n,Audiosocket(${MYUUID},127.0.0.1:9093) exten => 7000,n,Hangup UUID形式で識別子を送出する必要がある。<br> app_audiosocketはオートアンサしないので明示Answer()する必要がある。<br> ==chan_audiosocket== *CLI> core show channeltype AudioSocket -- Info about channel driver: AudioSocket -- Device State: no Presence State: no Indication: no Transfer : no Capabilities: (codec2|g723|ulaw|alaw|gsm|g726|g726aal2|adpcm|slin|slin12|slin16|slin24|slin32|slin44|slin48|slin96|slin192|lpc10|g729|speex|speex16|speex32|ilbc|g722|siren7|siren14|g719|opus|jpeg|png|h261|h263|h263p|h264|h265|mpeg4|vp8|vp9|red|t140|t38|silk8|silk12|silk16|silk24) Digit Begin: no Digit End: yes Send HTML : no Image Support: no Text Support: no Capabilityとしては上記のようになっているが、AudioSocket側で使えるCODECはペイロードタイプで指定されるものだけ。それ以外には指定がない。(c(ulaw)とかやってみると、PT=0x10で送り出しているので、音がおかしなことになる。)<br> <br> サンプル<br> exten => 7000,1,NoOp exten => 7000,n,Set(MYUUID=${UUID()}) exten => 7000,n,Dial(Audiosocket/127.0.0.1:9093/${MYUUID}/c(slin48)) exten => 7000,n,Hangup ==テストコード== Audiosocketで受信し、単純エコーバックするだけのコード。<br> https://github.com/takao-t/asterisk-experimental/tree/main/audiosocket<br> <br> ヘッダを正しく処理すれば何の問題もなく簡単に使える単なるTCPのストーリームオーディオ。ただし、実際に試した範囲では以下の制限がある模様。<br> * Asterisk「が」受け取るストリームはUUIDやDTMFは受け付けられず、オーディオストリームだけの模様。 * つまりAsteriskはAudioSocketでDTMFは受け取れない(みなし音声、インバンドならいけるかも?)。 * uLawの電話機からAudiosocketのSlin 48kHz等もできるが、当然、音質は良くならないはず。
Asterisk AudioSocket
に戻る。
ナビゲーション メニュー
個人用ツール
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
ヘルプ
広告
サイトコンテンツ
コミュニティ
Asterisk
Asterisk 20
Asterisk 22
IP電話機
購入情報
導入事例
回線接続
ベンダー
ひかり電話
セキュリティ
イベント情報
スペシャル
Asterisk pjsip
ABS
黒電話 ハック
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報