Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.11.2008, 00:15
alexeyco вне форума Посмотреть профиль Отправить личное сообщение для alexeyco Найти все сообщения от alexeyco
  № 1  
Ответить с цитированием
alexeyco

Регистрация: Nov 2008
Сообщений: 5
По умолчанию Seek Bar для mp3-плеера созданный вручную косячит

Здравствуйте!

У меня маленький вопрос. Я лепил mp3-плеер на локалке. Все замечательно работает но на локалке. Как только дело дошло до испытаний в интернете, случилось следующее:

1. ID3-теги читаются только после того, как звук полностью будет загружен.

2. Самодельный seek bar скачет, т.к. my_sound.duration во время загрузки меняется.

Как бороться с первой проблемой - я ума не приложу. Вторая проблема кажется мне разрешимой: ведь еще до завершения загрузки можно получить общее кол-во данных... и кол-во загруженных.

Получается, в случае когда звук еще не загружен (байтс лоадед != байтс тотал) мы можем динамически вычислить длину трека. То есть.. ну конечно если кол-во байтов целиком и полностью зависит от длины трека (в чем я кстати сомневаюсь), мы можем прикинуть сколько в загруженной длительности трека байтов и спроецировать это на общее кол-во байтов. И хоть как-то отрисовать сикбар...

Господа, посоветуйте, пожалуйста, что делать...

Старый 13.11.2008, 00:31
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1. Значит они записаны в конце файла;

2. Конечно изменяется, это время проигрывания загруженной части.

Старый 13.11.2008, 00:36
alexeyco вне форума Посмотреть профиль Отправить личное сообщение для alexeyco Найти все сообщения от alexeyco
  № 3  
Ответить с цитированием
alexeyco

Регистрация: Nov 2008
Сообщений: 5
Ну хорошо... я просто не разбираюсь в спецификации мп3... нельзя разобрать id3-теги до полной загрузки - черт с ними, уберем их совсем.

Парит seek bar. Как определить суммарную длину трека (время) до (в процессе) загрузки? Или посоветуйте как выйти из положения?

Старый 13.11.2008, 00:38
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 4  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Код AS1/AS2:
var KonSound:Sound = new Sound()
var L = KonSound.getBytesLoaded();
var T = KonSound.getBytesTotal();
var ST = KonSound.duration*T/L/1000;
Выдаст в секундах
__________________
Я просто добрый шутник.

Старый 13.11.2008, 00:47
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
alexeyco, надо сделать так, чтобы ID3-теги шли в начале файла (а это, кажется, теги первой версии). Тогда при получении тегов можно получить и время трека (тег TIME или как-то так).

scarbo, никаких секунд не будет, будет некая цифра, которая от реальных секунд такая же далекая, как Москва от Токио.

Старый 13.11.2008, 01:15
alexeyco вне форума Посмотреть профиль Отправить личное сообщение для alexeyco Найти все сообщения от alexeyco
  № 6  
Ответить с цитированием
alexeyco

Регистрация: Nov 2008
Сообщений: 5
Ну а как (какой программой ли) сделать чтобы теги шли в начале?

Старый 13.11.2008, 01:47
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 7  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
ну не так уж и на много,на 2-4 сек,Понятно дело,что время трека можно и через xml и ID3-теги передавать.
__________________
Я просто добрый шутник.

Старый 13.11.2008, 02:26
alexeyco вне форума Посмотреть профиль Отправить личное сообщение для alexeyco Найти все сообщения от alexeyco
  № 8  
Ответить с цитированием
alexeyco

Регистрация: Nov 2008
Сообщений: 5
Я пока вот что придумал:
Код AS1/AS2:
function getDuration (my_sound:Sound) {
 
	var total = my_sound.getBytesTotal();
	var loaded = my_sound.getBytesLoaded();
 
	if (loaded == total) {
 
		_root.isLoaded = true;
		return my_sound.duration;
 
	} else if (my_sound.id3.TIME != undefined) {
 
		return my_sound.id3.TIME;
 
	} else {
 
		return my_sound.duration * (total / loaded);
 
	}
 
} // getDuration();
Это может и не с хирургической точностью отражает картину, но спасает сильно - не так дрыгается бегунок... когда _root.isLoaded == true - кадр перестает запаривать эту функцию и просто пользуется своей переменной _root.trackDuration...

Возникает другой вопрос - я пользовался AIMP'ом - так вот после очистки ID3 и его восстановлении ничего хорошего не произошло - то есть, переменная my_sound.id3.TIME не перестала быть undefined... помогите пожалуйста разобраться


Последний раз редактировалось alexeyco; 13.11.2008 в 02:29.
Старый 13.11.2008, 12:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от scarbo Посмотреть сообщение
ну не так уж и на много,на 2-4 сек,
Битрейты разные бывают, более того — переменные.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.