Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/95: Рейтинг темы: голосов - 95, средняя оценка - 4.51
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798

Как воспроизвести звук из ресурса (mp3)

23.09.2011, 13:15. Показов 18039. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне в приложении нужно использовать три муз. фрагмента *.mp3, которые я поместил в ресурсы как BINARY.
Сейчас я поступаю "некрасиво", - отправляю их в буфер, его записываю как файл и в функции воспроизведения ...
hwnd = MCIWndCreate(hwndParent, hInstance, 0, "fragm.mp3");
MCIWndPlay(hwnd);
пользуюсь этим файлом.
ХОТЕЛОСЬ БЫ "научить" MCIWndCreate вместо файла использовать сам буфер (массив) или поток.
Может кто знает, как иначе "скроить" воспроизведение *.mp3 из ресурса?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2011, 13:15
Ответы с готовыми решениями:

Как воспроизвести mp3-звук
Всем здравствуйте. Для wav-файлов всё понятно. Воспроизвести: PlaySound("example.wav",0,SND_ASYNC); Прервать...

Как воспроизвести звуковой файл ресурса
Как воспроизвести в AxWindowsMediaPlayer файл из ресурса? звуковой обычный wav закинут в ресурс. как прописать его в качестве URL для...

Как воспроизвести mp3
Пробую таким способом: System.Media.SoundPlayer sp = new System.Media.SoundPlayer(@"C:\My downloads\Music\1 Klass - Dva...

26
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
23.09.2011, 16:50
bass.dll тебе в помощь + документация в архиве
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
23.09.2011, 17:32
может, LoadFromResourceName, или LoadFronStream, или
C++
1
PlaySound("IDC_NAME" /*имя ресурса*/, 0, SND_RESOURCE );
я не помню, умеет ли PlaySound играть мп3, но общий подход такой
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
23.09.2011, 17:56
nick42,
Вас нужен работать с bass -ом (bass.dll, bass.h, bass.lib)
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
23.09.2011, 20:23
LK, mp3 вроде не умеет, ну или у меня просто не получилось =/
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.09.2011, 22:27  [ТС]
PlaySound с WAV точно умеет работать из ресурса (проверено); только вот размер программы неоправданно растёт. Также не очень бы хотелось использовать подгружаемые библиотеки (типа bass.dll) - оставлю на крайний случай. Пока играюсь с SND_MEMORY в функции:
C++
1
 PlaySound(buff, 0, SND_MEMORY);
но пока в программе вываливается на ошибку.
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
23.09.2011, 23:57
а у меня почему то не получается вавку с ресурса проиграть >_<
nick42, подскажи
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
24.09.2011, 12:02  [ТС]
Цитата Сообщение от Flyer Посмотреть сообщение
а у меня почему то не получается вавку с ресурса проиграть >_<
nick42, подскажи
Я делаю так: подключаю к проекту файл ресурсов - nn.rc, в котором есть строка типа:
BUBEN SOUND "img/buben.wav"
и в программе что-то наподобие этого (с использованием #include <mmsystem.h>):
C++
1
2
3
4
    void __fastcall TForm1::Button1Click(TObject *Sender)
{
      PlaySound("BUBEN", 0, SND_RESOURCE | SND_ASYNC);
}
1
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
24.09.2011, 13:05
ага, тип саунд. Просто в рад хе2 в проект - > ресурсы и картинки не было такого типа
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.09.2011, 00:55  [ТС]
... и всё же по теме: можно ли каким-то образом сопоставить имени (constant char) поток со свойствами файла или именованный массив, тоже со свойствами файла. Что бы MultimediaControlInterface (MCI) захотел работать с ним, как с файлом, и не пришлось бы создавать промежуточный файл на диске (а не в памяти)?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.09.2011, 01:03
Цитата Сообщение от Flyer Посмотреть сообщение
ага, тип саунд. Просто в рад хе2 в проект - > ресурсы и картинки не было такого типа
ну а RCDATA там было ?
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
25.09.2011, 01:13
было, собственно то я и выбрал, но звук не проигрывался.
а сейчас попробовал, походу я просто не услышал его
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.09.2011, 01:28  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
ну а RCDATA там было ?
запись в файле .rc строки вида
soundX RCData "file.wav"
действительно помещает этот файл в раздел RCData ресурсов; но как его затем воспроизвести? Флаг "SND_RESOURCE" указывает на тип ресурса, а какой должен быть флаг в случае RCData, - я не знаю. Может "SND_ALIAS_ID"? Путем перебора всех флагов - длинная песня получается... .
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
25.09.2011, 01:31
а не, LK, он таки не проигрывается когда тип ресурса RCDATA
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.09.2011, 02:37
читай сюды
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.09.2011, 10:06  [ТС]
LK, спасибо! Интересная статья

Добавлено через 1 час 16 минут
Поймите правильно мою назойливость... . Какие варианты рассматриваются: заменить в ресурсах .mp3 на .wav и использовать winmm.dll; использовать сторонние библиотеки (bass.dll), а значит портабельность приложения под угрозой, - нужно использовать инсталлятор; наконец оставить всё как есть, то-есть создавать временный файл, а это ведёт к задержке звука по крайней мере при первом запуске. Между тем, - третий вариант (временный файл и стандартная библиотека) меня бы вполне устроил без временного файла. И он работает! Не могу поверить, что в возможностях мощного C++ нет такой возможности, как подмена физического файла на диске его аналогом в виде массива или потока. Ведь структура данных идентична!
0
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
25.09.2011, 11:32
Цитата Сообщение от nick42 Посмотреть сообщение
а значит портабельность приложения под угрозой
Когда я первый раз его использовал, мне так же стало интересно, и я наделал много разных маленьких программ, после чего пробывал на разных компах, проблем не было вообще!
PS в прогах я библиотеку подключал динамически
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.09.2011, 11:56  [ТС]
Даже если динамически... - я куда от использования bass.dll денусь? А если ее нет на компе? С собой носить? Это было бы удачное решение, не будь стандартной библиотеки msvfw32, которая умеет воспроизводить mp3 (мне и качество-то особо не нужно!). Вопрос в том, как ей подсунуть вместо физического файла виртуальный.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.09.2011, 13:05
ну так сделайте себе поток:
C++
1
TMemoryStream *MyResourceStream;
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.09.2011, 13:15  [ТС]
... и. И куда его потом направить?...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.09.2011, 13:15
Помогаю со студенческими работами здесь

Как воспроизвести mp3 файл?
Всем привет! Как воспроизвести mp3 файл?

Как воспроизвести mp3 файл
Как воспроизвести mp3 или другой звуковой файл?

Как воспроизвести mp3 файл из ресурсов?
У меня в ресурсах проекта есть mp3 и я его хочу воспроизвести. Как же мне это сделать? И чтобы можно было переносить exe-шник из места в...

Как воспроизвести MP3 файл по ссылке?
Здравствуйте! Имеется ссылка на mp3 файл &quot;http://sait.ru/file.mp3&quot;. Нужно сделать, что бы по нажатию на кнопку этот файл...

Как воспроизвести стандартными средствами mp3 файл
Как воспроизвести стандартными средствами mp3 файл в python. Без разных сторонних модулей, просто звук mp3.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru