Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2014, 22:35   #1
Sunozov
Новичок
Джуниор
 
Регистрация: 12.03.2014
Сообщений: 2
По умолчанию длина mp3

Всем привет! такой вопрос возник как вытащить из mp3 файла длину,
id3 тэги не вариант там ее может и не быть, загружать файл в поток bass.dll (работаю с ней) тоже, так как делаю плэйлист и грузить каждый трек в поток не очень
Sunozov вне форума Ответить с цитированием
Старый 28.04.2014, 16:24   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Длина звуковой дорожки(потока, или как вы говорите ".mp3")- это количество миллисекунд, которые будет она играть. Измеряется так:
Размер файла / скорость воспроизведения. Последняя измеряется в kbit/s. Соблюдай еденицы измерения!
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 28.04.2014, 17:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сначала попытаться прочесть тэг, а затем вычислять как сказал саша40.
правда надо помнить что в случае с файлом с переменным битрейтом длина будет неверная.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.04.2014, 17:51   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Обычно у стандарта все необходиамая инфа закодирована в шапке файла.
Человек_Борща вне форума Ответить с цитированием
Старый 28.04.2014, 18:23   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
сначала попытаться прочесть тэг, а затем вычислять как сказал саша40.
правда надо помнить что в случае с файлом с переменным битрейтом длина будет неверная.
делить размер файла на битрейт (да и он, кстати, может быть переменный) - бессмыслено. Вы забываете, что в файле может находится не только аудио, но и другие данные (например, текст композиции, картинки, и т.д. и т.п.)! Они могут сильно попортить статистику.
вот на хабре человечек описыает, как он разбирался в структуре MP3, как раз, чтобы получить длительность композиции - ТЫЦ
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.04.2014, 22:01   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

404.
я то знаю что так делать не стоит. но не всегда есть возможность анализировать файл. как я понял подобное умеет и бас сам.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.04.2014, 23:45   #7
Sunozov
Новичок
Джуниор
 
Регистрация: 12.03.2014
Сообщений: 2
По умолчанию

завязываться на битрейт глупо, щас делаю так,но это очень медленно если песен допустим 30 000
Код:
  form1.stream := BASS_StreamCreateFile(False,PChar(form1.pathlist.Strings[i]),0,0,0);

Form1.listbox1.Items.Add(mp3_SecondsToTime(trunc(BASS_ChannelBytes2Seconds(Form1.stream ,BASS_ChannelGetLength(Form1.stream,BASS_POS_BYTE)))));
у любой mp3шки в свойствах есть "продолжительность" вот как бы это свойство и дергать

Последний раз редактировалось Sunozov; 28.04.2014 в 23:49.
Sunozov вне форума Ответить с цитированием
Старый 29.04.2014, 07:20   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не у любой.
и винда считает именно так как сказал я.(а может и всегда считает по битрейту, не могу проверить)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Длина mp3 трека: как узнать? ramzes777 Мультимедиа в Delphi 6 29.09.2011 13:24
длина массива Артэс Общие вопросы C/C++ 4 06.10.2010 12:34
Длина строки С++ ArniLand Общие вопросы C/C++ 7 25.03.2010 10:59
Длина слова IGoDoVaN Общие вопросы Delphi 14 12.06.2008 08:04
MediaPlayer - как сделать последовательное воспроизведение mp3 файлов (именно mp3) Kashp Компоненты Delphi 13 28.09.2007 08:38