Как избежать ненужной буферизации в jPlayer

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

Но проблема в том, что он должен сначала буферизовать 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 секунд.


person footy    schedule 04.06.2011    source источник
comment
Вы можете избежать этого, имея небольшой буфер (я не знаю, является ли это ограничением флэш-памяти). Некоторое время назад я работал над видео на сайте demad, и разработчикам, создающим плеер, пришлось провести хорошее тестирование, чтобы найти правильный баланс для размера буфера, поскольку небольшой буфер может вызвать проблемы при низкоскоростных соединениях.   -  person Augusto    schedule 04.06.2011
comment
какой атрибут я должен использовать? Я просмотрел документацию и не нашел ни одной опции для установки значений буферизации.   -  person footy    schedule 04.06.2011
comment
Извините, я понятия не имею, что использовать в jplayer, поскольку мы создали собственный видеоплеер. Я просто пытался указать вам на возможное решение.   -  person Augusto    schedule 05.06.2011
comment
Вы видите это при использовании проигрывателя Flash, проигрывателя HTML 5 или обоих? (jPlayer будет использовать разные проигрыватели под капотом в зависимости от возможностей браузера.)   -  person Matt Gibson    schedule 09.06.2011
comment
Как проверить, что он использует? Я обычно тестирую в Chrome и поэтому предполагаю, что он использует версию HTML5, поскольку Chrome поддерживает ее.   -  person footy    schedule 09.06.2011
comment
Хорошо, поскольку у него более 1000 просмотров, кажется, некоторые люди хотят, чтобы это было исправлено. Я бы предложил им серверное решение для динамического вырезания MP3 при его доставке в jPlayer. Это было моим окончательным решением.   -  person footy    schedule 03.04.2012


Ответы (1)


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

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

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

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

Во-первых, jPlayer Development Guide подробно описывает проблемы с _ 2_ файлы и заголовок 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 стал проигрывателем по умолчанию.

person andyb    schedule 09.06.2011
comment
Привет, я не использую старый браузер. Последние версии Chrome / Opera / IE буферизируют их. Пожалуйста, проверьте мой плеер, развернутый здесь ... www.uttarakhandradio.com в любом браузере ... он все еще буферизуется ... вроде как новый и обучающийся, так как проверить, поддерживает ли мой сервер эту буферизацию или нет? Я использую mp3-файл, который должен быть доступен для потоковой передачи, верно? - person footy; 09.06.2011
comment
Я посмотрю на ваш сайт. - person andyb; 10.06.2011
comment
Я пробовал это в Chrome 13, и звук воспроизводится нормально. Если я загружаю сайт в браузере, отличном от HTML5, он буферизуется. Я попробую еще раз в другом браузере, потому что наблюдаю непоследовательное поведение. В первый раз, когда я загрузил сайт (в Chrome 13, но на другой машине), элемент <audio> никогда не добавлялся jPlayer. - person andyb; 13.06.2011
comment
ай! это совершенно странное поведение для такой новой пчелы, как я! .... здесь совершенно в растерянности ... спасибо за помощь ... Надеюсь, вы ответите на это :) - person footy; 13.06.2011
comment
Я обновил свой ответ, добавив еще несколько идей, но без доступа к вашему серверу я не думаю, что больше смогу помочь. Есть кое-что, что вы можете попробовать. - person andyb; 14.06.2011
comment
Хммм ... проблема все еще существует ... Вы получили баллы, поскольку вы помогли больше всего .. Надеюсь, я смогу найти другой способ решения этой проблемы - person footy; 26.06.2011
comment
Вы пробовали простую одиночную .mp3 демонстрацию с инспектором jPlayer? Если у вас есть простой пример, который могут просмотреть другие, возможно, стоит опубликовать его в группе jPlayer Google или задать еще один вопрос здесь и посмотреть, может ли кто-нибудь еще помочь. - person andyb; 05.07.2011