Как избежать ненужной буферизации в jPlayer - PullRequest
9 голосов
/ 04 июня 2011

У меня есть jPlayer (проигрыватель песен HTML5, использующий jquery), и он начинает проигрывать песню с хх секунд песни.

Но проблема в том, что он сначала должен буферизовать XX секунд, а затем начинаетигра, которая является пустой тратой пропускной способности.Почему он не начинает свою буферизацию с XX секунд?

Вот код, который я использую:

$("#jquery_jplayer_1").jPlayer({
        ready: function () {
          $(this).jPlayer("setMedia", {
            mp3: playList[0],
            volume: CUR_VOL
          }).jPlayer("play", 251);
        },
        swfPath: "js",
        supplied: "mp3",
        errorAlerts: false
      });

РЕДАКТИРОВАТЬ

Я хотел получить ответдля избежания буферизации первых XX секунд.

1 Ответ

6 голосов
/ 09 июня 2011

Это флэш-полифил, который нужно буферизовать. Старые браузеры, которые не поддерживают HTML5 <audio>, будут страдать от этой проблемы, где вместо этого используется запасной вариант флеш-памяти jPlayer.

Ваш веб-сервер должен поддерживать поиск потока.

См. этот jPlayer Google Group вопрос о буферизации и Поиск в потоковом файле MP3 с тегом HTML5 & https://groups.google.com/forum/#!topic/jplayer/irSrmN0aUSU для обсуждения поиска и Accept-Ranges заголовки.

Редактировать: Я немного покопался в этой проблеме & hellip; хотя мне жаль, что у меня до сих пор нет окончательного ответа.

Во-первых, Руководство по разработке jPlayer подробно описывает проблемы с файлами .mp3 и заголовком Accept-Ranges . Если вы используете Chrome, вы можете увидеть заголовок запроса и ответа Accept-Ranges - если вы нажмете F12 и выберите вкладку Сеть . Нажав на файл .mp3, вы можете проверить заголовки. Хорошая новость заключается в том, что ваш сервер действительно поддерживает заголовок Accept-Ranges. Тем не менее, это по-прежнему не объясняет, почему иногда необходимо сначала буферизовать загрузку.

Я думаю, вы должны начать с простой демонстрации, без поддержки флэш и одного .mp3. Ваш список воспроизведения генерируется случайным образом, поэтому трудно определить, связана ли проблема только с определенными файлами. Кроме того, я использовал jPlayer Inspector , который может предоставить подробную статистику для jPlayer, которая может помочь диагностировать проблему.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
    <script src="jQuery.jPlayer.2.0.0/jquery.jplayer.min.js" type="text/javascript"></script>
    <script src="jQuery.jPlayer.2.0.0/jquery.jplayer.inspector.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function(){
            $('#jplayer').jPlayer({
                ready: function () {
                    $(this).jPlayer('setMedia', {
                        mp3: 'mp3/example.mp3'
                    });
                },
                swfPath: 'not_a_valid_directory',
                solution: 'html, flash',
                supplied: 'mp3'
            });

            $('#jplayer_inspector').jPlayerInspector({jPlayer:$('#jplayer')});

            $('#seeker').click(function() {
                $('#jplayer').jPlayer('play', 20);
                return false;
            });
        });
    </script>
</head>
<body>
<div id="jplayer"></div>
<a href="#" id="seeker">Play 20s from start</a>
<div id="jplayer_inspector"></div>
</body>
</html>

Вы также можете изменить приведенный выше демонстрационный код, включив в него:

swfPath: 'jQuery.jPlayer.2.0.0',
solution: 'flash, html',

в конструкторе jPlayer, чтобы Flash был проигрывателем по умолчанию.

...