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

Вниз

Как муз.файла независимо воспроизвести на 2х звуковых   Найти похожие ветки 

 
AlexeyMir   (2006-02-08 10:20) [0]

Мне не нужен профессиональный звук. У меня две звуковых карты, как одновременно проигрывать разные муз.файлы на разных звуковых. Может есть какая-то простенькая библиотека? Помогите.

Еще вопрос: в каком формате лучше хранить муз.файлы чтобы воспроизводить на разных звуковых, здесь "палка о двух концах" если хранить в .wav то нагрузка на винт(одновременно читается много информации); если в mp3, то нагрузка на процессор(одновременно раскодируется много информации)


 
Evgeny V ©   (2006-02-08 14:35) [1]


> "палка о двух концах"


Выбрать один из концов.
 Если использовать для воспроизведения функции waveOutXXX, то в waveOutOpen, там есть параметр uDeviceID, с помощью которого можно выбрать номер открываемой звуковой карты, например 0,1....


 
AlexeyMir   (2006-02-08 15:12) [2]

Может есть пример воспроизведения с помощью функций функций waveOutXXX, киньте пожалуйста


 
Evgeny V ©   (2006-02-09 08:51) [3]

Так как  нет исходника под рукой написал быстренько и упрощенно. Извини проверки все на корректность возврата функций не делал. Сделай сам. Так же не писал как загружать в буфер wav файл - кстати в примере считаю, что  файл в PCM формате.
procedure myWaveOut - открываем первое устройство, считаем что  в буфере уже есть данные, готовим буфер, посылаем на проигрывание и все.

procedure myproc - callback процедура, которая  вызовется по окончании проигрывания буфера.  

Кстати получить число устройств вывода можно через waveOutGetNumDevs

procedure Stop;// Закрываем устройство по окончанию проигрывания всех
//буферов или когда устойство уже не нужно.

uses mmsystem;

var
vbuf: array [0..8000] of char;// буфер куда из wav файла
//записываются звуковые данные, таких буферов может быть
//несколько, размер на твое усмотрение, можешь сделать динамическим.

pwx:TWAVEFORMATEX;
hdr:TWAVEHDR;
msound:HWAVEOUT;
r:MMRESULT;

procedure myproc( hwo:HWAVEOUT;uMsg:UINT;dwInstance,dwParam1,dwParam2:DWORD);stdcall;

procedure myWaveOut
begin
pwx.wFormatTag:=WAVE_FORMAT_PCM;
pwx.nChannels:=1;
pwx.nSamplesPerSec:=8000;
pwx.nAvgBytesPerSec:=8000;
pwx.nBlockAlign:=1;
pwx.wBitsPerSample:=8;
pwx.cbSize:=0;

r:=waveOutOpen(@msound,0,@pwx,Cardinal(@myproc),0,CALLBACK_FUNCTION);

if r <> MMSYSERR_NOERROR then
exit;

hdr.lpData:=@vbuf[0];
hdr.dwBufferLength:=8000;
hdr.dwFlags:=0;
hdr.dwLoops:=0;
hdr.lpNext:=nil;// почитай про WAVEHDR, пригодится

waveOutPrepareheader(msound,@hdr,sizeof(TWAVEHDR)); //Подготовили буфер
waveOutWrite(msound,@hdr,sizeof(TWAVEHDR));// отправили  на
//проигрывание

end;

procedure myproc( hwo:HWAVEOUT;uMsg:UINT;dwInstance,dwParam1,dwParam2:DWORD);stdcall;
begin
if uMsg = WOM_DONE then
begin
waveOutUnPrepareheader(msound,LPWAVEOUTHDR(dwParam1),sizeof(TWAVEHDR));
end;
end;

// Закрываем устройство, когда оно нам больше не нужно
procedure Stop;
begin
  waveOutReset(msound);
  waveOutClose(msound);
end;

Так как все схематично - тебе прийдется самому почитать и разобраться со всеми функциями и структурами.



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

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

Наверх





Память: 0.47 MB
Время: 0.012 c
15-1151344759
Nic
2006-06-26 21:59
2006.07.30
Основные принципы прокладки кабеля Ethernet


1-1150365320
Baiji
2006-06-15 13:55
2006.07.30
Освободить файл


2-1152460652
17Landgraf
2006-07-09 19:57
2006.07.30
Как найти хендл


15-1151671936
Mr tray
2006-06-30 16:52
2006.07.30
Windows NT


1-1150371712
PRT
2006-06-15 15:41
2006.07.30
Doc2TXT





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