4

現在、アプリケーション内の AirPlay デバイスの問題に直面しています。このトピック は、airplay デバイスの構成のサンプルとして使用しました。しかし、現在、次の 2 つの問題の解決策が見つかりませんでした。

まず、同時入力をサポートしていないため、airplay デバイスが現在ビジーかどうかを検出できませんでした。CoreAudio 内のプロパティを見つけようとしましたが、運がありませんでした。

私が見つけた 2 番目の問題は、パスワードが有効になっている airplay デバイスに関するものでした。パスワードが入力されたかどうかに関係なく、通知を受け取ることができません。その結果、アプリケーションはそのイベントのいずれかで必要に応じて反応できません

助けてくれてありがとう。

4

1 に答える 1

1

私は新しい CoreAudio API に慣れていないので、もっと簡単な方法があるかもしれません。昨年、同じ問題を解決した方法を次に示します。

Bonjour (マルチキャスト DNS または Zeroconf とも呼ばれます) を使用して、デバイスがパスワードを必要とするかどうかを判断できます。ソース名と CoreAudio 情報を一致させることができるはずです。オーディオ AirPlay の場合、_raop._tcpデバイスを確認する必要があります。ターミナルからの操作は次のとおりです。

dns-sdまず、近くの AirPlay デバイスを検出します (このコマンドはmDNSMountain Lionの前に呼び出されることに注意してください)。

ローレント ~ $ dns-sd -B _raop._tcp
_raop._tcp の参照
日付: ---2013年1月15日(火)---
17:37:31.977 ...開始中...
ドメイン サービス タイプ インスタンス名の場合のタイムスタンプ A/R フラグ
17:37:31.977 2 4 ローカルを追加します。_raop._tcp. 406C8F53F1DD@iMac デ ローラン

次に、AirPlay インスタンスの完全なレコードを取得します。

laurent ~ $ dns-sd -L "406C8F53F1DD@iMac de Laurent" _raop._tcp ローカル
ルックアップ 406C8F53F1DD@iMac de Laurent._raop._tcp.local
日付: ---2013年1月15日(火)---
17:43:47.097 ...開始中...
17:43:47.098 406C8F53F1DD@iMac\032de\032Laurent._raop._tcp.local. iMac-de-Laurent.local.:5000 (インターフェース 4) でアクセスできます。
 et=0,1 ek=1 ss=16 raAudioFormats=ALAC,L16 tp=UDP pw=false txtvers=1 ramach=iMac12,1 vn=3 md=0,1,2 sv=false sm=false ch=2 sr =44100 rast=afs rastx=iafs cn=0,1

pw=falseパスワードがないことを示します。これが基本的な考え方です。DNSServiceResolveで同じことを行う必要があります。

現在、私が知っているデバイスがビジーかどうかを確認する唯一の方法は、実際に接続することです。内部的に AirPlay は RTSP を使用するため、次のリクエストを送信できます。

RTSP/1.0 オプション *
# 空行

デバイスがステータス 453 で応答する場合は、既にストリーミングされていることを意味します。

詳細については、私のAirPlay RTSP スタックを確認してください。

于 2013-01-15T17:03:43.507 に答える