Как добавить в свою программу звук? Но не просто добавить, а сделать так, чтобы он играл не из какого-то файла, а был вшит в exe! И не просто звук, а чтобы это ещё и не сильно увеличивало размер программы!
Про трекерную музыку рассказано здесь. Сейчас поговорим об mp3.
Итак, наша задача засунуть mp3 в нашу программу и заставить его воспроизводиться по комманде.
Для этого нам, разумеется, понадобится сам файл.
Для тех кто не знает, как добавить его в ресурсы своей программы:
Создаем текстовый файл с именем sounds.rc
Прописываем в него наши файлы. Каждый файл в ресурсах = 1 строке. Пример содержимого файла:
Первое слово - имя, которое мы будем указывать в программе.
Второе - тип ресурса = 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 по умолчанию. В более ранние как правило попадает вместе с другими программами или наборами кодеков.
ах вот это новость )))) RIFF-стандарт ещё в windows 3.1 придумали, и в нём может хранится любое медиа, и оно будет "родное" для винды
чем-то похоже на оле-контейнер
Не понял. Ведь файл ресурсов уже скомпилирован, в него уже запихана песня. Смысл исходную песню конвертировать?
И ещё, функция playSound не читает mp3,
даже если расширение на wav поменять.
WAV здесь всего лишь контейнер, внутри которого находится mp3.
WAV - такой же RIFF контейнер, как и avi.
Ни у кого же не вызывает удивления, что видеофайл сжат в mp4, хотя расширение у него avi, а не mp4.
C wav то же самое. Как и в avi там можно хранить несжатые данные, а можно сжатые.
Переименование mp3 в wav тут ничего не даст - это ж другой формат. Нужно просто пережать внутренности wav файла
Как это сделать - в тексте описано.
А в примере есть wav файлик. Если открыть его свойства, то мы увидим, что внутри wav там mp3.
Ключевая фраза статьи:
"... при наличии в системе установленного MP3 кодека".
А кодек может быть кривой или его может не быть вовсе. Скажем, в свежеустановленной XP его нет.
Берите уж BASS.dll, загоняйте её в свой exe-шник dll-loader'ом, mp3 - в ресурс и звучите надёжно. Да ещё и с морем всяких возможностей.
Ага поработал с вашим файлом) спасибо огромное, ну всё таки не понятно как пере компилировать) один фиг ошибку выдает Ещё бы было бы круто если бы вы сделали видео, цены бы не было вам Спасибо
Добрый день.
Подскажите решение задачи.
Внешний девайс по USB передает цифровой контент (оцифрованный адуосигнал в реальном времени в формате МР3). Я умею по USB на стороне ПК принять указанный контент - последовательность байтов (некий буфер). Теперь мне надо на стороне ПК эту последовательность байтов воспроизвести. Я не знаю - что с этой последовательностью байтов делать - сохранять ли в какой-то временный файл или что-то еще, чтобы воспользоваться функцией PlaySound.
Возможно и не так надо делать, и совсем другой функцией. Кто что либо знает - подскажите. Можно через почту ntv1978@mail.ru
А как вот это сделать Компилим его из коммандной строки: brcc32 sounds.rc вот это как сделать?
Сохраняешь к примеру свои файлы (sounds.rc и WAVы) в папочку "1" на диске С:
через командную строку заходишь туда (cd c:\1) и набираешь brcc32 sounds.rc
Твоюж мать или я тупой или не канает! Заманало! Пишет
[Error] File C:\Users\Raphael\Desktop\s\sound.RES resource kept; file C:\Users\Raphael\Desktop\s\sound.RES resource discarded.