kodların analizi veya mantıksal destek lütfen...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
denizkusu
Üye
Mesajlar: 5
Kayıt: 02 Oca 2008 05:05

kodların analizi veya mantıksal destek lütfen...

Mesaj gönderen denizkusu »

Öncelikle oluşturmuş olduğum başlık yeterince açıklayıcı olmadı sanırım, umarımki Üstadlar mazur görürler. Yapmak istediğim şey skyp gibi bi program hazırlamak. Şuan için yazılı iletişimi sorunsuz sağlamaktayım. Sorunum sesli ve görüntülü iletişimde. Bunun için öncelikle mikrofondan sesi alıp bir değişkene aktarıp karşı tarafta bu değişkendeki veriyi hoparlörlere göndermem gerektiği şeklinde düz bir mantık ile ilk etapta ses kaydını yapan bir kod buldum.
(bulduğum kod)

Kod: Tümünü seç


function RecordSound(MMSecs: LongInt): LongInt;
var
   DeviceID: Word;
   Return: LongInt;
   MciOpen: TMCI_Open_Parms;
   MciRecord: TMCI_Record_Parms;
   MciPlay: TMCI_Play_Parms;
   MciSave: TMCI_SaveParms;
   Result2: LongInt;
   Flags: Word;
begin
   MciOpen.lpstrDeviceType := 'waveaudio';
   MciOpen.lpstrElementName := '';
   Flags := Mci_Open_Element or Mci_Open_Type;
   Result2 := MciSendCommand(0, MCI_OPEN, Flags, LongInt(@MciOpen));
   DeviceID := MciOpen.wDeviceId;
   MciRecord.dwTo := MMSecs;
   Flags := Mci_To or Mci_Wait;
   Result2 := MciSendCommand(DeviceID, Mci_Record, Flags, LongInt(@MciRecord));
   mciPlay.dwFrom := 0;
   Flags := Mci_From or Mci_Wait;
   MciSendCommand(DeviceId, Mci_Play, Flags, LongInt(@MciPlay));
   mciSave.lpfileName := 'Ses.Wav';
   Flags := MCI_Save_File or Mci_Wait;
   Result := MciSendCommand(DeviceID, MCI_Save, Flags, LongInt(@MciSave));
   MciSendCommand(DeviceID, Mci_Close, 0, LongInt(nil));
end;

Kullanımı

Kod: Tümünü seç

RecordSound(5000);
bu kodlar ilk önce mikrofondan sesi alıyor daha sonra dinletiyor ve ardından .wav olarak kaydediyor (ben sıralamanın bu şekilde olduğunu gördüm eğer dosyayı farklı bir yerde kaydedip dinletiyor dinleme olayından sonra programın olduğu klasöre taşıyorsa bunu bilemiyorum ama nacizane bu şeklide olduğunu düşünmüyorum ) . Sorunum şu ki tam olarak hangi satır ne işi yapıyor tam idrak edebilmiş değilim, mantıksal olarak sesi aldıktan sonra biyerlerde tutuyor ve dinletiyor işte bu veriyi tuttuğu noktada o veriyi bi değişkene ( bu değişkenin tipi ne olacak sorusunaysa hala cevap bulabilmiş değilim malesef ama aktarırken string ifade aktarabiliyorum ) aktarıp, karşı taraftada bu değişkendeki veriyi hoparlöre göndermeliyim diye düşünüyorum. Bu konuda gerek kodların çözümlenmesi noktasında gerekse mantıksal manada bilgi, fikir ve tavsiyelerinizi paylaşırsanız çok memnun olurum.




Saygılarımla...
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: kodların analizi veya mantıksal destek lütfen...

Mesaj gönderen Ertugrul »

Wav olarak kaydetmek yerine Stream objesini kullanmaniz daha iyi olur. Socket uzerinden stream ile veri gonderimi yapilabilir. Asagidaki satirda degisiklik yapmak gerekecek;

Kod: Tümünü seç

Result := MciSendCommand(DeviceID, MCI_Save, Flags, LongInt(@MciSave));
Ayrica, bu adresiincelemenizi, ucretli bir program yaziyorsaniz audiolab i satin almanizi oneririm. Yazdiginiz program ticari degilse rica ederseniz sahibi componentlari ucretsiz verecektir. :wink:
Cevapla