kto wie jak nagrać źwięk z mikrofonu nie używając komponentów?
Szukaj. Było!
zapomniałem dodać chidz mi żeby było bez basa i dllki a tego już na forum nie było :)
PS. a jaki prosty komponent do tego polecacie (pytam się bo jest kilka ale który najlepiej nagrywa)
Było bez bass'a i żadnych DLL, czyste WinAPI. Po co aż komponent do takiej prostej rzeczy?
Szczawik chodziło ci o to co podał cimak? Czy może masz jeszcze jakiś inny przykład?
PS. Dzięki cimak :)
Przepraszam że piszę 2 posty pod sobą ale nie mogłem edytować.
Mam taką procedurę jak cimak podał:
procedure recordfile(filename:pchar;milisec:dword);
var
wDeviceID:integer;
openp:MCI_OPEN_PARMS;
recordp:MCI_RECORD_PARMS;
savep:MCI_SAVE_PARMS;
begin
// ustawiamy typ urządzenia
openp.lpstrDeviceType:='waveaudio';
openp.lpstrElementName:='';
// otwieramy urządzenie
mciSendCommand(0,MCI_OPEN,MCI_OPEN_ELEMENT or MCI_OPEN_TYPE,DWORD(@openp));
// pobieramy identyfikator urządzenia
wDeviceID:=openp.wDeviceID;
// długość pliku
recordp.dwTo:=milisec;
// zaczynamy nagrywanie
mciSendCommand(wDeviceID,MCI_RECORD,MCI_TO or MCI_WAIT,DWORD(@recordp));
// zapisujemy plik
savep.lpFileName:=filename;
mciSendCommand(wDeviceID,MCI_SAVE,MCI_SAVE_FILE or MCI_WAIT,DWORD(@savep));
end;
Lecz podczas nagrywania (milices dałem na 20 sek czyli 20000) cały program się zawiesza... Da się to zmienić w tej procedurze?
rzeczywiście... u mnie też się zawiesza jak nagrywa...
Zapewne trzeba nagrywać w oddzielnym wątku.
Powiedziałeś że możesz użyć łatwego komponentu. Proponuje TMediaplayer. Nagrywanie odbywa się szybko i w łatwy sposób :-)
hmm... ze tak pozwole soebie sie wkleic do watku :]. Z ciekawosci:
da rade nagrywac jednoczesnie z, powiedzmy 4 zrodel? Oczywiscie do roznych plikow, przykladowo jeden wejscie mic z jednej karty dzwiekowej, drugi z drugiej, trzeci z line-in na karcie dzwiekowej (mam takie w 486 ;)) a czwarty z karty TV i jednoczesnie na glosniki leci muzyka z winampa
nie wiem co źle robię ale MediaPlayer nie nagrywa mi mikrofonu...
Tutaj masz kod:
Rozpoczęcie zapisu:
MediaPlayer1.FileName := 'C:\record.wav';
MediaPlayer1.Open;
MediaPlayer1.StartRecording;
Zakończenie zapisu + zapis do pliku:
MediaPlayer1.Stop;
MediaPlayer1.Save;
Pamiętaj aby na początku utworzyctan plik :-)
eee.... czy mi sie wydaje, czy...:
niby skad mediaplayer ma wiedziec, z ktorego zrodla ma nagrywac?