Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проигрывание *.mp3 из ресурса

4.3K
24 декабря 2006 года
valeriy15
84 / / 03.04.2006
Пожалуйста, подскажите, как проиграть *.mp3-файл добавленный в ресурс моего приложения.
547
25 декабря 2006 года
Hydra
488 / / 20.06.2006
IDirectMusic, IDirectMusicLoader
4.3K
25 декабря 2006 года
valeriy15
84 / / 03.04.2006
А поточнее можно?
4.1K
26 декабря 2006 года
GRIENDERS
117 / / 06.06.2006
Цитата: valeriy15
Пожалуйста, подскажите, как проиграть *.mp3-файл добавленный в ресурс моего приложения.


ИМХО IDirectMusic, IDirectMusicLoader могут проигрывать только wav и midi.
У меня другая идея: надо "распаковать" ресурс в файл и проиграть его.
Хотя не вижу смысла запихивать его в приложение, а затем распаковывать.
Вот код (RESPECT ШпиёнУ)

Код:
HRSRC hRes = FindResource(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MY_MP3),"my_mp3");
    if (hRes)
    {
        HGLOBAL hGlob = LoadResource(GetModuleHandle(NULL),hRes);
        HANDLE hFile = CreateFile("test.mp3", GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN,0);
        DWORD dwWr;
        WriteFile(hFile,hGlob,SizeofResource(GetModuleHandle(NULL),hRes),&dwWr,0);
        CloseHandle(hFile);
        FreeResource(hGlob);
        WinExec("text.exe", SW_SHOWNORMAL);
    }

Просто запусти прогу, а ресурс распакуется в отдельный файл и запустится.
4.3K
04 января 2007 года
valeriy15
84 / / 03.04.2006
Большое спасибо за код! :rolleyes: Только это будет не совсем уместно т.к. приложение будет записано на CD, да и ожидание записи из ресурса в файл будет занимать некоторое время. Мне бы вот из ресурса прочитать.
547
10 января 2007 года
Hydra
488 / / 20.06.2006
Что-то типа такого - должен играть все что угодно.
Код:
IDirectMusicPerformance8 *IMix
  IDirectMusicLoader8 *ILoader;
  CoCreateInstance(CLSID_DirectMusicPerformance,NULL,CLSCTX_INPROC,
                        IID_IDirectMusicPerformance8,(void**)&IMixer);
  IMixer->InitAudio(NULL,NULL,NULL,DMUS_APATH_SHARED_STEREOPLUSREVERB,64,
                                DMUS_AUDIOF_ALL,NULL);

  CoCreateInstance(CLSID_DirectMusicLoader,NULL,CLSCTX_INPROC,
                        IID_IDirectMusicLoader8,(void**)&ILoader);
  HGLOBAL snd=LoadResource(hRes,FindResource(hRes,name,"SOUND"));
  DMUS_OBJECTDESC desc;
    desc.dwSize=sizeof(DMUS_OBJECTDESC);          // Create resource desc
  desc.guidClass=CLSID_DirectMusicSegment;
  desc.dwValidData=DMUS_OBJ_CLASS|DMUS_OBJ_MEMORY;
  desc.pbMemData=(char*)LockResource(snd);
  desc.llMemLength=SizeofResource(hRes,snd);
  ILoader->GetObject(&desc,IID_IDirectMusicSegment8,(void**)&ISeg);
  ILoader->Release();
  ISeg->Download(IMixer);
  IMixer->CreateStandardAudioPath(DMUS_APATH_SHARED_STEREOPLUSREVERB,
                                64,1,&ICtrl);
  IMixer->PlaySegmentEx(ISeg,NULL,NULL,sFlags|DMUS_SEGF_SECONDARY,
                                0,NULL,NULL,ICtrl);
398
10 января 2007 года
Alexandoros
630 / / 21.10.2005
Hydra, если мне память не отшибает, то IDirectMusic не может и не будет играть проприетарные форматы не микроса. Повторюсь, если не память не подводит.

Для проигрывания мп3 нуна сторонняя библиотека, коих в нете хоть и не много, но точно есть, так что предлагаю valeriy15 обратится к ним. И в то же время помнить о вопросах лицензирования, мп3 - дорого стоит.

А еще как вариант - заюзать огг.
547
11 января 2007 года
Hydra
488 / / 20.06.2006
Мдя, память тебе не изменяет. Чисто mp3 не проигрывается.
Его надо как-то в сжатый riff перегнать.
6.6K
14 января 2007 года
Scaiman
126 / / 25.07.2006
любой mp3 файл назови 1_MUSIC.mp3 и запусти прогу.
4.3K
15 января 2007 года
valeriy15
84 / / 03.04.2006
Благодарю всех, кто помогал мне решать этот вопрос! :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог