オンラインでオーディオをストリーミングできる小さなWebサイト(ラジオステーション)を作成しようとしていますが、いくつか質問があります。1.すべての音楽ファイルをデータベースにインデックス付けする必要がありますか、それともファイルシステムからランダムにファイルを選択して再生できますか。2. ajaxを使用して新しい曲をロードする必要があるのはいつですか(最後に終了した直後、またはファイルへのリンクを使用してサーバーから応答を取得する数秒前ですか?)フルタイムでやり直しますか?
4003 次
2 に答える
1
ストリーミングに関しては、@Tigraine
Nowに同意します。Single
song play:
1 個々の曲を再生する場合は、ajax の呼び出しで、要求された曲のオーディオ URL を含む json 応答でキーと値のペアを返します。
プレイリストの場合:
2. プレイリストに追加されたときと同じ配置でオーディオ URL を含む配列を返す必要があります。
次に、Java スクリプトで変数
var current_song
var total_songを宣言します。js
オーディオ プレーヤーでは、通常、曲の完了を検出するメソッドがあり、曲の完了時に曲カウンターを
current_song+=0としてインクリメントできます。
カウンターが 1 にリセットを終了するために到達したとき:
サンプル コードは:
ここで私は Jplayer を使用しています。
var current_song = 0;
var total_songs;
var song_id_array;
$.ajax({
url:"<%=url_for :controller => 'cont_x',:action => 'song_in_playlist'%>",
data:'playlist_id=' + encodeURIComponent(playlist_id),
cache:false,
success:function (data) {
song_id_array = data.array; //data.array variable contain's the audio URL's array of songs inside selected playlist which is returned by the action //
total_songs = song_id_array.length;
}
})
current_song = 0;
play_right_song(current_song);
}
function play_right_song(current_song) {
$("#jquery_jplayer_1").jPlayer("destroy");
var audio_url_inside = song_id_array[current_song];
$('#jquery_jplayer_1').jPlayer({
ready:function (event) {
$(this).jPlayer("setMedia", {
mp3:audio_url_inside
}).jPlayer("play");
},
ended:function () { // The $.jPlayer.event.ended event
current_song += 1;
if (current_song >= total_songs) {
current_song = 0;
}
play_right_song(current_song);
},
swfPath:"<%= asset_path('Jplayer.swf')%>",
supplied:"mp3"
});
}
プレイリスト内の次の曲と前の曲を処理したい場合は、コードを要求してください。答えを更新します。
于 2012-10-04T19:59:16.213 に答える
1
あなたは間違った質問をしていると思います。
- ブラウザでオーディオを再生する方法を考える必要があります (どのプレーヤーを使用しますか?)。
- ファイルをクライアントに配信するために Ruby on Rails は必要ありません。Web サーバー (Apache または Nginx) から直接要求できます。
- Rails は、オーディオを再生する Player と一緒に Web サイトをレンダリングする場合にのみ必要です。使用しているプレーヤーに応じて、javascript を介して制御してサーバーから次の曲をリクエストするか、クライアントに静的なプレイリストを書き込んで再生することができます。
于 2012-09-12T21:36:00.403 に答える