Простой таймер PHP
В настоящее время у меня есть веб-сайт, который позволяет загружать аудио, и вы можете создать плейлист из этих загрузок. Когда вы загружаете, у меня есть getID3(), чтобы получить продолжительность и сохранить ее в базе данных.
В настоящее время у меня есть файл автозапуска, однако цель длительности в базе данных состоит в том, чтобы сделать таймер, который будет принимать это число и будет вести обратный отсчет во время воспроизведения песни. Когда он достигнет значения "длительность" в базе данных, я хочу, чтобы он затем загружал новую песню для потоковой передачи. Каков наилучший способ сделать это?
Для получения дополнительной информации, есть ли способ узнать текущее время, если переместить ползунок в середину песни, чтобы таймер мог наверстать упущенное? Или есть лучший способ сделать это даже без использования таймера?
2 ответа
Вы можете использовать класс таймера
<?php
class Timer {
var $classname = "Timer";
var $start = 0;
var $stop = 0;
var $elapsed = 0;
# Constructor
function Timer( $start = true ) {
if ( $start )
$this->start();
}
# Start counting time
function start() {
$this->start = $this->_gettime();
}
# Stop counting time
function stop() {
$this->stop = $this->_gettime();
$this->elapsed = $this->_compute();
}
# Get Elapsed Time
function elapsed() {
if ( !$elapsed )
$this->stop();
return $this->elapsed;
}
# Resets Timer so it can be used again
function reset() {
$this->start = 0;
$this->stop = 0;
$this->elapsed = 0;
}
#### PRIVATE METHODS ####
# Get Current Time
function _gettime() {
$mtime = microtime();
$mtime = explode( " ", $mtime );
return $mtime[1] + $mtime[0];
}
# Compute elapsed time
function _compute() {
return $this->stop - $this->start;
}
}
?>
или вы можете проверить документы для класса таймера здесь
Используя звуковой тег html 5, вы можете позволить JavaScript определять продолжительность песни и воспроизводить следующую песню с несколькими строками кода.
В этом примере я использую tracks
переменная, которую вы можете легко построить с помощью PHP json_encode()
,
var player;
var playlist;
var tracks;
var current;
$(function() {
current = -1;
player = $('#audio')[0];
playlist = $('#playlist');
tracks = [{
title: "The Kyoto : Hachiko (The Faithtful Dog)",
src: "https://freemusicarchive.org/music/download/34342f0461bd14291ab21bae5f1bfc57b3120677.mp3"
},
{
title: "Jahzzar : The last ones",
src: "https://freemusicarchive.org/music/download/8d97152c47959e384ed4b991ac8012665e121eac.mp3"
},
{
title: "Gillicuddy : Jupiter The Blue",
src: "https://freemusicarchive.org/music/download/bf36de47dafa5c162b45a85a90739f3ef1160832.mp3"
}
];
function next() {
current++;
if (current > tracks.length) {
current = 0;
}
player.src = tracks[current].src;
player.load();
player.play();
}
// Set volume down a bit and play on page load.
player.volume - .10;
next();
// Event that fires when the song ended.
player.addEventListener('ended', function(e) {
next();
});
// Write playlist in document.
for (let o of tracks) {
playlist.append('<li><a href="' + o.src + '">' + o.title + '</a></li>');
}
});
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<audio id="audio" preload="auto" tabindex="0" controls="" type="audio/mpeg">
<source type="audio/mp3" src="">
Sorry, your browser does not support HTML5 audio.
</audio>
<ul id="playlist"></ul>