gpt4 book ai didi

javascript - 使用 JavaScript 在 html5 自定义播放器中加载音频时加载/缓冲文本

转载 作者:行者123 更新时间:2023-11-29 23:18:25 24 4
gpt4 key购买 nike

我找到了一个自定义的 html5 音频播放器并成功地重新设计了它,现在我想在播放器加载音频时添加一个“加载/缓冲”文本(否则用户可能会因为点击播放后没有任何反应而吓坏)。

下面是代码解释:

function calculateTotalValue(length) {
var minutes = Math.floor(length / 60),
seconds_int = length - minutes * 60,
seconds_str = seconds_int.toString(),
seconds = seconds_str.substr(0, 2),
time = minutes + ':' + seconds

return time;
}

function calculateCurrentValue(currentTime) {
var current_hour = parseInt(currentTime / 3600) % 24,
current_minute = parseInt(currentTime / 60) % 60,
current_seconds_long = currentTime % 60,
current_seconds = current_seconds_long.toFixed(),
current_time = (current_minute < 10 ? "0" + current_minute : current_minute) + ":" + (current_seconds < 10 ? "0" + current_seconds : current_seconds);

return current_time;
}

function initProgressBar() {
var player = document.getElementById('player');
var length = player.duration
var current_time = player.currentTime;

// calculate total length of value
var totalLength = calculateTotalValue(length)
jQuery(".end-time").html(totalLength);

// calculate current value time
var currentTime = calculateCurrentValue(current_time);
jQuery(".start-time").html(currentTime);

var progressbar = document.getElementById('seekObj');
progressbar.value = (player.currentTime / player.duration);
progressbar.addEventListener("click", seek);

if (player.currentTime == player.duration) {
$('#play-btn').removeClass('pause');
}

function seek(evt) {
var percent = evt.offsetX / this.offsetWidth;
player.currentTime = percent * player.duration;
progressbar.value = percent / 100;
}
};

function initPlayers(num) {
// pass num in if there are multiple audio players e.g 'player' + i

for (var i = 0; i < num; i++) {
(function() {

// Variables
// ----------------------------------------------------------
// audio embed object
var playerContainer = document.getElementById('player-container'),
player = document.getElementById('player'),
isPlaying = false,
playBtn = document.getElementById('play-btn');

// Controls Listeners
// ----------------------------------------------------------
if (playBtn != null) {
playBtn.addEventListener('click', function() {
togglePlay()
});
}

// Controls & Sounds Methods
// ----------------------------------------------------------
function togglePlay() {
if (player.paused === false) {
player.pause();
isPlaying = false;
$('#play-btn').removeClass('pause');

} else {
player.play();
$('#play-btn').addClass('pause');
isPlaying = true;
}
}
}());
}
}

initPlayers(jQuery('#player-container').length);

CodePen 上的玩家代码(来源)

  1. 我希望一些文本显示在显示的相同“跨度”中加载媒体时的“开始时间”(请参阅​​ CodePen);
  2. 文本“‘正在加载’。 '正在加载..' '正在加载...' “必须改变在加载媒体时循环播放;
  3. 加载时,“loading”文本必须在“start时间”,就像现在一样。

所以基本上我想在开始时间放一些文本,但它只显示零

我是 JS 新手

这就是为什么我需要一些帮助或指出正确的方向

最佳答案

您可以使用音频播放器的“readyState”事件来显示隐藏加载。已经有一个“SetInterval”甚至被触发了,所以我们可以添加这段代码来显示/隐藏“加载”

1st添加加载元素(你可以把它放在任何你想要的地方"

<h3 id="loading" style="display:none;">Loading</h3>

现在让我们添加代码来检查“SetInterval”中的“readystate”

if(player.readyState>0&&player.readyState<4){
$("#loading").show();
}
else{
$("#loading").hide();
}

您可以阅读更多关于“就绪状态”的信息 here

/根据要求,我更改了代码以使用开始时间作为加载,为了使其正常工作,我们不必在 html 中添加任何内容,但需要在 JS 中进行一些更改

首先,在“else” block 中的“togglePlay”函数支付条件中添加这个。

$(".start-time").html("Loading...");

在此之后,“initProgressBar()”函数替换了“jQuery(”.start-time”).html(currentTime);”使用以下代码

 if (player.readyState === 4) {
jQuery(".start-time").html(currentTime);
}

那么它是如何工作的,当你点击播放按钮时,开始时间文本将显示为“正在加载”但是一旦文件被加载并且播放器准备好播放文本将更改为“开始时间”,希望它作品。还更新了 CodePen为了更好的理解

您可以在 CodePen 中找到完整代码

关于javascript - 使用 JavaScript 在 html5 自定义播放器中加载音频时加载/缓冲文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51775069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com