Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mp3 Опредиление длительности трэка 
V
    Опции темы
Pentium02
Дата 9.3.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Допустим есть размер файла, его битрейт(постоянный), и если известно что теги только ID3v1 (т.е. 128 байт). Как из этого можно расчитать длительность в секундах? Без использования дополнительных компонент.

Это сообщение отредактировал(а) Pentium02 - 9.3.2008, 20:38
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 9.3.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



битрейт поделить на 8 получить число байт в секунду, затем размер файла поделить на число байт в секунду.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Qu1nt
Дата 9.3.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 2
Всего: 50



Нацарапал:
Код

uses
  MMSystem;

var
  FDeviceID : Word;
  FFlags    : Longint;

function MediaOpen(const FileName: string; Handle: hWnd): Boolean;
var
  OpenParm : TMCI_Open_Parms;
begin
  Result := False;
  FillChar(OpenParm, SizeOf(TMCI_Open_Parms), 0);
  OpenParm.dwCallback := 0;
  OpenParm.lpstrDeviceType := '';
  OpenParm.lpstrElementName := PChar(FileName);
  FFlags := mci_Wait;
  FFlags := FFlags or MCI_OPEN_ELEMENT;
  OpenParm.dwCallback := Handle;
  if mciSendCommand(0, mci_Open, FFlags, Longint(@OpenParm)) = 0 then
  begin
    Result := True;
    FDeviceID := OpenParm.wDeviceID;
  end;
end;

function MediaGetLength: Longint;
var
  StatusParm : TMCI_Status_Parms;
begin
  FFlags := mci_Wait or mci_Status_Item;
  StatusParm.dwItem := mci_Status_Length;
  mciSendCommand(FDeviceID, mci_Status, FFlags, Longint(@StatusParm));
  Result := StatusParm.dwReturn;
end;

procedure MediaClose;
var
  GenParm : TMCI_Generic_Parms;
begin
  mciSendCommand(FDeviceID, mci_Close, mci_Wait, Longint(@GenParm));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if MediaOpen('c:\test.mp3', Self.Handle) then
  begin
    Self.Caption := IntToStr(MediaGetLength) + ' ms';
    MediaClose;
  end;
end;

PM MAIL   Вверх
Pentium02
Дата 10.3.2008, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



2 Alexeis Спасибоо только роде как ещё нужно поделить на 1000
2 Qu1nt Я же просил без компонент) проще формулой) Но всёрвно спасибо

Это сообщение отредактировал(а) Pentium02 - 10.3.2008, 01:33
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 10.3.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Pentium02, а где ты там компоненты увидел?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
XakerD
Дата 1.1.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.12.2009

Репутация: нет
Всего: нет



Pentium02, а может выложишь формулу то...?) 
PM MAIL   Вверх
AntonN
Дата 1.1.2010, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



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


--------------------
user posted image
PM MAIL WWW   Вверх
Alexeis
Дата 1.1.2010, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



На самом деле mp3 поточный формат. Каждый блок имеет свои характеристики, на этом построен принцип VBR. Если формат с фиксированным битрейтом, то разобрав первый блок с данными можно получить всю необходимую информацию

Добавлено через 7 минут и 17 секунд
user posted image

Добавлено через 10 минут и 31 секунду
http://www.autohotkey.com/forum/topic29420.html


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
AntonN
Дата 1.1.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



"Audio Tools Library"


--------------------
user posted image
PM MAIL WWW   Вверх
Alexeis
Дата 1.1.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(AntonN @  1.1.2010,  20:43 Найти цитируемый пост)
"Audio Tools Library" 


Цитата(Pentium02 @  9.3.2008,  19:37 Найти цитируемый пост)
Без использования дополнительных компонент.

 smile 

 Так не интересно smile . Ну хочется человеку изобрести велосипед, ну пусть изобретает smile .


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
AntonN
Дата 1.1.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



там не компоненты, там классы. А самое главное - "формулы" smile


--------------------
user posted image
PM MAIL WWW   Вверх
mr_smit
  Дата 1.11.2022, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: нет
Всего: 4



Когда то разбирался. Определение длительности mp3 для постоянного битрейта. В чистом виде без всяких библиотек. Не доделано, но суть понятна. Может пригодится кому.

Это сообщение отредактировал(а) mr_smit - 1.11.2022, 07:40

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  MP3_Info.zip 9,84 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.1641 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.