![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Evgeny101 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.6.2009 Репутация: нет Всего: нет |
Всем привет. Столкнулся вроде бы с простой задачей, но как её исполнить не могу додуматься. Как известно в файлах айдио есть свой заголовок (еапример в wav он свой, у mp3 другой). Так вот мне нужно узнать с каким типом аудио файла я имею дело. Через файловые потоки поиск сигнатуры получается долгим, решил сделать через проецирование файла в память. Делаю CreateFileMaping, далее MapViewOfFile, которая возвращает мне стартовый адрес отмапенного файла. А вот как дальше произвести поиск нужной строки (или hex значения) я не могу додумать.
Мне просто нужна скорость, поэтому я и выбрал проецирование файлов в память. У кого-нибудь есть идеи? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Evgeny101, отображение файлов имеет смысл при работе с большими объемами данных. Тут же нужно читать небольшие фрагменты, так что используйте стандартные средства доступа к файлу.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Evgeny101 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.6.2009 Репутация: нет Всего: нет |
Alexeis,
Стандартными средствами (через FileStream) получается с задержкой, но я сделал немного по другому. Я произвожу поиск не по всему файлу, а в начале и в конце (например у mp3 в начале может быть либо сигнатура ID3, либо заголовок mp3 файла, а в конце либо TAG, либо ничего). Придётся почитать заголовки известных аудио файлов |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Про это и речь, конечно же не нужно весь файл читать. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: нет Всего: 10 |
Юзай API CreateFile() ReadFile() что бы быстро прочитать несколько байт, самое оно.
Это сообщение отредактировал(а) Dik0n - 28.6.2011, 19:24 --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| Evgeny101 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.6.2009 Репутация: нет Всего: нет |
Ну собственно так я задачу и решил, прочитал первый три байта, в конце файла по смещению -128 три байта (т.е. проверил нету ли тэгов), ну и чеканул хэдер mp3 файла. Вариант быстрый, но к сожалению с таким подходом 100% результат гарантировать не возможно. |
|||
|
||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: нет Всего: 10 |
Совершенно не пойму, на чем основано данное предположение, если знаешь хидеры можно с 100 процентной увереностью определить что это за файл. Как по вашему к примеру винамп определяет что это за файл, явно не по расширению. Это сообщение отредактировал(а) Dik0n - 28.6.2011, 22:57 --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| Evgeny101 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.6.2009 Репутация: нет Всего: нет |
Да причин может быть куча. Например: 1) Встречаются файлы где в начале идёт не один IDTAGv2, а например 2 2) Некоторые плееры записывают в конец файла свою инфу... 3) Корявый тэг и т.д. Причин может быть куча. 100% вариант существует только один искать в файле сигнатуру заголовка, например mp3 файла (fffb), а не передвигаться по тэгам. Ну и винамп если вы не знаете тоже читает далеко не всё...Причины я описал выше |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |