2013-02-12 2 views
0

Я могу транслировать песни из Grooveshark, используя там публичный потоковый API. Я использую это с jPlayer (jplayer.org), и он правильно передает песни.Grooveshark Public Streaming API с jPlayer

Но проблема в том, что в Firefox (проверена на последнюю версию) на полной продолжительности песни продолжает увеличиваться с 00:00 до полной длины песни. В основном полная продолжительность песни - это количество песни, забуференной.

См., Например, песня длиной 04:00 минут начинается буферизация. Теперь, когда буферизации четверти песни (то есть 01:00 минут), jPlayer показывает продолжительность песни как 01:00 минут, тогда как она должна быть 04:00 мин.

Скриншот: (Играющий песня имеет общую длину 05:06 минут)

http://i.stack.imgur.com/wzxPx.png

В Google Chrome (проверено на последней версии) полная длительность песни показана и jplayer показывает, что вся песня буферизуется даже с самого начала песни.

Скриншот: (хром показывает, что полная песня буферный, но она все еще буферная)

http://i.stack.imgur.com/PSkct.png

jPlayer использует HTML5 первые и падает обратно мигать, если HTML5 не поддерживается. Google Chrome поддерживает воспроизведение mp3 с использованием HTML5 (поток Grooveshark - это mp3). Но Firefox не поддерживает mp3 в HTML5.

Понятно, что Firefox использует флеш-память, а Chrome использует HTML5.

Теперь проблемы я хочу решить, являются: -

  • Получение полной продолжительности песни в Firefox и держать все остальное, как есть.
  • Сохраняя полную длительность песни в Chrome и показать правильное количество песни буферизованное.

Все это должно быть возможно, так как сам сайт grooveshark также использует тот же файл stream.php.

Grooveshark также обеспечивает его собственный флэш-плеер, но он не имеет достаточно возможностей и специально это не HTML5.

И если это не представляется возможным с jPlayer, пожалуйста, мне предложить лучшую альтернативу, которая поддерживает HTML5 и хорошо для потокового видео.

+0

Посмотрите на http://stackoverflow.com/questions/13170411/audio-element-with-controls-trackbar-not-moving для аналогичного выпуска – Baba

+0

@Baba У меня нет контроля над stream.php, как в Окончание Гровешарка. И когда я проверяю заголовки stream.php в Firebug, , заголовок Content-Length уже установлен. –

ответ

0

Одна вещь, которую вы можете сделать, что Grooveshark иногда делает, это взять текущую длину песни и разделить его на процент загруженным.Это даст вам хорошую оценку фактической продолжительности файла, кроме, возможно, файлов VBR. Вы также можете попробовать посмотреть теги ID3.

+0

Спасибо, Джеймс. Я использовал эти методы, и Javascript не смог прочитать теги ID3, потому что ссылка была кросс-доменом. С PHP мне удалось получить теги ID3, временно загрузив песню через curl в локальный каталог, а затем получив теги ID3. Этот метод не будет хорош в долгосрочной перспективе. И при попытке использовать метод currentLength/percentLoaded. Это не возвращает точное значение и отличается на 0-6 секунд. Есть ли какой-либо метод в API Grooveshark, который может вернуть продолжительность песни или можно ли использовать такой метод в будущем? –

+0

У меня проблема. Файл, который я проверял метод currentLength/percentLoaded, был VBR, и, как вы сказали, он не будет работать для файлов VBR. Проверял ту же песню на Grooveshark.com, и продолжительность показана и там. Файлы CBR работают нормально. Пометка как правильная Ответ ... Большое спасибо! Было бы лучше, если API Grooveshark вернет длительность песни с другой информацией о песне, чтобы решить эту проблему для файлов VBR. –

+0

К сожалению, у нас нет длительности песни на бэкэнд. Для некоторых файлов мы оцениваем продолжительность и когда мы можем использовать продолжительность оценки. Вы должны получить что-то из API для файлов, у которых есть продолжительность оценки. –