Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > как сделать воспроизведения файла


Автор: dubik55 19.10.2011, 09:53
как в С++ сделать воспроизведения медиа файла (музыкального). Мне не нужно целый плеер, а только код, который воспроизводит музыкальный файл (MP3, WAV, WMA).
Напишите пожалуйста код. Буду очень благодарен.

Автор: borisbn 19.10.2011, 12:37
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx

Автор: dubik55 21.10.2011, 09:59
Спасиба

Автор: BEOWOLF 22.10.2011, 15:50
PlaySound - фигня, лучше уж в таком случае средствами MCI пользоваться. У меня по этой теме другой вопрос: никто никогда не решал проблему, как воспроизвести MP3-файл, загруженный в память? А то MCI работает только с внешними файлами, а XAudio2 - только с PCM-форматом, ну ещё со своим xWMA.

Автор: borisbn 22.10.2011, 23:43
Цитата(BEOWOLF @  22.10.2011,  15:50 Найти цитируемый пост)
никто никогда не решал проблему, как воспроизвести MP3-файл, загруженный в память?

http://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx

Автор: vol4ek 23.10.2011, 22:46
решал проблему как достать файл из памяти, должно сгодиться.
добовляем файл к проекту и
Код

#include "Resource.h"
#include <windows.h>



// Инициализируем переменные
HRSRC hRes = 0;
HGLOBAL hData = 0;
LPVOID pData;

// Находим ресурс в исполняемом файле, указав идентификатор и тип ресурса 

hRes = FindResource(NULL,MAKEINTRESOURCE(IDR_MP31), "mp3");
// здесь будет храниться размер ресурса.
DWORD dwSize = SizeofResource(0,hRes);
// Загружаем ресурс
hData = LoadResource(NULL, hRes);  //первый параметр HANDLE модуля если ресурс в другом файле например DLL
// Фиксируем ресурс в памяти и получаем указатель на первый байт ресурса
pData = LockResource(hData);
// Создаём файл, в который будем писать
HANDLE File = CreateFile("resource.mp3",GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_ALWAYS,0,0);
// здесь сколько байт записано в файл
DWORD Written = 0;
// Записываем весь ресурс в файл
if(WriteFile(File,pData,dwSize,&Written,0)==NULL);
CloseHandle(File);


только здесь идет запись в файл. Попробуй поэксперементировать с этим кодом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)