![]() |
Узнать длину подгружаемого mp3-трека
Доброго времени суток всем =)
Перерыл сейчас весь форум, вопроса конкретно на свой вопрос не нашел. Итак - все просто. Mp3 плеер. Все работает, кроме того, что я хочу сделать нормально перемотку. Для этого нужно знать position и duration, насколько я понимаю. Но учитывая, что собственно трек подгружается, duration для меня параметр совсем не тот. На локалке ессно все ок, но вот чтоб реально работало... Я конечно извратился и добавил getBytesTotal / getBytesLoaded - примерно попадает )))) Но это ж не то совсем, как бы криво очень выходит. Куча сайтов с подобными плеерами есть - и там как-то все идеально... Можно конечно php задействовать, но по-моему длину там вытащить не проще, пробовал (хотя может не то). Сложновато выходит, а так хотелось в одну строчку) В общем, посоветуйте, как красивее обойти сию проблему) |
position - сколько проиграло, duration - сколько скачалось или весь клип.
Перемотать можно только в пределах скачаного. Или перематывать на стороне сервера, но чем? |
position, duration - это ессно понятно.
но когда есть полоса прокрутки на 100% трека, загрузилось допустим 30% - как перемотать скажем на 15%, при этом видна вся полоса прокрутки (что очевидно) ... вот в чем вопрос. собсно пример сразу - youtube.com. Только видео там, но это не важно - полоса прокрутки у меня аналогична. |
Выдернуть duration из ID3 тега?
|
Можно вычислить достаточно точно длительность трека, имея длину скачаного участка, его вес в байтах и общий вес. Общая длина - серая, скачаный участок - белый, а то что перемотка ошибется секунд на 5, поди докажи, никто и внимания не обратит.
ID3 тоже хорошо, но смотря чем файл сжат - может и соврать, а может и вообще отсутствовать. |
В mp3 информацию о длине трека в миллисекундах можно прочитать из тега TLEN (если она записана), но ID3 должна быть версии 2.0. Инфа 2.0 записывается в начале файла, в отличии от 1.0
|
Я думаю, об ID3 создатель должен позаботиться.
|
Цитата:
Добавлено через 51 минуту preloader.onEnterFrame = function() { //этот Бар связан с буферизацией this.bloaded._xscale = Math.round(mp3_sound.getBytesLoaded()/mp3_sound.getBytesTotal()*100); //вычесление длины трека ВОТ ЭТО ТО ЧТО ТЫ ИЩЕШь нааверн :P !!!!!! var loaded = mp3_sound.getBytesLoaded(); var duration = mp3_sound.duration; kbps = ((loaded)/(duration)); var total = mp3_sound.getBytesTotal(); timeTotal = (total/kbps); //ну а тут отображаем текущую позицию this.curentPosition._xscale = Math.round(mp3_sound.position/timeTotal*100); }; |
Вот выдерка из моего класса. Посмотри внимательнее разберись что зачем. Там полностью организована прокрутка ( как со 100% так и до 100% , то что ты хотел).
Код AS1/AS2:
П.с. 2 много лишнего тут. обращай внимание только на механику. все удалить лишнее просто нет времени щас. удачи |
| Часовой пояс GMT +4, время: 21:46. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.