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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу разобраться в воспроизведении звука, Проигрывание mp3 без сторонних библиотек 
:(
    Опции темы
GuyFawkes
Дата 1.6.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, уважаемые знатоки!
Хотелось бы узнать, как без помощи всяких встроенных функций/DirectSound/MMSystem/сторонних библиотек вроде bass.dll и прочего воспроизвести формат mp3 (потом -  и прочие). 
Суть не в том, что я хочу изобретать велосипед. Просто очень хочется понять и узнать, как прочитать файл (если спецификация есть на руках) и, что главное, его воспроизвести.
Дайте, если это возможно, ссылку на хорошо прокомментированный кусок исходного кода, без всяких ненужных приблуд (а то в сорцах той же bass черта с два разберешься) и вообще на общий принцип работы.
Заранее благодарен.
PM MAIL ICQ   Вверх
Rrader
  Дата 1.6.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Цитата(GuyFawkes @  1.6.2009,  23:26 Найти цитируемый пост)
а то в сорцах той же bass черта с два разберешься

Это какие сорцы? Библиотека с закрытым кодом, насколько мне известно.
Цитата(GuyFawkes @  1.6.2009,  23:26 Найти цитируемый пост)
Просто очень хочется понять и узнать, как прочитать файл (если спецификация есть на руках) и, что главное, его воспроизвести.

Декодер+вывод на звуковое устройство.
Цитата(GuyFawkes @  1.6.2009,  23:26 Найти цитируемый пост)
отелось бы узнать, как без помощи всяких встроенных функций/DirectSound/MMSystem/сторонних библиотек вроде bass.dll и прочего воспроизвести формат mp3 (потом -  и прочие). 

Тогда не завидую. ASIO еще забыли написать, наверное smile Тогда путь к DDK в разделы по аудиоустройствам.

Добавлено через 3 минуты и 20 секунд
P.S.
Самопальные декодеры есть на Delphi, но где точно найти не подскажу. С низкоуровневым выводом звука сложнее, не одну сотню строк кода займет простейший пример. Ищите библиотеки типа NewAC, разбирайтесь.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Alexeis
Дата 1.6.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



mpg123 опенсорсная, но код на С


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

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

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


Новичок



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

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



Цитата

Это какие сорцы? Библиотека с закрытым кодом, насколько мне известно.

Таки где-то видел исходники какой-то версии, но, возможно, это лишь мой бредовый сон.
Цитата

вывод на звуковое устройство.

Вот! Самое главное! Как его произвести? Можете даже кинуть в меня куском кода/ссылкой.

И тогда подскажите - если остается путь только низкоуровнего вывода звука, как же играют mp3/ogg куча компонентов для дельфи? Они переводят звук в wav-поток и выводят его стандартным образом?
PM MAIL ICQ   Вверх
Alexeis
Дата 1.6.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



  mp3 можно и через MCI проиграть. Его сейчас чем угодно можно проиграть чуть ли не калькулятором smile .


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

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

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


Новичок



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

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



И еще: если есть возможность воспроизвести мп3 через тот же DirectSound - покажите, как.
PM MAIL ICQ   Вверх
GuyFawkes
Дата 1.6.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
mp3 можно и через MCI проиграть.


Знаю, код этот простой везде в сети валяется. Но хочу код с DirectSound. Не сочтите упоротым меня)
PM MAIL ICQ   Вверх
Keeper89
Дата 2.6.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Насколько я знаю, DirectSound mp3 не проигрывает, нужно использовать DirectShow.


--------------------
PM MAIL WWW   Вверх
Keeper89
Дата 2.6.2009, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Посмотрите вот это.


--------------------
PM MAIL WWW   Вверх
Rrader
  Дата 2.6.2009, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



mp3 перед проигрыванием нужно раскодировать. А дальше подавать на DSound непожатый поток. Для начинающих скажу сразу, что это весьма непросто.  
http://symmetrica.net/newac/ - здесь большая библиотека на Delphi, там есть полнофункциональная реализация вывода звука через DSound с предварительной раскодировкой через декодер Windows Media.

Я в своей практике раскодировку делал через декодер MAD, потом выдавал на DSound.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
GuyFawkes
Дата 2.6.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Keeper89 @  2.6.2009,  00:18 Найти цитируемый пост)
Насколько я знаю, DirectSound mp3 не проигрывает, нужно использовать DirectShow. 

Хм, спасибо за ссылку, но там, к сожалению, лишь воспроизведение видео.


2Rrader: библиотеку я скачал, но можете подсказать (без знания материала довольно тяжело начать понимать, раскручивать буду постепенно), в каком исходном файле находится код, непосредственно отвечающий за декодирование mp3? Название как-то связано с ACS? Просто в ее демках MP3-плеер есть, а вот понять, как реализован этот компонент, не могу.

PM MAIL ICQ   Вверх
Rrader
  Дата 2.6.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Декодирование звука там осуществляется через декодер Windows Media.
Код

type

// Yeah, folks that's all there is to it.

(* Class: TMP3In
   The mp3 file/stream decoder that uses the Windows built-in decoder,
   descends from <TWMIn> *)

  TMP3In = class (TWMIn)
  end;

Я Вам советовал эту библиотеку не с позиции декодера, а с позиции DSound. 
http://sourceforge.net/projects/delphimpeg/
http://www.google.ru/search?hl=ru&clie...mp;aq=f&oq=



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
GuyFawkes
Дата 2.6.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Rrader @  2.6.2009,  12:26 Найти цитируемый пост)
а с позиции DSound. 

а где код, выполняющий воспроизведение через DS, подскажете?
PM MAIL ICQ   Вверх
SneG0K
Дата 2.6.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(GuyFawkes @  1.6.2009,  21:50 Найти цитируемый пост)

Таки где-то видел исходники какой-то версии, но, возможно, это лишь мой бредовый сон.

Ты наверно говорил про хидеры?
PM WWW Skype   Вверх
GuyFawkes
Дата 2.6.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Скачал delphimpeg. Понял, что декодинг идет в ней самой, а воспроизведение - через MMSystem (MCI)? Верно?

Еще: в OBuffer.pas:

Код

type
  // Abstract base class for audio output classes:
  TOBuffer = class
  public
    // this function takes a 16 Bit PCM sample
    procedure Append(Channel: Cardinal; Value: SmallInt); virtual; abstract;

    // this function should write the samples to the filedescriptor
    // or directly to the audio hardware
    procedure WriteBuffer; virtual; abstract;

...


в MPEGPlay.pas 

Код

  OBuffer_Wave in 'OBuffer_Wave.pas',
  OBuffer_MCI in 'OBuffer_MCI.pas',


однако вызывается функция WriteBuffer, объявленная как override (в обоих файлах) из OBuffer_MCI, а не из OBuffer_Wave. Почему?

Добавлено @ 14:10
Цитата(SneG0K @  2.6.2009,  13:59 Найти цитируемый пост)
Ты наверно говорил про хидеры? 

мне кажется, я видел все же не хидеры, а полные сорцы.

Это сообщение отредактировал(а) GuyFawkes - 2.6.2009, 14:13
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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