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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2010, 20:30   #1
Дима я
Форумчанин
 
Регистрация: 06.06.2009
Сообщений: 259
По умолчанию Можно ли програмно узнать являеться ли файл .tmp мп3шным?

Дело в том что при воспроизведении музыки в контакте например опера закачивает воспроизводимый файл в кеш,но сохраняет его в .tmp .
Мне нужно программно узать являеться ли этот файл мп3шным или же это какой то другой файл.
Если я тебе помог Ты бы + влепить мне мог.
Дима я вне форума Ответить с цитированием
Старый 03.07.2010, 20:35   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Попробуйте во время скачивания открыть его HEX редактором и посмотреть на первые несколько байт.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 03.07.2010, 21:36   #3
Дима я
Форумчанин
 
Регистрация: 06.06.2009
Сообщений: 259
По умолчанию

Может быть кто то подскажет иной способ потому что я нифига не понял как это делать.
М.б есть какая то функция для считывания мп3 тегов ,биттрейта допустим и если такого тега функция не находит ,значит файл видимо не mp3..
Но это только предположенение.
Если я тебе помог Ты бы + влепить мне мог.
Дима я вне форума Ответить с цитированием
Старый 03.07.2010, 21:39   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Переименуйте bmp файл в txt. А теперь попробуйте узнать его размер. Так же и с mp3.
Цитата:
я нифига не понял как это делать.
Код:
Var
F : File of Byte;
II : Integer;
Begin
AssignFile(F, 'File.tmp');
Reset(F);
BlockRead(F, II, SizeOf(II));
CloseFile(F);
И сравните со значением у существующего mp3 файла.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 03.07.2010, 22:07   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ищите первый mp3 фрэйм(в начале может быть ID3 Tag)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.07.2010, 22:44   #6
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Значит делаем так жмёшь в опере ctrl+u вызываешь код страницы потом ctrl+f поиск .mp3 находишь ссылку в ковыках копируешь в строку и всё а опера сама из кеша её возмёт и всё.
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 04.07.2010, 08:55   #7
Дима я
Форумчанин
 
Регистрация: 06.06.2009
Сообщений: 259
По умолчанию

Всем спасибо.
будум делать
Если я тебе помог Ты бы + влепить мне мог.
Дима я вне форума Ответить с цитированием
Старый 04.07.2010, 11:29   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
будум делать
так расскажите, что именно?

дело в том, что если в MP3 есть тэг ID3, тогда первыми байтами в файле будут идти (ID3...) (в HEX:
Код:
49 44 33 03 00
но, лично у меня на компьютере есть MP3 файлы, которые начинаются с таких байт :
Код:
FF FA E3
и с таких:
Код:
FF FB A0
при этом я не уверен, что этим многобразие MP3 исчерпывается..

ещё, как вариант, можно попробовать пытаться воспроизвести/распаковать данный файл через какую-нибудь библиотеку (например, через BASS) если ошибка не вернулась, значить данный файл - звуковой...

Ну и ещё пара советов.
Читать первые байты файла рекомендую через BlockRead (ну или через TFileStream )

Можно ещё добавить такую эвристику - предварительно проверять размер файла - если он менее какого-то порогового значения (ну, например, 150 кб, то его уже можно отбросить - даже если это mp3, там всё равно ничего дельного не будет )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.07.2010, 13:33   #9
Дима я
Форумчанин
 
Регистрация: 06.06.2009
Сообщений: 259
По умолчанию

Вобшем решил проблему.Использовал библиотеку mp3Tag,ей проверял сушествуют ли в этих файлах "таги".
Пока ошибок не наблюдал ,всё точно
Если я тебе помог Ты бы + влепить мне мог.
Дима я вне форума Ответить с цитированием
Старый 07.07.2010, 19:56   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как програмно узнать размер файла? Дима я Общие вопросы C/C++ 3 09.10.2009 21:37
Как програмно можно узнать где находится программа Vol666 Общие вопросы Delphi 11 30.07.2009 20:58
Как програмно узнать какая директория [папка] в данный момент открыта? dolphin705 Общие вопросы Delphi 13 08.04.2009 21:30
Как увидеть програмно в DELPHI входящий звонок и узнать номер звонка ? LiderServis Общие вопросы Delphi 3 20.01.2009 21:19
RichEdit. как можно вставлять картинку туда? как можно Скрол програмно вниз двигать? Svop Компоненты Delphi 7 28.11.2006 21:07