我正在尝试编写可以在线播放音频的小型网站(广播电台)并且几乎没有问题: 1.我是否必须将我的所有音乐文件索引到数据库中,或者我可以随机从文件系统中选择文件并播放它。 2.我应该何时使用ajax加载新歌曲(在最后一次完成之后,或者在几秒钟之前从服务器获得带有链接到文件的响应?) 3.是否值得使用ajax或更好的制作列表,它将播放全部时间然后重新开始?
答案 0 :(得分:1)
我认为你问的是错误的问题。
答案 1 :(得分:1)
关于流媒体我与@Tigraine的合作
现在,
单曲演奏:
1如果你想播放单曲,那么在你的ajax号召性用语中,会在json响应中返回一个键值对,其中包含所请求歌曲的音频URL。
对于播放列表:
2.您应该返回一个包含音频URL的数组,其排列方式与添加到播放列表中的相同
然后在你的java脚本中声明变量
var current_song
var total_song
在js音频播放器中,我们通常有一些方法可以检测歌曲何时完成,然后在歌曲完成后,您可以将歌曲计数器增加为
current_song + = 0
当计数器到达结束时将其重置为一个:
示例代码是:
在这里,我使用的是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"
});
}
如果您想要处理播放列表中的下一首和上一首歌,只需询问代码即可。我会更新答案。