Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2009.11.15;
Скачать: [xml.tar.bz2];

Вниз

Воспроизвести WAV из части файла.   Найти похожие ветки 

 
AlexanderMS ©   (2008-01-09 17:59) [0]

Есть один большой файл, который состоит из нескольких файлов (несжатый архив), в числе которых и WAV-файл. Нужно  воспроизвести этот WAV-файл с помощью DirectSound (известно смещение относительно начала архива и длина файла), не заводя дополнительных файлов. Подскажите, пожалуйста, как это можно сделать?


 
@!!ex ©   (2008-01-09 18:43) [1]

Прочитать в память кусок, создать сэпл DirectSound, передать ему этот кусок... и гиде проблема???


 
AlexanderMS ©   (2008-01-09 19:10) [2]


> гиде проблема???

Проблема в том, что я совершенно не изучал и не разбирался с DirectSound, подключил готовый звуковой движок и всё (конечно, я не прав, но времени на всё не хватает). Вот код загрузки из файла:

constructor TSound.Create(FileName : string);
var
 R : HRESULT;
 pConfig : IUnknown;
begin
 FVolume := 75;
 AutoDelete := true;
 AddSoundToArray(Self);

 if not assigned(Loader) then
 begin
     ;//Log("Playing "" + FileName + ""... The SoundManager isn""t loaded !", true);
 end else begin
     R := Loader.LoadObjectFromFile(CLSID_DirectMusicSegment, IDirectMusicSegment8,
                                    pwidechar(WideString(FileName)), Segment);
     if FAILED(R) then
     begin
        //Log("The Sound "" + FileName + "" isn""t loaded: " + DMErrorString(R), true);
//         ShowError("The Sound "" + FileName + "" isn""t loaded: " + DMErrorString(R));

        Segment := nil;
        Exit;
     end;

     if SUCCEEDED(Segment.GetAudioPathConfig(pConfig)) then begin
        R := Performance.CreateAudioPath(pConfig,
                          true,
                          Path);
        pConfig := nil;
     end else begin
        R := Performance.CreateStandardAudioPath(MONO_STEREO[InitStereo],
                                                 InitChannels, true, Path);
     end;

     if FAILED(R) then DirectMusicLog(R);

     SetVolume(FVolume);
     Segment.Download(Performance);
 end;
end;


Понятия не имею, куда и что можно добавить. :)


 
@!!ex ©   (2008-01-09 19:33) [3]

> [2] AlexanderMS ©   (09.01.08 19:10)

Не знаю что за движок используешь.
Если влом разбиратся с чистым DS, используй fmod, у него можно сэмплэ загружаться откуда угодно, и из памяти тоже.

P.S.
DirectMusic и DirectSound - разные вещи.
Дело в том, что DM НЕ загружает сэмпл в память полностью, а подгружает по мере проигрывания. Тебе использовать DM не кактит вообще.


 
Сергей М. ©   (2008-01-10 08:55) [4]


> AlexanderMS


см. sndPlaySound() с флагом SND_MEMORY


 
AlexanderMS ©   (2008-01-10 10:00) [5]


> см. sndPlaySound() с флагом SND_MEMORY

У меня игра, и несколько звуков должно играть асинхронно.


> Не знаю что за движок используешь.

Движок Devil"s Engine.

---
Буду разбираться.


 
Сергей М. ©   (2008-01-10 14:29) [6]


> несколько звуков должно играть


В DS наверняка есть соотв. объекты/методы/свойства.

В кр.случае ничто не мешает месить аудиопотоки ручками и готовую смесь подавать на съедение той же sndPlaySound()



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2009.11.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
2-1253954791
Б
2009-09-26 12:46
2009.11.15
Сохранить DC в файл


2-1254386902
NGPOL
2009-10-01 12:48
2009.11.15
DCOM-сервер и "протокол не поддерживается"


2-1254304088
Venus
2009-09-30 13:48
2009.11.15
Отправка е-маил (рассылка)


2-1254382883
Aleks
2009-10-01 11:41
2009.11.15
MonthCalendar и UpDown


2-1254305859
Fr
2009-09-30 14:17
2009.11.15
Кнопка в TWebBrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский