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

Вниз

AVI, WAV, потоки и ресурсы   Найти похожие ветки 

 
Zeqfreed ©   (2004-09-25 14:59) [0]

Зравствуйте, форумчане!
Помогите, кто знает. У меня задача проиграть wav или avi файлы из ресурсов. Пока я реализовал сохранение на диск и проигрывание файлов с него. Но это требует дополнительных ресурсов и вообще не желательно сохранение на диске. Я использовал ф-цию PlaySound для wav`ов, с ней все хорошо. Она играет из памяти, но как я понял пока не закончится проигрывание звука PlaySound не передаст управление программе, то есть программа ждет завершения проигрывания. Есть ли возможность проиграть звук из памяти так, чтобы управление программе было передано немедленно?
А способов проиграть avi из памяти я, к сожалению, пока не нашёл... Может кто-нибудь поделится этой ценной информацией?


 
Dmy   (2004-09-25 15:50) [1]

У тебя же в заголовке написано, как сделать, чтобы управление программе передать %) Проигрывай wav в потоке


 
Mihey_temporary ©   (2004-09-25 16:06) [2]


> Она играет из памяти, но как я понял пока не закончится
> проигрывание звука PlaySound не передаст управление программе,
> то есть программа ждет завершения проигрывания. Есть ли
> возможность проиграть звук из памяти так, чтобы управление
> программе было передано немедленно?


Даже при SND_ASYNC????


 
Zeqfreed ©   (2004-09-25 16:25) [3]

2Dmy:
Нехочется здесь использовать потоки (Thread), если ты это имеешь ввиду

2Mihey_temporary
Даже с SND_ASYNC, насколько я помню, я ставил этот флаг.


 
Zeqfreed ©   (2004-09-25 16:26) [4]

А в заголовке я имею ввиду стримы (Stream)


 
programania ©   (2004-09-25 22:10) [5]

Билиотека BASS может играть из памяти
сразу несколько сэмплов одновременно
один раз или бесконечно независимо от программы:

BASS_Init(-1, 11000, 0, form1.handle);
BASS_Start;
data:=BASS_SampleCreate(q, 11000, 1, BASS_SAMPLE_MONO);
//data указатель на array[0..$FFFF] of smallInt;
//в массиве z q отсчетов +-32000;
for j:=1 to q do begin data^[j]:=z[j];
h:=BASS_SampleCreateDone;
BASS_SamplePlayEx(h, 0{start},11000,100{volume}, 0{pan}, false{BOOL loop});


 
Zeqfreed ©   (2004-09-25 22:20) [6]

Спасибо, за решение. Но я лично не люблю использовать сторонние библиотеки/модули (за рядом исключений), да и не желательно использовать их в моей задаче. Так что по большей части меня интересуют решения с открытыми исходниками или стандартными средствами.


 
PGM_X   (2004-09-25 23:33) [7]

Как вариант: динамическое создание виртуального диска (память все-таки), выгрузка туда и проигрывание оттуда.

А если хочешь "по-взрослому", то придется писать фильтр для DirectShow (есть один в SDK DirectShow его надо под сои нужды модифицировать - это С++ к сожалению, никакого Delphi). У меня была другая задача - засосать в память файлы и играть оттуда. Сней я справился играл в Delphi, но фильтр писал на Visual C++.


 
Mihey_temporary ©   (2004-09-25 23:37) [8]

А из ресурса играешь? Типа:
PlaySound("SOUND", 0, SND_RESOURCE); ????


 
Zeqfreed ©   (2004-09-26 08:38) [9]

2Mihey_temporary:
Ну насколько я помню (просто щас переделал, а старый вариант не оставил) не из ресурса а из памяти, то есть LockResource/ResourceStream.Memory и SND_MEMORY

2PGM_X:
Мда... какая-то мрачная перспектива, но за решения спасибо. Если сильно приспичит попробую покопать. Пока видимо придется оставить через диск.



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

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

Наверх




Память: 0.46 MB
Время: 0.036 c
1-1102062336
Frozzen
2004-12-03 11:25
2004.12.19
Антиотладочные приемы


1-1101907688
Артем Владимирович
2004-12-01 16:28
2004.12.19
Как блокироваться сочетание клавиш CTRL+N?


3-1100760278
Iova
2004-11-18 09:44
2004.12.19
Как получить информацию о полях таблицы


1-1102076033
Denmin
2004-12-03 15:13
2004.12.19
Есть ли функция определяющая високосный год или нет?


3-1100427250
integer
2004-11-14 13:14
2004.12.19
помогите з запросом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский