⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.pas

📁 TVideoGrabber 7.5 TVideoGrabber 7.5 TVideoGrabber 7.5
💻 PAS
📖 第 1 页 / 共 5 页
字号:
end;

procedure TfrmMainForm.btnDeviceDialogClick(Sender: TObject);
begin
   VideoGrabber.ShowDialog (dlg_VideoDevice);
   RefreshDeviceControls;
end;

procedure TfrmMainForm.btnCameraControlDialogClick(Sender: TObject);
begin
   ShowFormAboveVideo (frmCameraControl);
end;

procedure TfrmMainForm.btnVideoQualityDialogClick(Sender: TObject);
begin
   ShowFormAboveVideo (frmVideoQuality);
end;

procedure TfrmMainForm.btnVideoControlDialogClick(Sender: TObject);
begin
   ShowFormAboveVideo (frmVideoControl);
end;

procedure TfrmMainForm.btnSpecialControlsClick(Sender: TObject);
begin
   ShowFormAboveVideo (frmSpecialControls);
end;

procedure TfrmMainForm.btnStreamDialogClick(Sender: TObject);
begin
   // WARNING: USUALLY, THIS DIALOG ALLOWS TO CHANGE ONLY 1 PARAMETER AT THE SAME TIME
   VideoGrabber.ShowDialog (dlg_StreamConfig);
   VideoGrabberVideoDeviceSelected (Self); // to refresh the controls, if required
end;

procedure TfrmMainForm.rdgPreferredVideoSizeClick(Sender: TObject);
begin
   case rdgPreferredVideoSize.ItemIndex of
      0: VideoGrabber.UseNearestVideoSize (0, 0, chkStretchPreferredVideoSize.Checked); // disables the nearest size feature, uses the device's VideoSize index in the VideoSizes list
      1: VideoGrabber.UseNearestVideoSize ( 88,  60, chkStretchPreferredVideoSize.Checked);
      2: VideoGrabber.UseNearestVideoSize ( 88,  72, chkStretchPreferredVideoSize.Checked);
      3: VideoGrabber.UseNearestVideoSize (180, 120, chkStretchPreferredVideoSize.Checked);
      4: VideoGrabber.UseNearestVideoSize (180, 144, chkStretchPreferredVideoSize.Checked);
      5: VideoGrabber.UseNearestVideoSize (320, 240, chkStretchPreferredVideoSize.Checked);
      6: VideoGrabber.UseNearestVideoSize (352, 288, chkStretchPreferredVideoSize.Checked);
      7: VideoGrabber.UseNearestVideoSize (640, 480, chkStretchPreferredVideoSize.Checked);
      8: VideoGrabber.UseNearestVideoSize (720, 480, chkStretchPreferredVideoSize.Checked);
      9: VideoGrabber.UseNearestVideoSize (720, 576, chkStretchPreferredVideoSize.Checked);
     10: VideoGrabber.UseNearestVideoSize (768, 576, chkStretchPreferredVideoSize.Checked);
      // you can add your own preferred formats
   end;
   cboVideoSizes.Enabled := rdgPreferredVideoSize.ItemIndex = 0;
end;

procedure TfrmMainForm.chkStretchPreferredVideoSizeClick(Sender: TObject);
begin
   rdgPreferredVideoSizeClick (Self);
end;

procedure TfrmMainForm.btnFrameRateClick(Sender: TObject);
var
   Value: Double;
begin
   Value := StrToFloatDef (edtFrameRate.Text, -1);
   VideoGrabber.FrameRate := Value;

   if VideoGrabber.CurrentState = cs_Preview then begin
      mmoLog.lines.Add ('current frame rate: ' + FormatFloat ('0.00', VideoGrabber.CurrentFrameRate) + ' fps.');
   end;
end;

procedure TfrmMainForm.btnAboutFrameRateClick(Sender: TObject);
begin
   ShowMessage ('0 means that the default frame rate of the device will be used.' + #13#10 + 'After the OnPreviewStarted or OnRecordingStarted event occurs,' + #13#10 + 'its value is available in the CurrentFrameRate property.');
end;

procedure TfrmMainForm.btnSelectFileOrUrlClick(Sender: TObject);
begin
   dlgOpen.FileName := OPEN_MEDIA_FILES;
   if dlgOpen.Execute then begin
      edtVideoSourceFileOrUrl.Text := dlgOpen.FileName;
   end;
end;

procedure TfrmMainForm.edtVideoSourceFileOrUrlChange(Sender: TObject);
begin
   VideoGrabber.VideoSource_FileOrUrl := edtVideoSourceFileOrUrl.Text;
end;

procedure TfrmMainForm.VideoSourceFileOrUrl_UserNameChange(Sender: TObject);
begin
   VideoGrabber.SetAuthentication (at_StreamingUrl, VideoSourceFileOrUrl_UserName.Text, VideoSourceFileOrUrl_Password.Text);
end;

procedure TfrmMainForm.VideoSourceFileOrUrl_PasswordChange(Sender: TObject);
begin
   VideoGrabber.SetAuthentication (at_StreamingUrl, VideoSourceFileOrUrl_UserName.Text, VideoSourceFileOrUrl_Password.Text);
end;

procedure TfrmMainForm.btnDemoURLClick(Sender: TObject);
begin
   ShellExecute(0, 'open', PChar('http://www.datastead.com/demo/StreamingURL.htm'), '', '', SW_SHOW);
end;

procedure TfrmMainForm.btnUrlConfClick(Sender: TObject);
begin
   VideoGrabber.ShowDialog (dlg_NetShowConfig);
end;

procedure TfrmMainForm.btnScreenRecordingWindowClick(Sender: TObject);
begin
   VideoGrabber.SetWindowRecordingByName (edtScreenRecordingWindow.Text, false); // set to "true" for an exact and case-sensitive match
end;

procedure TfrmMainForm.chkScreenRecordingWithCursorClick(Sender: TObject);
begin
   VideoGrabber.ScreenRecordingWithCursor := chkScreenRecordingWithCursor.Checked;
end;

procedure TfrmMainForm.edtMonitorNumberChange(Sender: TObject);
begin
   VideoGrabber.ScreenRecordingMonitor := StrToIntDef (edtMonitorNumber.Text, 0);
end;

procedure TfrmMainForm.btnMonitorNumberInfoClick(Sender: TObject);
begin
   ShowMessage ('-1 = full desktop, 0 = 1st monitor, 1 = 2nd monitor, etc...');
end;

procedure TfrmMainForm.chkMultiplexedAutoSwitchClick(Sender: TObject);
begin
   if chkMultiplexedAutoSwitch.Checked then begin
      VideoGrabber.MultiplexedRole := mr_MultiplexedMosaic4;
   end
   else begin
      VideoGrabber.MultiplexedRole := mr_NotMultiplexed;
   end;
end;

procedure TfrmMainForm.chkMultiplexedInputEmulationClick(Sender: TObject);
begin
   VideoGrabber.MultiplexedInputEmulation := chkMultiplexedInputEmulation.Checked;
end;

procedure TfrmMainForm.chkReduceDVFrameRateClick(Sender: TObject);
begin
   VideoGrabber.DVReduceFrameRate := chkReduceDVFrameRate.Checked;
end;

procedure TfrmMainForm.VideoGrabberPreviewStarted(Sender: TObject);
begin
   mmoLog.lines.Add ('');
   mmoLog.lines.Add ('video size: ' + IntToStr (VideoGrabber.VideoWidth) + 'x' + IntToStr (VideoGrabber.VideoHeight));
   mmoLog.lines.Add ('display size: ' + IntToStr (VideoGrabber.Display_VideoWidth) + 'x' + IntToStr (VideoGrabber.Display_VideoHeight));
   mmoLog.lines.Add ('current frame rate: ' + FormatFloat ('0.00', VideoGrabber.CurrentFrameRate) + ' fps.');
   mmoLog.lines.Add ('');
end;

procedure TfrmMainForm.VideoGrabberFrameProgress(Sender: TObject;
  FrameNumber: Cardinal; FrameTime: Int64; FrameId: Integer);
var
   DVTimeCode: String;
   DVDateTime: String;
begin
   edtFrameCount.Text := 'frame: ' + IntToStr (FrameNumber)
               + ' dropped:' + IntToStr (VideoGrabber.GetFrameInfo (FrameId, fi_DroppedFrameCount))
               + ' time:' + Format ('%.2d:%.2d:%.2d %.2d', [VideoGrabber.GetFrameInfo (FrameId, fi_SampleTime_Hour),
                                                            VideoGrabber.GetFrameInfo (FrameId, fi_SampleTime_Min),
                                                            VideoGrabber.GetFrameInfo (FrameId, fi_SampleTime_Sec),
                                                            VideoGrabber.GetFrameInfo (FrameId, fi_SampleTime_Hs)]);

   if VideoGrabber.GetFrameInfo (FrameId, fi_DVTimeCode_IsAvailable) > 0 then begin // not available if 0
       DVTimeCode := Format ('tc: %.2d:%.2d:%.2d %.2d',
             [VideoGrabber.GetFrameInfo (FrameId, fi_DVTimeCode_Hour),
              VideoGrabber.GetFrameInfo (FrameId, fi_DVTimeCode_Min),
              VideoGrabber.GetFrameInfo (FrameId, fi_DVTimeCode_Sec),
              VideoGrabber.GetFrameInfo (FrameId, fi_DVTimeCode_Ff)]);
   end
   else begin
      DVTimeCode := '';
   end;
   if VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_IsAvailable) > 0 then begin // not available if 0
       DVDateTime := Format ('dv date: %.2d/%.2d/%.2d %.2d:%.2d:%.2d',
              [VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_Day),
               VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_Month),
               VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_Year),
               VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_Hour),
               VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_Min),
               VideoGrabber.GetFrameInfo (FrameId, fi_DVDateTime_Sec)]);
   end
   else begin
      DVDateTime := '';
   end;
   edtDVDateTime.Text := DVTimeCode + ' ' + DVDateTime;

end;

////////////////////////////////////////////////////////////////////////////////
//                           AUDIO TAB
////////////////////////////////////////////////////////////////////////////////

procedure TfrmMainForm.VideoGrabberAudioDeviceSelected(Sender: TObject);
begin
   // from this event set the parameters that change when the current audio capture device change
   cboAudioDevices.ItemIndex := VideoGrabber.AudioDevice; // be sure the listbox index matches the current index value

   AssignListToComboBox (cboAudioInputs, VideoGrabber.AudioInputs, integer (VideoGrabber.AudioInput));
   tbrAudioInputLevel.Position := VideoGrabber.AudioInputLevel;
   tbrAudioInputBalance.Position := VideoGrabber.AudioInputBalance;
   chkAudioInputMono.Checked := VideoGrabber.AudioInputMono;
end;

procedure TfrmMainForm.btnStartAudioRenderingClick(Sender: TObject);
begin
   VideoGrabber.StartAudioRendering;
   if not VideoGrabber.AudioDeviceRendering then begin
      if btnStartAudioRendering.Tag = 0 then begin
         btnStartAudioRendering.Tag := 1; // to show the popup only one time
         ShowMessage ('StartAudioRendering acts as "preview", e.g. for the VU-Meters, if AudioDeviceRendering (on the left) is not enabled, the audio will not be heard in the speakers');
      end;
   end;
end;

procedure TfrmMainForm.btnStartWAVRecordingClick(Sender: TObject);
begin
   VideoGrabber.CompressionMode := cm_NoCompression;
   VideoGrabber.RecordingMethod := rm_AVI;
   VideoGrabber.StartAudioRecording;
end;

procedure TfrmMainForm.btnStartMP3RecordingClick(Sender: TObject);
begin
   VideoGrabber.CompressionMode := cm_CompressOnTheFly;
   VideoGrabber.CompressionType := ct_Audio;
   VideoGrabber.RecordingMethod := rm_AVI;
   VideoGrabber.AudioCompressor := VideoGrabber.FindIndexInListByName (VideoGrabber.AudioCompressors, 'LAME Audio Encoder', false, true);
   if VideoGrabber.AudioCompressor = -1 then begin
      showmessage ('The LAME Audio Encoder is required, download it from http://www.elecard.com/download/');
   end
   else begin
      VideoGrabber.StartAudioRecording;
   end;
end;

procedure TfrmMainForm.btnStartASFRecordingClick(Sender: TObject);
begin
   VideoGrabber.CompressionMode := cm_NoCompression;
   VideoGrabber.RecordingMethod := rm_ASF;
   VideoGrabber.StartAudioRecording;
end;

procedure TfrmMainForm.btnStopAudioClick(Sender: TObject);
begin
   VideoGrabber.Stop;
end;

procedure TfrmMainForm.chkUseAudioOfVideoCaptureDeviceClick(
  Sender: TObject);
begin
   if chkUseAudioOfVideoCaptureDevice.Checked then begin
      VideoGrabber.VideoDevice := 0; // in this demo, by default we choose the 1st
   end
   else begin
      VideoGrabber.VideoDevice := -1; // this deactivates the video capture device
   end;
end;

procedure TfrmMainForm.chkRenderAudioDeviceClick(Sender: TObject);
begin
   VideoGrabber.AudioDeviceRendering := chkRenderAudioDevice.Checked;
end;

procedure TfrmMainForm.cboAudioDevicesChange(Sender: TObject);
begin
   VideoGrabber.AudioDevice := cboAudioDevices.ItemIndex;
end;

procedure TfrmMainForm.btnDlgAudioDeviceClick(Sender: TObject);
begin
   VideoGrabber.ShowDialog (dlg_AudioDevice);
end;

procedure TfrmMainForm.cboAudioInputsChange(Sender: TObject);
begin
   VideoGrabber.AudioInput := cboAudioInputs.ItemIndex;
end;

procedure TfrmMainForm.tbrAudioInputLevelChange(Sender: TObject);
begin
   VideoGrabber.AudioInputLevel := tbrAudioInputLevel.Position;
end;

procedure TfrmMainForm.tbrAudioInputBalanceChange(Sender: TObject);
begin
   VideoGrabber.AudioInputBalance := tbrAudioInputBalance.Position;
end;

procedure TfrmMainForm.chkAudioInputMonoClick(Sender: TObject);
begin
   VideoGrabber.AudioInputMono := chkAudioInputMono.Checked;
end;

procedure TfrmMainForm.cboAudioRenderersChange(Sender: TObject);
begin
   VideoGrabber.AudioRenderer := cboAudioR

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -