たとえば、クエリからの xml 応答から取得した SoundCloud URL からトラックを再生するにはどうすればよいですか
<stream-url>https://api.soundcloud.com/tracks/31164607/stream</stream-url>
私はそれが次のように簡単だったと思うべきでした:
https://api.soundcloud.com/tracks/31164607/stream&client_id=my_client_id
それでも私は得る
<error>401 - Unauthorized</error>
私がやりたいことは、Silverlight MediaElement でそれを使用することだけなので、必要なのは、MediaElement の Source プロパティに何らかの URL を設定することだけです。
約 2 年前に書いたアプリケーションを確認したところ、パブリック トラックのストリーム URL へのアクセスは次のように簡単でした。
http://api.soundcloud.com/tracks/18163056/stream&consumer_key=MY_CONSUMER_KEY
ただし、これは機能しなくなったようです。
たとえば、C# でそのときしなければならなかったのは、次のことだけでした。
MediaElement me = new MediaElement();
me.Source= new Url("http://api.soundcloud.com/tracks/18163056/stream&consumer_key=MY_CONSUMER_KEY");
me.Play();
ヒントをいただければ幸いです。
Microsoft フォーラムで、再生が開始される前にストリーム全体を消費しないと、SoundCloud が Windows 8 Metro デバイスにストリーミングできない可能性があることを示唆しているように思われる返信がありました。ヘッダーを使用する代わりに、URL クエリ文字列で完全に実行する必要があります。
(次の回答は、次の質問に対する回答です。「MediaElement を使用して http でオーディオ ストリームにアクセスできますが、https 経由でアクセスする必要があり、最初のヘッダーに oAuth 情報を追加する必要があります。 MediaElement を使用する場合、これはどのように行われますか? また、それができない場合、ストリーミングにヘッダー認証が必要な Metro 8 でオーディオ フィードを消費するための回避策は何ですか?')
「基になるネットワーク ストリームへの直接アクセスは、現在 MediaElement によって許可されていません。このため、現在、HTTP 要求のヘッダーを変更して追加の認証情報を含める方法はありません。ただし、URL を制御することはできます。理論的には、HTTP GET リクエスト パラメータを必要な oAuth クレデンシャルに変換する HTTP プロキシ サービスをセットアップすることができます. これは単なる理論上の回避策であることに注意してください. 実際には異なる動作を見つけるかもしれません. 別の理論的な回避策は、oAuth を自分で処理することです. raw ストリーム ソケットを介して、"Set Source" および "Random Access Stream" を介して、返されたメディア データを MediaElement に渡します。この方法には大きな制限があることに注意してください。"Random Access Stream" を使用するにはME では、ME にデータを渡す前に、すべてのデータが利用可能であることを確認する必要があります。」
プロキシ サービスは、すべてのストリームがプロキシを経由する必要があるため、無料で配布されるだけのアプリケーションではスケーラブルではありません。また、raw ストリーム ソケットは、これを回避しますが、ファイル全体がダウンロードされるまで再生を開始できないことを意味します。これは、現在のすべての UX (ユーザー エクスペリエンス) ガイドラインに反します。
繰り返しになりますが、ヘッダーを使用する代わりにクエリ文字列で認証全体を実現する方法についてのヒントや情報があれば、感謝します!