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

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

23.09.2011, 13:15. Показов 18222. Ответов 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
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru