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


Автор: Robix 28.5.2015, 13:11
Подскажите пожалуйста, где можно найти пример воспроизведения .wav файла в VS2010?
Или если у вас это было реализовано, можете пожалуйста скинуть образец кода или посоветовать, что изучить для реализации этого. Лучше конечно образец кода) А там дальше я разберусь

Автор: xvr 28.5.2015, 15:28
Лучше всего для этого (равно как и для воспроизведения любой мультимедии) подходит DirectShow. Буквально несколько строк.

Вот пример:
Код

#include <windows.h>
#include <stdio.h>

#include <atlbase.h>

#include <DShow.h>

#include <INITGUID.H>
DEFINE_GUID(CLSID_FilterGraph,
0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70);

void chk_(HRESULT hr, const char* str)
{
 if (hr<0)
  {
   printf("Error %08X in %s\n",hr,str);
   exit(1);
  }
}

#define HR(v) chk_(v,#v)
#define mERROR(msg) chk_(-1,msg)

void run(char* nm)
{
 USES_CONVERSION;
 
 CComPtr<IGraphBuilder> graph_builder;
 HR(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
                         __uuidof(IGraphBuilder), (void **)&graph_builder));
 HR(graph_builder->RenderFile(A2W(nm),NULL));
 
 CComQIPtr<IMediaControl> graph_ctrl(graph_builder);
 if (!graph_ctrl) mERROR("Can't get IMediaControl interface from Graph");
 HR(graph_ctrl->Run());

 getchar(); 
}

int main(int argc, char** argv)
{
 if (argc<1) mERROR("Expected file name");
 CoInitialize(0);
 run(argv[1]);
 CoUninitialize();
 return 0;
}
Ваша функция - run

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