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

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

23.09.2011, 13:15. Показов 18027. Ответов 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
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
25.09.2011, 14:00
Студворк — интернет-сервис помощи студентам
а средствами виндус никак нельзя? тоже интересует этот вопрос
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.09.2011, 14:57
Цитата Сообщение от nick42 Посмотреть сообщение
... и. И куда его потом направить?...
Поскольку вопрос о загрузке ресурсов из исполняемых файлов выходит за рамки этой книги, если вы хотите исследовать, как работает эта функция, вам придется сделать это самостоятельно. (Однако обратите внимание на тот факт, что при вызове функции PlaySound указывается флаг SND_MEMORY.)
Воспроизведение встроенных WAV-файлов
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.09.2011, 17:07  [ТС]
Со статьей ознакомился, спасибо. Правда она мало что мне разъяснила и не со всем я согласен. Мне, например, не очень понятно, к чему эти длинные прописи: загрузка ресурса, блокирование, затем освобождение. Я пока "умял" такие примеры - полчаса потерял (если 1 к 1, то ошибки на стадии компиляции). Сам же пользовался одной строкой (пост №8) и меня всё устраивало. Также не вижу резона отказываться от флага SND_ASYNC, - вы попробуйте в синхронном режиме, - будете без пользы по панели программы кликать, пока Децл не допоёт... . Ну и потом: всё это относится к WAV - файлам; они несжатые. А мне хочется mp3. Их по моему и склеивать на лету можно, если не ошибаюсь.
И с файлами .rc я люблю работать, но опять-таки без лишних телодвижений (ну, ленивый я...!). "Стройка" сама его компилирует, не нужно мне из .rc .res делать. Ну, и так далее... .
"... где бык-то?!" (Маугли) - что насчёт виртуального файла?
0
0 / 0 / 0
Регистрация: 19.07.2017
Сообщений: 1
11.11.2011, 11:10
Воспроизведение встроенных WAV-файлов
Ну вы блин даёте! О_о вы б еще DirectX к этому делу подключили бы
Связывайтесь с Win API, только если это лаконично будет.
А в некоторых ваших примерах по 10-20 строчек кода... nuff said.
Хотите проиграть WAV из ресурсов просто? Это можно сделать ОДНОЙ строкой.

const char* RES = "MYSOUND1";
PlaySound(RES,HInstance, SND_ASYNC | SND_RESOURCE);
// вместо HInstance может быть и NULL, программа на вас не обидится за это

В .rc-файле:
MYSOUND1 WAVE "DOOMMUSIC.wav"
-------------------------------------------------------------
И на всякий случай кидаю пример проигрывания *.MIDI файлов, ВДРУГ кто-нибудь использует MIDI как дешевую альтернативу MP3...

// открытие файла FILE.MID и присвоение ему псевдонима MUSIC
mciSendString("open FILE.MID type sequencer alias MUSIC", NULL, 0, 0);

// запускаем
mciSendString("play MUSIC from 0", NULL, 0, 0);

// ... где-нибудь в коде - остановка музыки
mciSendString("close MUSIC", NULL, 0, 0);

// поставить на паузу
mciSendString("pause MUSIC", NULL, 0, 0);

Правда, при снятии с паузы (командой "play MUSIC") все инструменты почему-то сбрасываются на ПИАНИНО... (у меня на двух разных аудиокартах было одно и то же)
а вот команда "play MUSIC from 0" отрабатывает корректно, но запускает музыку с начала (from 0).

Добавлено через 13 минут
Цитата Сообщение от nick42
"Стройка" сама его компилирует, не нужно мне из .rc .res делать.
+1
Надо просто включить .rc файл в состав проекта [Add file to project].
Вот например мой файл ресурсов, где подключены PNG и WAV файлы:

Цитата Сообщение от 1.rc
HERO1 RCDATA "res\hero.png"
MONSTERS1 RCDATA "res\monsters.png"
DOOMFONT RCDATA "res\doom_font.png"
LAVA RCDATA "res\lava_corner.png"
SKULLSWITCH RCDATA "res\SW2_7.png"
TREDA RCDATA "res\TREDA.png"
DSSLOP WAVE "res\DSSLOP.wav"
DSBOSDTH WAVE "res\DSBOSDTH.wav"
BUNNY RCDATA "res\E1M5.MID"
DSSWTCHN WAVE "res\DSSWTCHN.wav"
DSITEMUP WAVE "res\DSITEMUP.wav"
0
 Аватар для Whatson
9 / 9 / 0
Регистрация: 18.11.2011
Сообщений: 55
07.04.2014, 22:21
VladGuardian, спасибо!
0
23 / 3 / 3
Регистрация: 16.02.2014
Сообщений: 170
Записей в блоге: 1
21.07.2014, 14:19
Цитата Сообщение от VladGuardian Посмотреть сообщение
mciSendString("open FILE.MID type sequencer alias MUSIC", NULL, 0, 0);
Error 1 error C2664: 'MCIERROR mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND) ' : cannot convert argument 1 from 'const char [41]' to 'LPCWSTR'
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.07.2014, 15:22  [ТС]
Похоже, что вместо NULL (второй параметр) ожидается указатель (адрес) на символьный массив (строку), куда запишется результат операции
C++
1
mciSendString(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2014, 15:22
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru