Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Размер mp3-файла


Автор: fridkaratel 7.5.2008, 21:08
Как узнать или подсчитать размер mp3-файла, исходя из данных, которые находятся в самом этом mp3-файле?

Автор: LavYaAll 12.5.2008, 18:43
Код

// Можно размер файла получить этой функцией:
DWORD GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh);

// Если размер уж очень велик(больше DWORD), то надо использовать:
BOOL GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER lpFileSize);

// Если надо получить размер сжатого файла, то:
DWORD GetCompressedFileSize(LPCTSTR lpFileName, LPDWORD lpFileSizeHigh);

Автор: fridkaratel 13.5.2008, 06:03
smile

Я это знаю...

Это не то... Суть в чем - мне надо найти в файле размером 300-500 Мб все mp3-файлы, чтобы их оттуда вытащить (напр. игра GTA)... А для этого надо найти как-то структуру этого mp3 и узнать размер файла, а потом уже сохранить выдернутый файл на диск...

Автор: ksili 13.5.2008, 06:40
Как и у почти всякого формата, к mp3 наверняка есть шапка, в которой есть различная инфа. Просто разберись с форматом шапки и всё, размер файла там наверняка будет.

Автор: LavYaAll 13.5.2008, 08:35
Хмм, я понял. Вот почитай тут, может поможет.
http://forum.codenet.ru/showthread.php?t=13921
http://en.wikipedia.org/wiki/Mp3



user posted image
Цитата

An MP3 file is made up of multiple MP3 frames, which consist of the MP3 header and the MP3 data. This sequence of frames is called an Elementary stream. Frames are not independent items ("byte reservoir") and therefore cannot be extracted on arbitrary frame boundaries. The MP3 data is the actual audio payload. The diagram shows that the MP3 header consists of a sync word, which is used to identify the beginning of a valid frame.

Автор: LavYaAll 13.5.2008, 09:00
Как я понял MP3 состоит из фреймов. Идет некая последовательность, заголовок1 - данные1; заголовок2 - данные2; ...; заголовокN - данныеN; В заголовке хранится информация об идущих далее данных. Сами данные это и есть то что "проигрывается". А потом идет следующий заголовок, хранящий инфу о следующих данных.
Цитата

The diagram shows that the MP3 header consists of a sync word, which is used to identify the beginning of a valid frame. This is followed by a bit indicating that this is the MPEG standard 

А sync word идентифицирует начало следующего фрейма. Почитай данные по вышеприведенным ссылкам, особенно то что написано в Wikipedia.

Автор: fridkaratel 30.5.2008, 18:35
Сэнкс! ;)

Я читал и на википедии, и на других сайтах, в том числе и на официальном... Но там все так намудрено...

Про фрэймы тоже читал, пришел к выводу, что надо их все перебирать поочередно - меня это не устроило...

Поэтому думал найти выход полегче и попроще... Как бы через некую формулу...

PS: Вот нет чтобы сделать как у формата RIFF (WAV, AVI, MID) - все указано одним числом в заголовке - и все! Нет, надо мудрить... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)