информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Media Player позволяет обрабатывать mp3 или только... 12.10.08 06:27  Число просмотров: 1509
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Media Player позволяет обрабатывать mp3 или только проигрывать? Мне нужен доступ к бинарным данным
<programming>
[C++] Как загрузить и обработать mp3? 09.10.08 11:33  
Автор: 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
<"чистая" ссылка> <обсуждение закрыто>
Гнутая либа есть еще такая - mad -... 12.10.08 16:28  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Гнутая либа есть еще такая - mad - http://www.underbit.com/products/mad/
Ты насчёт чего? Какая библиотека гнутая? 12.10.08 17:16  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 12.10.08 17:18  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
гнутая - значит по лицензии GNU 12.10.08 17:20  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 12.10.08 17:25  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
гнутая - значит по лицензии GNU
библиотека - значит ее можно просто использовать вместо ковыряния исходного кода готового продукта
MAD - MPEG Audio Decoder
Но вобщем это дело твое - разбираться что это такое
А тут можно скачать в качестве примера исходники винампового mp3 декодера на ее основе, который я когда то переводил на новую версию этой либы и который по моему мнению декодит улчше оригинального декодера - http://www.killprog.com/mad_src.rar
Сдается мне, что самое простое 10.10.08 12:10  
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
это через Windows Media Player.

Во-первых, там всего несколько строчек получается
Во-2х, можно не париться насчет того, какой формат у аудио-файла
Ну и в-3х, Windows Media Player - он всегда есть
Media Player позволяет обрабатывать mp3 или только... 12.10.08 06:27  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Media Player позволяет обрабатывать mp3 или только проигрывать? Мне нужен доступ к бинарным данным
Ссылка на исходник CDexos: 09.10.08 17:41  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>


CDex release 170b2
И ещё один вопрос по поводу. Разве в 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 <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Вообще сам поток данных можно декодировать и ACM-ом 10.10.08 04:10  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Отсюда видно, что вся декодеровка заключается в чтении и
> копировании. Или я что-то не так понял?

Но mp3 хедер винда не понимает, насколько я знаю - придется самому искать
Заголовок-то понятно, что самому разобрать придётся. Благо в... 10.10.08 04:24  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Заголовок-то понятно, что самому разобрать придётся. Благо в инете информации по этому предостаточно. Мой вопрос касается самих звуковых данных. Они имеют тот же формат, что и в 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)
    pwh->lpData = ( LPSTR )&pwh[1];
    pwh->dwBufferLength = cbData; 
    pwh->dwBytesRecorded = cbData;
    pwh->dwUser = ( DWORD )cnsSampleTime;
    pwh->dwLoops = 0;
    pwh->dwFlags = 0;
	
    CopyMemory( pwh->lpData, pData, cbData );

---
Как мне определить, сколько каналов у звука, и сколько бит на один отсчёт приходится? Т.е. те данные, которые присутствуют в заголовке 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
<"чистая" ссылка> <обсуждение закрыто>
Спасибо, дядя волшебник. То что нужно. 09.10.08 19:28  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Спасибо, дядя волшебник. То что нужно.
Как я понял этот исходник для шестой студии написан?
Ноесть проблема - идёт обращение к библиотеке nafxcwd.lib, которого в составе шестой студии нет.

Он есть в составе студии 7.1, но при компиляции в ней другие проблемы вылазят. Можно как-нибудь библиотеку из 7.1 к 6.0 прикрутить?
На сколько я помню, lib можно получить из dll инструменом, который есть в составе VS 09.10.08 20:18  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Во первых это только в делфях (в vs тоже можно но чуть сложнее) 10.10.08 02:10  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Во вторых nafxcwd - это если я не ошибаюсь статический mfc. Не получится короче
И что это за инструмент? 10.10.08 01:56  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach