我正在尝试写一个可以在线播放音频的小网站,得到了几个问题: 1.我是否必须将我所有的音乐文件索引到数据库中,或者我可以随机地从文件系统中挑选文件并播放它。2.什么时候我应该使用ajax来加载新歌(就在最后完成之后,或者在几秒钟之前从服务器得到带有文件链接的响应?) 3.是否值得使用ajax,或者更好的make list,它将播放它的全部时间,然后重新开始?
发布于 2012-09-13 05:36:00
我想你问错问题了。
发布于 2012-10-05 03:59:16
关于我和@Tigraine的流媒体
现在,
单曲播放:
1如果您想播放一首单独的歌曲,那么在ajax的action调用中,在json response中返回一个键值对,其中包含所请求歌曲的音频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"
});
}
如果你想处理播放列表中的下一首和前一首歌曲,只需询问代码即可。我会更新答案的。
https://stackoverflow.com/questions/12396391
复制相似问题