jPlayer-通过Javascript实现回放功能
我在使用时遇到了一个问题,我在搜索了一些地方后认为,在这里它会被广泛使用,肯定会有人遇到类似的问题 我正在使用jPlayer来播放音频文件,我的用户希望通过特定的热键快进和快退功能。我注意到jPlayer并没有提供这种开箱即用的功能(它目前只通过点击进度条处理快进和快退)jPlayer-通过Javascript实现回放功能,javascript,jquery,audio,keypress,jplayer,Javascript,Jquery,Audio,Keypress,Jplayer,我在使用时遇到了一个问题,我在搜索了一些地方后认为,在这里它会被广泛使用,肯定会有人遇到类似的问题 我正在使用jPlayer来播放音频文件,我的用户希望通过特定的热键快进和快退功能。我注意到jPlayer并没有提供这种开箱即用的功能(它目前只通过点击进度条处理快进和快退) 理想情况下,只需按一次键即可切换快进(或倒带)。当再次按下同一个键时,音频文件将根据当前位置开始播放。我决定实施我自己的解决方案,目前看来效果不错。我想我会分享它,以防其他人遇到这样的问题 恕我直言。这只是一个概念证明: 必要
理想情况下,只需按一次键即可切换快进(或倒带)。当再次按下同一个键时,音频文件将根据当前位置开始播放。我决定实施我自己的解决方案,目前看来效果不错。我想我会分享它,以防其他人遇到这样的问题 恕我直言。这只是一个概念证明: 必要的Javascript:
//Handles the key down event (so the user can hold a key down to continue)
$(document).keydown(function (e) {
//Rewind
if (e.keyCode == 37 && (!rewinding)) {
rewinding = true;
//Pause the player
$("#player").jPlayer("pause");
RewindTrack();
rwaction = window.setInterval(function () { RewindTrack() }, 500);
}
else if (e.keyCode == 39 && (!fastforward)) {
fastforward = true;
//Pause the player
$("#player").jPlayer("pause");
FastforwardTrack();
ffaction = window.setInterval(function () { FastforwardTrack() }, 500);
}
});
//Ends the action
$(document).keyup(function (e) {
//Rewind
if (e.keyCode == 37) {
rewinding = false;
window.clearInterval(rwaction);
$("#player").jPlayer("pause");
}
else if (e.keyCode == 39) {
fastforward = false;
window.clearInterval(ffaction);
$("#player").jPlayer("pause");
}
});
//Related function
function GetPlayerProgress() {
return ($('.jp-play-bar').width() / $('.jp-seek-bar').width() * 100);
}
//Handles rewinding
function RewindTrack() {
//Get current progress and decrement
var currentProgress = GetPlayerProgress();
//Rewinds 10% of track length
var futureProgress = currentProgress - 10;
//If it goes past the starting point - stop rewinding and pause
if (futureProgress <= 0) {
rewinding = false;
window.clearInterval(rwaction);
$("#player").jPlayer("pause", 0);
}
//Continue rewinding
else {
$("#player").jPlayer("playHead", parseInt(futureProgress, 10));
}
}
//Fast forwards the track
function FastforwardTrack() {
//Get current progress and increment
var currentProgress = GetPlayerProgress();
//Fast forwards 10%
var futureProgress = currentProgress + 10;
//If the percentage exceeds the max - stop fast forwarding at the end.
if (futureProgress >= 100) {
fastforward = false;
window.clearInterval(ffaction);
$("#player").jPlayer("playHead", parseInt($('.jp-duration').text().replace(':', '')));
}
else {
$("#player").jPlayer("playHead", parseInt(futureProgress, 10));
}
}
//处理按键按下事件(因此用户可以按住按键继续)
$(文档).keydown(函数(e){
//倒带
如果(e.keyCode==37&&(!倒带)){
倒带=真;
//暂停播放
$(“#player”).jPlayer(“暂停”);
倒带轨道();
rwaction=window.setInterval(函数(){RewindTrack()},500);
}
否则如果(e.keyCode==39&&(!快进)){
快进=真;
//暂停播放
$(“#player”).jPlayer(“暂停”);
FastforwardTrack();
ffaction=window.setInterval(函数(){fastfrowardTrack()},500);
}
});
//结束行动
$(文档).keyup(函数(e){
//倒带
如果(e.keyCode==37){
倒带=假;
窗口清除间隔(rwaction);
$(“#player”).jPlayer(“暂停”);
}
否则如果(e.keyCode==39){
快进=假;
窗口清除间隔(ffaction);
$(“#player”).jPlayer(“暂停”);
}
});
//相关功能
函数GetPlayerProgress(){
返回($('.jp播放栏').width()/$('.jp搜索栏').width()*100);
}
//手柄倒带
函数RewindTrack(){
//获取当前进度和减量
var currentProgress=GetPlayerProgress();
//倒带10%的音轨长度
var futureProgress=当前进度-10;
//如果超过起始点-停止倒带并暂停
如果(未来进度=100){
快进=假;
窗口清除间隔(ffaction);
$(“#player”).jPlayer(“playHead”,parseInt($('.jp duration').text().replace(':','');
}
否则{
$(“#player”).jPlayer(“playHead”,parseInt(futureProgress,10));
}
}
(使用左箭头进行倒带,使用右箭头进行快进)我决定实施自己的解决方案,目前看来效果不错。我想我会分享它,以防其他人遇到这样的问题 恕我直言。这只是一个概念证明: 必要的Javascript:
//Handles the key down event (so the user can hold a key down to continue)
$(document).keydown(function (e) {
//Rewind
if (e.keyCode == 37 && (!rewinding)) {
rewinding = true;
//Pause the player
$("#player").jPlayer("pause");
RewindTrack();
rwaction = window.setInterval(function () { RewindTrack() }, 500);
}
else if (e.keyCode == 39 && (!fastforward)) {
fastforward = true;
//Pause the player
$("#player").jPlayer("pause");
FastforwardTrack();
ffaction = window.setInterval(function () { FastforwardTrack() }, 500);
}
});
//Ends the action
$(document).keyup(function (e) {
//Rewind
if (e.keyCode == 37) {
rewinding = false;
window.clearInterval(rwaction);
$("#player").jPlayer("pause");
}
else if (e.keyCode == 39) {
fastforward = false;
window.clearInterval(ffaction);
$("#player").jPlayer("pause");
}
});
//Related function
function GetPlayerProgress() {
return ($('.jp-play-bar').width() / $('.jp-seek-bar').width() * 100);
}
//Handles rewinding
function RewindTrack() {
//Get current progress and decrement
var currentProgress = GetPlayerProgress();
//Rewinds 10% of track length
var futureProgress = currentProgress - 10;
//If it goes past the starting point - stop rewinding and pause
if (futureProgress <= 0) {
rewinding = false;
window.clearInterval(rwaction);
$("#player").jPlayer("pause", 0);
}
//Continue rewinding
else {
$("#player").jPlayer("playHead", parseInt(futureProgress, 10));
}
}
//Fast forwards the track
function FastforwardTrack() {
//Get current progress and increment
var currentProgress = GetPlayerProgress();
//Fast forwards 10%
var futureProgress = currentProgress + 10;
//If the percentage exceeds the max - stop fast forwarding at the end.
if (futureProgress >= 100) {
fastforward = false;
window.clearInterval(ffaction);
$("#player").jPlayer("playHead", parseInt($('.jp-duration').text().replace(':', '')));
}
else {
$("#player").jPlayer("playHead", parseInt(futureProgress, 10));
}
}
//处理按键按下事件(因此用户可以按住按键继续)
$(文档).keydown(函数(e){
//倒带
如果(e.keyCode==37&&(!倒带)){
倒带=真;
//暂停播放
$(“#player”).jPlayer(“暂停”);
倒带轨道();
rwaction=window.setInterval(函数(){RewindTrack()},500);
}
否则如果(e.keyCode==39&&(!快进)){
快进=真;
//暂停播放
$(“#player”).jPlayer(“暂停”);
FastforwardTrack();
ffaction=window.setInterval(函数(){fastfrowardTrack()},500);
}
});
//结束行动
$(文档).keyup(函数(e){
//倒带
如果(e.keyCode==37){
倒带=假;
窗口清除间隔(rwaction);
$(“#player”).jPlayer(“暂停”);
}
否则如果(e.keyCode==39){
快进=假;
窗口清除间隔(ffaction);
$(“#player”).jPlayer(“暂停”);
}
});
//相关功能
函数GetPlayerProgress(){
返回($('.jp播放栏').width()/$('.jp搜索栏').width()*100);
}
//手柄倒带
函数RewindTrack(){
//获取当前进度和减量
var currentProgress=GetPlayerProgress();
//倒带10%的音轨长度
var futureProgress=当前进度-10;
//如果超过起始点-停止倒带并暂停
如果(未来进度=100){
快进=假;
窗口清除间隔(ffaction);
$(“#player”).jPlayer(“playHead”,parseInt($('.jp duration').text().replace(':','');
}
否则{
$(“#player”).jPlayer(“playHead”,parseInt(futureProgress,10));
}
}
(使用左箭头进行倒带,使用右箭头进行快进)$(“#播放器”).jPlayer(“暂停”,0);这在ipad/iphone上不起作用。你能帮我吗?$(“#player”).jPlayer(“暂停”,0);这在ipad/iphone上不起作用。你能帮我吗?