2012-04-06 23 views
1

私はアンドロイドでラジオストリームスイッチャーを実装しようとしています。私がやりたい何を、所望の順序で、このです:endTimeのでは、そのステーション 現在再生中の曲の開始時刻と終了時刻を取得します

  • から、現在再生中の曲のendTimeのを取得するラジオ局
  • ストリーミング

    1. スタート - デルタは、私が欲しいですステーションのリストをスキャンして、区間内に新しい曲があるステーションのリストを取得したい[endTime、endTime + Delta ']
    2. [3]の結果セットからストリームに切り替えてから繰り返す

    ラジオ局をストリーミングできます(問題ありません)。ソングが変更されたときに通知を受け取ることができます(メタデータを取得するためにstreamscraperを使用し、メタデータが変更されたときに通知を生成します)。しかし、私が見つけることができなかったことは、次の操作を行うことが可能であるかどうかです:

    1. 現在再生中の曲
    2. のendTimeはは局のリストをスキャンし、開始している曲をゲット(曲の開始時間を取得する)またはすぐに開始する可能性のある曲(そのストリームの現在の曲のendTimeが近くにある場合、または実際にストリームプログラムを事前に取得できる場合)。

    これが可能かどうか誰にでも教えてもらえれば、私は義務づけられます。

  • 答えて

    4

    これはできません。再生を停止するまで、再生中の終了時刻を知ることはできません。データは存在せず、すべてのストリームに適用されるわけでもありません。

    +1

    ありがとうございます。私は今、この機能を実装できないことをさらに説明する別の理由があります。乾杯。 – rahulthewall

    -1

    ストリームは、mp3のシームレスなストリームで構成されています ストリームは何をしているのですか...それは別のmp3をスティッチします1つの大きな流れに

    しかし、ストリーム内のIDタグを追跡します。終了を見つけて から開始するか、またはこれらがトラックスタートやその他の固定位置で正確に開始するかどうかはわかりません。

    ほとんどのステーションは、彼らが知らないだけで原因サーバがその新しいトラックが がどうなるか、古いものと新しいトラックの間に小さな休憩に を決定しなければならほとんど使用自動DJのプレイリストを次のトラック についての情報を先に送ってはいけませんつまり、それは古いトラックが再生されている間、それを決めることはありません。

    いくつかのステーションは、次のトラックが となる情報を送信しますが、ほとんどの場合、その情報はストリーム自体にはありません。

    多分トリックはつまり、あなたのリスナーの
    を遅延を追加することができますどのようなリスナーが現在
    を聞いていると、(数分または1つの完全なトラックまで)古いです

    作成する方法SHUREありませんそのような遅延...現在の曲が終了したとき

    あなたの(遅延しない)アプリケーションでしょう(たぶん)通知を多分あなたはそれ
    (バッファ)を記録する必要があり、(あなたのアプリやいくつかの追加のサーバーを経由して)遅延でそれを再生
    新しいID2/3タグで新しいものが開始されているため...現在の遅延のある曲が終了したときにリスナーを新しいストリームに切り替えます。

    は異なる...表面の下に、アプリケーションが

    (聞き手に対して)先に見ているあなたはShoutcastはとIDタグプロトコルを研究する必要があると述べました。 追加の無音検出も役立ちます(簡単ではありません)。

    いつも働いていないかもしれません...いくつかのステーションはIDタグを送っていません 他の人がトラックをクロスフェード(無音)しています。

    またはそのような何か...幸運私はコードanything..itsを傾けるだけで理論 私はこのトリックを使用するために、いくつかのShoutcastはリッパーを疑う...私は、彼らが(並列)multitpleストリームをスキャンし、この を使用すると仮定ため特定のプリセットアーティスト - トラック。 おそらく、それらのリッパーをリバースエンジニアリングすることによっていくつかのアイデアを得ることができます。 私はラジオを持っているので、私はこれらのトリックのファンではないので、彼らは私から盗んだので 私は権利を支払う....多くのリッパーにオンラインラジオを殺すだろう。

    とにかく役に立ったと思ったら、私はあなたのアイデアを見てはいけません。
    次のすべてのトラックを1つずつ別のトラックに切り替えるのは楽しい経験のようです。
    良いラジオスタジオは慎重に(オーダーされた)プレイリスト
    を持っています。

    このための唯一の便利な目的は、多くのオンライン局のための... ストリーム観察parralelでの多数のプリセット曲/アーティストをそらすと希望トラックが再生されたときにそれらを記録することができ、自動リッパー を構築するために、おそらくですそれらのリッパーは既に大きな問題です。リッパーとオンラインラジオの10%以上が死んでいます...その結果、良質で独立した音楽はもはや利用できなくなります...そして、私たちはYoutubeと他だけでつかまります あなたが他の有用な有用性を持っているのであれば、興味があります。 目的。

    +0

    ありがとうございました...もう一度お聞きになりません。 – dutchguy

    +0

    HTTP経由の連続したMP3ストリームにはID3タグが含まれていません。もしそうなら、オーディオは壊れているでしょう。自動DJアプリケーションとスクリプトは、盲目的にMP3ファイルをつなぎ合わせることはありません。ストリームを一緒にステッチする必要があります。オーディオを再エンコードする人もいます(ビットリザーバーの問題を扱うよりもずっと簡単です)。 – Brad

    +0

    @ブラッド:mp3にはiD3タグが含まれていません...もしオーディオが壊れていたら...もちろんそうではありません...彼らはiD3タグを含んでいます... mp3ストリームも同様にiD3を含んでいますタグ。 – dutchguy

    0

    私は、あなたがSHOUTcastを参照しているものに似た何かをすることができました。 Icecastのログファイルがどのようにフォーマットされているか分かりませんが、PHPを使って基本的に "Song Change"イベントのログを見ることができました。

    これができたら、必要に応じてコードを実行できます。再生中のタイトルの長さを知りたい場合は、曲が更新されたらタイマーを開始し、もう一度曲が変更されたらタイマーを停止することができます。

    これはややこしいですが、うまくいきます.. www.soundcheck.xyz - リアルタイムで現在の再生中の曲を自動的にTwitterに投稿します。

    関連する問題