Советы по Delphi

       

Запись с помощью MediaPlayer


Компонент Mediaplayer работает только с корректными звуковыми файлами и не работает с файлами нулевого размера. Нижеприведенная функция создаст звуковой файл с размером 1. Вариантная запись. Хотелось бы видеть лучшее решение, но пока такой вариант работает у меня без проблем.

function CreateNewWave(NewFileName: String): Boolean;varDeviceID: Word;Return: LongInt;MciOpen: TMCI_Open_Parms;MciRecord: TMCI_Record_Parms;MciPlay: TMCI_Play_Parms;MciSave: TMCI_SaveParms;MCIResult: LongInt;Flags: Word;TempFileName: array[0..255] of char;
beginMediaPlayer.Close;tryStrPCopy(TempFileName, NewFilename);
MciOpen.lpstrDeviceType := 'waveaudio';MciOpen.lpstrElementName := '';Flags := Mci_Open_Element or Mci_Open_Type;MCIResult := MciSendCommand(0, MCI_OPEN, Flags, LongInt(@MciOpen));DeviceID := MciOpen.wDeviceId;
MciRecord.dwTo := 1;Flags := Mci_To or Mci_Wait;MCIResult := 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 := TempFilename.CString;Flags := MCI_Save_File or Mci_Wait;MCIResult := MciSendCommand(DeviceID, MCI_Save, Flags, LongInt(@MciSave));
Result := MciSendCommand(DeviceID, Mci_Close, 0, LongInt(nil)) = 0;end;end;

Nick Hodges [000509]



Содержание раздела