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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать тип аудио файла 
:(
    Опции темы
Evgeny101
  Дата 27.6.2011, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет. Столкнулся вроде бы с простой задачей, но как её исполнить не могу додуматься. Как известно в файлах айдио есть свой заголовок (еапример в wav он свой, у mp3 другой). Так вот мне нужно узнать с каким типом аудио файла я имею дело. Через файловые потоки поиск сигнатуры получается долгим, решил сделать через проецирование файла в память. Делаю CreateFileMaping, далее MapViewOfFile, которая возвращает мне стартовый адрес отмапенного файла. А вот как дальше произвести поиск нужной строки (или hex значения) я не могу додумать. smile 
Мне просто нужна скорость, поэтому я и выбрал проецирование файлов в память. У кого-нибудь есть идеи?
PM MAIL   Вверх
Alexeis
Дата 28.6.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Evgeny101, отображение файлов имеет смысл при работе с большими объемами данных. Тут же нужно читать небольшие фрагменты, так что используйте стандартные средства доступа к файлу.


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

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

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


Новичок



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

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



Alexeis, 
Стандартными средствами (через FileStream) получается с задержкой, но я сделал немного по другому. Я произвожу поиск не по всему файлу, а в начале и в конце (например у mp3 в начале может быть либо сигнатура ID3, либо заголовок mp3 файла, а в конце либо TAG, либо ничего). Придётся почитать заголовки известных аудио файлов smile 
PM MAIL   Вверх
Alexeis
Дата 28.6.2011, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(Evgeny101 @  28.6.2011,  19:00 Найти цитируемый пост)
. Я произвожу поиск не по всему файлу, а в начале и в конце 

  Про это и речь, конечно же не нужно весь файл читать. 


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

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

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


Бывалый
*


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

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



Юзай API CreateFile() ReadFile() что бы быстро прочитать несколько байт, самое оно.

Это сообщение отредактировал(а) Dik0n - 28.6.2011, 19:24
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
Evgeny101
Дата 28.6.2011, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dik0n @  28.6.2011,  19:23 Найти цитируемый пост)
Юзай API CreateFile() ReadFile() что бы быстро прочитать несколько байт, самое оно.

Ну собственно так я задачу и решил, прочитал первый три байта, в конце файла по смещению -128 три байта (т.е. проверил нету ли тэгов), ну и чеканул хэдер mp3 файла. Вариант быстрый, но к сожалению с таким подходом 100% результат гарантировать не возможно.
PM MAIL   Вверх
Dik0n
Дата 28.6.2011, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Evgeny101 @  28.6.2011,  21:07 Найти цитируемый пост)
Вариант быстрый, но к сожалению с таким подходом 100% результат гарантировать не возможно. 

Совершенно не пойму, на чем основано данное предположение, если знаешь хидеры можно с 100 процентной увереностью определить что это за файл. Как по вашему к примеру винамп определяет что это за файл, явно не по расширению.

Это сообщение отредактировал(а) Dik0n - 28.6.2011, 22:57
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
Evgeny101
Дата 29.6.2011, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dik0n @  28.6.2011,  22:54 Найти цитируемый пост)
Совершенно не пойму, на чем основано данное предположение

Да причин может быть куча. Например:
1) Встречаются файлы где в начале идёт не один IDTAGv2, а например 2
2) Некоторые плееры записывают в конец файла свою инфу...
3) Корявый тэг
и т.д. Причин может быть куча. 100% вариант существует только один искать в файле сигнатуру заголовка, например mp3 файла (fffb), а не передвигаться по тэгам. 
Ну и винамп если вы не знаете тоже читает далеко не всё...Причины я описал выше smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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