我正在使用jPlayer作为播放从服务器传输的MP3文件的网站插件。当您在网站中包含主脚本时,会在DOM结构中添加一个按钮,允许用户打开播放器。单击此按钮时,createElement()和appendChild()会添加播放器的结构(播放/暂停,后退,前进,停止按钮)。也是第二个脚本的实例,称为"播放"将包括在内。此脚本管理播放器的状态。点击播放器按钮调用播放脚本中的功能。
现在当您第一次按下播放时,jPlayer对象将被初始化,最后调用函数playCurrent()以播放队列中的当前MP3文件。
jPlayer对象的初始化:
___jQuery("#"+player_ID).jPlayer({
swfPath: scriptPath + "jquery.jplayer.swf",
ready: function() {
if (!stoppedByError) {
// move the cursor to part 0 and play it
if (!singleStringMode) {
moveCursor(0);
}
console.log("FIRST START");
// update the player status
setPlayerStatus(1);
// play the current text part
playCurrent();
}
},
ended: function(event) {
if (!stoppedByError) {
self.goToNext();
}
},
errorAlerts: false,
supplied: "mp3",
error: function(event) {
if (!stoppedByError) {
handlePlayerError();
}
}
});
开始播放的代码(在playCurrent()函数中):
___jQuery("#"+player_ID).jPlayer('setMedia', {
mp3: textParts[currentPart].mp3
//ogg: "sample.ogg"
}).jPlayer("play");
当然,在此代码之前检查MP3的指定URL(textParts [currentPart] .mp3),以确保已成功从服务器传输MP3。
所有这一切在Chrome,Firefox和较新版本的IE中的桌面PC上都能正常工作。但是,在某些移动设备(iOS,Android)上存在一个奇怪的错误:当您第一次按下播放按钮时,它会变为暂停按钮,但播放不会开始。只有当你再按两次按钮时(一次暂停播放,再一次再按一次),一切都像桌面浏览器一样。
我知道jPlayer的自动播放通常不适用于移动设备,因此此选项仅在移动设备上关闭。但我找不到任何好的解释为什么在第一次尝试时播放失败。我使用jConsole进行移动调试,没有任何错误。 我尝试的一件事是将一些静音虚拟MP3文件分配给就绪功能中的jPlayer实例,以确保在第一次启动播放器时某些音频可用,但它也没有帮助。
这似乎不是jPlayer的一般问题,因为我在相同的设备上测试了MP3播放的演示网站,它运行得很好。同样非常奇怪的是,这个问题不适用于Windows Mobile,只适用于iOS和Android。
在初次化jPlayer并首次启动它时可能出现什么问题?