Непрерывная потоковая передача случайного аудио из базы данных - PullRequest
1 голос
/ 24 февраля 2011

Я планирую проект для очень простого аудио-стримера, который будет принимать список песен MySQL, размещенный на моем локальном сервере, и затем в случайном порядке непрерывно воспроизводить песню из списка в течение дня. Это будет прикреплено к очень простой странице интерфейса, на которой будет отображаться название воспроизводимой в данный момент песни.

Я знаю, как получить случайный файл из базы данных и транслировать его с помощью внешнего интерфейса Javascript / HTML, но я теряюсь в том, как определить, когда песня закончилась, - а затем загрузить следующую песню. Есть ли простой способ сделать это? Может ли кто-нибудь указать мне правильное направление?

РЕДАКТИРОВАТЬ: Чтобы подробнее остановиться на внешнем интерфейсе, я бы, скорее всего, указывал имя файла / местоположение через PHP в аудиотэге HTML5 (опять же, я хочу, чтобы это было как можно проще). Я думаю, что самым простым способом было бы воспроизвести аудиофайл, а затем обновить страницу и воспроизвести следующий файл, используя тот же аудиотег и новое имя файла - я просто не знаю, как вызвать это событие в конце песня. В качестве альтернативы я мог бы использовать плеер на основе Javascript, такой как JPlayer (http://www.jplayer.org/), если мне нужно.

Я предполагаю, что есть какая-то функция обратного вызова, которую я могу использовать вместе с JQuery?

1 Ответ

1 голос
/ 02 марта 2011

HTML5-тэг аудио имеет событие «onended», которое запускается, когда медиа достигает своего конца, но, так как вы хотите продолжить воспроизведение, вы должны использовать событие «onwaiting», которое также запускается, когда медиа достигает своего конца, но сохраняет Сам готов принять новый трек / данные.

Затем вы можете использовать объект XMLHttpRequest для запроса следующей дорожки для воспроизведения, например.

<script type="text/javascript">
  function getNextTrack(e) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "next_track.php", false);
    xhttp.send("");

    var playback = xhttp.responseXML.childNodes[0];
    for(i = 0; i < playback.childNodes.length; ++i) {
      if (playback.childNodes[i].nodeName != 'track') continue;
      var value = playback.childNodes[i].childNodes[0].nodeValue;
      e.currentTarget.src = value;
      break;
    }
  }
</script>
<audio id="player" onwaiting="javascript: getNextTrack(e)" src="first_track.ogg"></audio>

XML будет иметь вид:

<?xml version="1.0" encoding="UTF-8" ?> 
<playback> 
    <track>next_song.ogg</track>
</playback>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...