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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2009, 22:11   #1
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию Определение mp3

Как определить mp3 файл?
Gerzs вне форума Ответить с цитированием
Старый 13.10.2009, 22:23   #2
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Код:
if ExtractFileExt('Имя_файла') = '.mp3' then // Это файл формата mp3
Манжосов Денис :) вне форума Ответить с цитированием
Старый 14.10.2009, 01:42   #3
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от Манжосов Денис :) Посмотреть сообщение
Код:
if LowerCase(ExtractFileExt('Имя_файла')) = '.mp3' then // Это файл c расширением mp3
наверно вот так)
Lime вне форума Ответить с цитированием
Старый 14.10.2009, 22:09   #4
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

А если нет расширения?
Gerzs вне форума Ответить с цитированием
Старый 14.10.2009, 22:20   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну тогда надо читать спецификацию mp3 и искать характерные черты
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.10.2009, 03:25   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

У mp3 файла нет заголовка. В начале файла часто бывает ID3 тег, если он там есть можно с какой-то долей вероятности предположить что это MP3 файл. Но тега может и не быть. Нужно искать первый фрейм и там уже определять действительно ли это mp3. Поищи в этой ветке я подробно расписывал как это делается.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.11.2009, 15:12   #7
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Вы имели ввиду эту тему?
http://programmersforum.ru/showthrea...0%E9%EB%EE%E2+

Цитата:
Сообщение от mutabor Посмотреть сообщение
Нужно искать первый фрейм и там уже определять действительно ли это mp3.
Можно подробнее? В той теме этот вопрос почти не осветлен.
Gerzs вне форума Ответить с цитированием
Старый 03.11.2009, 17:07   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

если не планируется вытягивать информацию из mp3, то гораздо проще и быстрее распознавать сигнатуру файла... ну например первые два (2-4) байта чисто mp3 файла будут 0 байт-$ff 1 байт-$fb или $f3 (гляньте любым hex-редактором)...

нюансы:
0-$52 1-$49 2-$46 3-$46 -wav в mp3
0-$49 1-$44 2-$33 - mp3 опять

т.е. задача сводится к выделению чтению в буфер начального кусочка файла и сравнению с известными уже условиями...
Код:
var head: pchar;
begin
 fDAT:= TMemoryStream.Create;
 fDAT.LoadFromFile(filename);
 GetMem(head, 10);
 fDAT.Read(head, SIZEOF(head));
 if (ord(head[0])=$ff) and (ord(head[1])=$fb) then ... бла-бла-бла
смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 03.11.2009 в 17:13.
raxp вне форума Ответить с цитированием
Старый 03.11.2009, 17:09   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Gerzs Посмотреть сообщение
Можно подробнее? В той теме этот вопрос почти не осветлен.
Не сказать что хорошо освещен, но фонариком можно сказать присветил )
Цитата:
Нужно брать больше первых бит для поиска, тогда Mpeg1 Layer3 будет как-бы "по умолчанию", эти биты попадут в ту часть, на основании к-рой ищем. Для mp3 первые 15 бит будут такие:
1111 1111 1111 + 1 + 01
[ sync word ] [mpeg 1] [layer 3]
16-й бит - error protection, если включить и его, то можно искать по первым двум байтам, а это уже намного точнее, да и легче в реализации. Определиться только с 16-м битом, если он равен единице, то первые два байта такие - FF FB, если нулю - FF FA.
Что именно из вышеописанного неясно?

Да, кстати, это нужно читать обложившись литературой по структуре mp3 (на англоязычных сайтах встречается), и схемами со структурой заголовка mp3 фрейма

raxp, нет, все совсем не так. Взять хотя бы то, что в начале часто идет ID3 тег второй версии. А может и не быть его.
Фрейм (не файл!) mpeg layer 3 начинается либо с этих двух байт - FF FB, либо с этих - FF FA.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось Stilet; 10.11.2009 в 12:14.
mutabor вне форума Ответить с цитированием
Старый 03.11.2009, 17:24   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
А может и не быть его
достаточно редкий случай...

Цитата:
либо с этих двух байт - FF FB
я так и написал, а
Цитата:
либо с этих - FF FA
мне попадались и FF F3
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mp3 Lexakazanskij Мультимедиа в Delphi 7 17.06.2009 15:57
Проигрователь mp3 на c++ Palach Общие вопросы C/C++ 3 30.03.2009 20:02
mp3 krok PHP 2 29.04.2008 11:21
MediaPlayer - как сделать последовательное воспроизведение mp3 файлов (именно mp3) Kashp Компоненты Delphi 13 28.09.2007 08:38