0

私は Android 用のストリーミング アプリで作業していて、奇妙なエラーに直面しています。私のストリーミング URL は、m3u および pls ファイルを含むデータベースに保存されます。これらのファイルは、正常に動作するストリーミング URL について解析されます。(ストリーミングURLにm3uまたはplsが含まれているかどうかのみを確認します)

MediaPlayer で一部のリンクが機能しないことがわかりました。例: ステーションには次のストリーミング リンクがありますhttp://drumstep-aacp.rautemusik.fm。MediaPlayer でリンクを開くと、Error (1,-2147483648)(通常はサポートされていないファイル形式) がスローされます。

ブラウザで同じリンクを開くと、ファイルにリダイレクトされますhttp://drumstep-aacp.rautemusik.fm/listen.pls。(これが2147483648エラーの理由だと思います)

私はすでに PLS-Parser を書いているので、これは実際には問題ではありませんが、PLS-File は次のようになります。

[playlist]
File1=http://drumstep-aacp.rautemusik.fm  //same link I entered at the beginning
Title1=#Musik.DrumStep
Length1=-1
NumberOfEntries=1
Version=2

もう一度ストリーム リンクを開こうとすると、無限ループが始まります。では、どうすればそのストリームを開くことができますか? (別の例はhttp://jam-aacp.rautemusik.fmです)

私の知る限り、例はシャウトキャストのリンクです...

4

1 に答える 1

0

ここでの問題は、リクエスト ヘッダーに帰着します。このサーバーは、ブラウザーと非ブラウザーの巧妙な検出を使用して、実際のストリーム URL にリダイレクトするかどうかを判断します。

このヘッダーでhttp://jam-aacp.rautemusik.fm/をリクエストすると、次の.plsファイルが取得されます。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

ここで、このヘッダーなしで同じ URL をリクエストすると、 にある実際のストリーム URL への 302 リダイレクトが返されますhttp://80.237.157.12:12005/

80.237.157.12:12005 にあるこのサーバーは、独自の検出機能を持つ SHOUTcast を実行しています。Acceptただし、ヘッダーの代わりに、User-Agent. ユーザー エージェント文字列に " Mozilla" が含まれている場合、サーバーは管理インターフェイスを送信します。それ以外の場合は、ストリーム データが送信されます。

要するに、Acceptヘッダーなしで、および をUser-Agent含まないを使用してリクエストを行う必要がありますMozilla。ところで、これは自分で簡単に把握でき、Fiddlerのコピーをダウンロードすることで問題を再現できます。

于 2013-02-24T14:40:40.813 に答える