2012-02-10 8 views
1

まあ、私は音楽の素晴らしいプレイリストを作成しようとしているだけで、PHPファイルを使用しています。今1つのPHPファイルと複数のメディアファイルでプレイリストを作成するには?

、このコードで、私は、単一のメディアファイルソースから曲をストリーミングすることができます。

<?php 

    // Try and open the remote stream 
    if (!$stream = fopen('http://example.com/audio.mp3', 'r')) { 
    // If opening failed, inform the client we have no content 
    header('HTTP/1.1 500 Internal Server Error'); 
    exit('Unable to open remote stream'); 
    } 

    // It's probably an idea to remove the execution time limit - on Windows hosts 
    // this could result in the audio stream cutting off mid-flow 
    set_time_limit(0); 

    // Inform the client we will be sending it some MPEG audio 
    header('Content-Type: audio/mpeg'); 

    // Send the data 
    fpassthru($stream); 
    // Thanks DaveRandom 

?> 

ので、アイデアはほとんど単純です:一つのPHPファイルと、プレイリストを作成します。 phpファイルは最初の曲をストリーミングしてから、前に設定した別の曲を再生し、phpファイルのすべてのソースを繰り返し再生します。

ありがとうございました。

+0

一度に1つのmp3を処理するための単一のPHPファイルを用意し、クライアント側のスクリプティングを使用して非同期的に呼び出すことをお勧めします(つまり、jQueryの$ .get())。 – wyqydsyq

答えて

1

ストリーミングはリアルタイムプロトコルです。 PHPは単一のhttp要求 - 応答プロトコルを使用しますが。 これは、プレイヤーが別の曲を自動的に再生するためにPHPが自動的に呼び出されることはないということです。最高でも、プレイヤーはトラックの最後で停止し、リスナーが再びプレイをクリックしたときにのみ、2番目のリクエストが送信されます。

もう1つのトラックを再生するための2番目のリクエストを識別する方法が必要です。セッションはおそらく、非ブラウザベースのユーザーエージェント(メディアプレーヤーなど)では動作しません。あなたはあなたのPHPクエリ文字列に一意のidを持つことができ、ローカルdb/etcを使って前回再生されたものを追跡することができます。

どちらの方法でも、トラックの自動切り替えには、より多くのPHPコード、HTTPバッファチェック、さらにはmp3ファイルの解析が必要になるので、最後のストリームと次のmp3ファイルヘッダー/ id3/

1

@nomaDは、クライアント側のスクリプトを使用してトラックの分数を計算してから、タイマーを実行して、新しいトラックで別のPHPを呼び出すだけで時間が来ると言いました。これをチェックする必要がありますhttp://www.schillmania.com/projects/soundmanager2/demo/api/

関連する問題