Задача утратила свою актуальность. Хоть до конца с ней и не разобрался, но тему закрываю. Всем спасибо за участие.29.10.08 09:52 Число просмотров: 1620 Автор: Vedrus <Serokhvostov Anton> Статус: Member
Скажите, есть ли возможность сделать такое попроще стандартными средствами Windows?
Про wav информацию нашёл - mmioRead мне помогла. А вот с mp3 проблемы. Нашёл в MSDN интерфейс IWMReader, но как его пользовать так и не понял.
Работаю под MS VS 6.0 и 7.1.
Задача утратила свою актуальность. Хоть до конца с ней и не разобрался, но тему закрываю. Всем спасибо за участие.29.10.08 09:52 Автор: Vedrus <Serokhvostov Anton> Статус: Member
Ты насчёт чего? Какая библиотека гнутая?12.10.08 17:16 Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 12.10.08 17:18 Количество правок: 1
гнутая - значит по лицензии GNU
библиотека - значит ее можно просто использовать вместо ковыряния исходного кода готового продукта
MAD - MPEG Audio Decoder
Но вобщем это дело твое - разбираться что это такое
А тут можно скачать в качестве примера исходники винампового mp3 декодера на ее основе, который я когда то переводил на новую версию этой либы и который по моему мнению декодит улчше оригинального декодера - http://www.killprog.com/mad_src.rar
Сдается мне, что самое простое10.10.08 12:10 Автор: Neznaika <Alex> Статус: Member
Во-первых, там всего несколько строчек получается
Во-2х, можно не париться насчет того, какой формат у аудио-файла
Ну и в-3х, Windows Media Player - он всегда есть
Media Player позволяет обрабатывать mp3 или только...12.10.08 06:27 Автор: Vedrus <Serokhvostov Anton> Статус: Member
И ещё один вопрос по поводу. Разве в mp3-формате звуковые...10.10.08 02:50 Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 10.10.08 02:56 Количество правок: 2
И ещё один вопрос по поводу. Разве в mp3-формате звуковые данные хранятся в незапакованном виде?
В недрах файла AudioFile.cpp этой программы я нашёл код, который вроде бы призван декодировать файл:
while ( dwSamplesToConvert > 0 )
{
// Determine how many byte to convert this time
DWORD dwBlockSize = min( dwSamplesToConvert, BLOCKSIZE );
// read chunck
fread( gpsSamples, dwBlockSize, sizeof( BYTE ), fpIn );
// And write the byte back to the file
fwrite( gpsSamples, dwBlockSize, sizeof( BYTE ), fpOut );
// Decrement the number of bytes to convert
dwSamplesToConvert -= dwBlockSize;
}
---
Отсюда видно, что вся декодеровка заключается в чтении и копировании. Или я что-то не так понял?
Может это чтение из временного, уже декодированного файла и запись в целевой?10.10.08 14:11 Автор: Den <Денис Т.> Статус: The Elderman
Заголовок-то понятно, что самому разобрать придётся. Благо в инете информации по этому предостаточно. Мой вопрос касается самих звуковых данных. Они имеют тот же формат, что и в wav?
Да10.10.08 12:44 Автор: amirul <Serge> Статус: The Elderman
Я тут пример нашёл, который вроде бы мне подходит, но одна...12.10.08 06:33 Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 12.10.08 17:18 Количество правок: 1
Я тут пример нашёл, который вроде бы мне подходит, но одна проблема...
К бинарным данным доступ есть, но не могу найти сколько бит на один звуковой отсчёт приходится.
Вот ссылка на пример:
http://rapidshare.com/files/153138842/AudioPlayer.zip Читает mp3 при помощи IWMReader. В callback функции onsample есть доступ к бинарным данным. Вот её кусок (находится в файле \audioplay.cpp)
---
Как мне определить, сколько каналов у звука, и сколько бит на один отсчёт приходится? Т.е. те данные, которые присутствуют в заголовке wav.
Да вроде ACM-у скармливаешься весь поток, а он его сам режет или не так?12.10.08 22:05 Автор: amirul <Serge> Статус: The Elderman Отредактировано 12.10.08 22:05 Количество правок: 1
Не знаю ACM, не ACM, но кто-то поток режет. В функцию OnSample данные поступают блоками. Но как определить нужные мне параметры?13.10.08 02:41 Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 13.10.08 02:41 Количество правок: 1
Спасибо, дядя волшебник. То что нужно.
Как я понял этот исходник для шестой студии написан?
Ноесть проблема - идёт обращение к библиотеке nafxcwd.lib, которого в составе шестой студии нет.
Он есть в составе студии 7.1, но при компиляции в ней другие проблемы вылазят. Можно как-нибудь библиотеку из 7.1 к 6.0 прикрутить?
На сколько я помню, lib можно получить из dll инструменом, который есть в составе VS09.10.08 20:18 Автор: Den <Денис Т.> Статус: The Elderman