Главная arrow Лаборатория arrow Лаборатория кода arrow Воспроизведение mp3 из exe без компонент  
11.03.2010
Главное меню
Главная
Лаборатория
Книги по дельфи
Инструменты
Статьи
Видео
Юмор
Поиск
Новости
Лента новостей
Новости Delphi
Новости проекта
Новости инструментов
Разные новости
База знаний Delphi
Общие вопросы
Windows, WinAPI
Графика, Звук
IDE Delphi
Консоль
Голосования
Каталог@Mail.ru - каталог ресурсов интернет
комментарии
Воспроизведение mp3 из exe без компонент Версия для печати
Рейтинг: / 34
ХудшаяЛучшая 
Лаборатория кода
Написал Snowy   
05.05.2007
Как добавить в свою программу звук? Но не просто добавить, а сделать так, чтобы он играл не из какого-то файла, а был вшит в exe! И не просто звук, а чтобы это ещё и не сильно увеличивало размер программы!
Вопросы трекерной музыки отложим на потом. Сейчас поговорим об mp3.
Итак, наша задача засунуть mp3 в нашу программу и заставить его воспроизводиться по комманде. Для этого нам, разумеется, понадобится сам файл.
Для тех кто не знает, как добавить его в ресурсы своей программы:
  • Создаем текстовый файл с именем sounds.rc
  • Прописываем в него наши файлы. Каждый файл в ресурсах = 1 строке. Пример содержимого файла:
     
    SND1   WAVE  1.wav
    SND2   WAVE  Bum.wav
    SND3   WAVE  Crazy.wav
    Первое слово - имя, которое мы будем указывать в программе.
    Второе - тип ресурса = wav файл
    Третье - имя файла
  • сохраняем файл.
  • Компилим его из коммандной строки: brcc32 sounds.rc
  • В результате получаем откомпиленный файл - sounds.res.
Второй этап:
В программе подключаем этот файл:
{$R sounds.res}
Теперь для воспроизведения звука нужно дать комманду:
PlaySound('SND1', 0, SND_RESOURCE or SND_ASYNC);
, где первым параметром - имя, назначенное нами файлу в файле ресурсов

Предчувствую Ваше справедливое возмущение: "Как же так? Нам обещали mp3!"
Третий этап:
Открываем меню Пуск -> Программы -> стандартные -> Развлечения
Запускаем "Звукозапись". У кого нет, можно доустановить через установку/удаление программ или воспользоваться другой программой подобного рода.
Открываем наш wav файл: Меню -> Файл -> открыть.
Теперь превратим его в mp3: Меню -> Файл -> Свойства Нажимаем кнопку "Конвертировать".
Выбираем формат MP3 и нужное нам качество воспроизведения.
Сохраняем: Меню -> Файл -> Сохранить.
Все. Теперь внутри нашего wav файлика реально сидит MP3, который без проблем воспроизводится через PlaySound при наличии в системе установленного MP3 кодека. А данный кодек установлен во всех Windows >= 2000 по умолчанию. В более ранние как правило попадает вместе с другими программами или наборами кодеков.

Готовый пример проекта можете взять тут (69кб)
опубликовано
Добавить новыйПоиск
Tesla - Упс     2008-02-22 02:52:53
Вы наверное не учли один момент.
Момент подвисания программы во время проигрывания музыки этим способом.
Snowy   2008-02-23 02:20:32
Воспроизведение идёт в асинхронном режиме.
О каком подвисании речь?
Tesla     2008-02-24 16:32:29
Сам попробуй это сделать на форме и посмотришь
Snowy   2008-02-26 20:49:13
SND_ASYNC - нет никакого подвисания, ни на форме, ни без неё.
Что касается программы - примера, то там нет SND_ASYNC специально - чтобы программа завершалась по окончании проигрывания звука.
Без этого флага да - подвисание будет.
Tesla - Сори     2008-03-05 00:15:39
Хм, не знал :confused: , спс, что сказали, с меня пиво ;)
CODER   2008-03-11 09:44:03
При чем тут формат MP3?
Snowy   2008-03-14 12:53:08
При том, что производится сжатие в mp3
Alexius   2008-05-04 18:12:27
Слушай отлично придумано. Я буду юзать этот исходник теперь каждый раз при составлении мультемедиа программы. Спс :!:
Jomla   2008-05-23 04:39:03
Я так и не понял КАКОЙ ПАРОЛЬ? Кругом одно КИДАЛОВО.
Snowy   2008-05-23 15:28:01
Ну что тут ответить...
Просто нет слов.
Ну зачем тебе пароль? Ты ж даже читать не умеешь.
Анонимно   2008-08-28 16:38:07
ах вот это новость )))) RIFF-стандарт ещё в windows 3.1 придумали, и в нём может хранится любое медиа, и оно будет "родное" для винды :whistle:
чем-то похоже на оле-контейнер
Snowy   2008-08-28 23:35:59
Именно. AVI аналогично. Но про ави все знают, а вот про wav нет...
Sneg0k   2008-09-13 12:49:49
Молодец Снови! Отличный ресурс!
navado   2010-02-18 16:24:39
народ, как запустить звук ясно. А как звук остановить? Например, когда закрываешь форму?
Snowy   2010-02-19 15:59:35
PlaySound('SND1', 0, SND_PURGE); остановит SND1.
PlaySound(nil, 0, SND_PURGE); остановит все звуки.
Добавить комментарий
Имя:
Веб-сайт:
Заголовок:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Security Image
Пожалуйста, введите проверочный код, который Вы видите на картинке.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

 
< Пред.