Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

icq: 446843180
skype: phoenix_proger
По умолчанию

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

skype: arhangelsoft
По умолчанию

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

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

icq: 446843180
skype: phoenix_proger
По умолчанию

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

завязываться на битрейт глупо, щас делаю так,но это очень медленно если песен допустим 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
Адрес: Москва
Сообщений: 20,980
Репутация: 3384

icq: 446843180
skype: phoenix_proger
По умолчанию

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



Опции темы

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

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

Быстрый переход

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




04:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru