Как добавить в свою программу звук? Но не просто добавить, а сделать так, чтобы он играл не из какого-то файла, а был вшит в 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 по умолчанию. В более ранние как правило попадает вместе с другими программами или наборами кодеков.
SND_ASYNC - нет никакого подвисания, ни на форме, ни без неё.
Что касается программы - примера, то там нет SND_ASYNC специально - чтобы программа завершалась по окончании проигрывания звука.
Без этого флага да - подвисание будет.
ах вот это новость )))) RIFF-стандарт ещё в windows 3.1 придумали, и в нём может хранится любое медиа, и оно будет "родное" для винды
чем-то похоже на оле-контейнер
Не понял. Ведь файл ресурсов уже скомпилирован, в него уже запихана песня. Смысл исходную песню конвертировать?
И ещё, функция playSound не читает mp3,
даже если расширение на wav поменять.
WAV здесь всего лишь контейнер, внутри которого находится mp3.
WAV - такой же RIFF контейнер, как и avi.
Ни у кого же не вызывает удивления, что видеофайл сжат в mp4, хотя расширение у него avi, а не mp4.
C wav то же самое. Как и в avi там можно хранить несжатые данные, а можно сжатые.
Переименование mp3 в wav тут ничего не даст - это ж другой формат. Нужно просто пережать внутренности wav файла
Как это сделать - в тексте описано.
А в примере есть wav файлик. Если открыть его свойства, то мы увидим, что внутри wav там mp3.
Два предыдущих топика относятся к модераторам uNet.
Жду письма с правильным URL активации.
Ваша ошибка - Вы оправили не полный адрес активации:http://www.u...
Либо DelphiDistiller не работает, либо чего-то не понимаю, после...
Прошу прощенья =) Оказалось Антивирус блокировал.
Установка Дельфи 5 - Люди добрые подскажите пожалуйста.Пытаюсь у...
3-5Мб скушает без проблем.А вот 3-5Гб ни в коем разе. 32-битный ...
Обновленная ссылка - Ссылка изменилась.Turbo Delphi Portable Lit...
LZMA - А где можно скачать исходник на препроцессоровку ?
Alternative variant - switch off internal debugger.