Главная страница
    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.46 MB
Время: 0.013 c
15-1151397177
CyberWoman
2006-06-27 12:32
2006.07.30
Перевод текста в MainMenu и PopupMenu


15-1151777769
kaif
2006-07-01 22:16
2006.07.30
С сегодняшнего дня рубль стал конвертируемым


15-1152066202
ghost_rustam
2006-07-05 06:23
2006.07.30
paskal or delphi


15-1149581607
serko
2006-06-06 12:13
2006.07.30
Internet Explorer и Opera


15-1151503380
easy
2006-06-28 18:03
2006.07.30
Compact Flash GPS в Питере





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