📄 umvsender.~pas
字号:
unit uMVSender;
interface
uses
AVSender,
ExtCtrls,
StdCtrls,
GlobalUnit,
Dialogs,
Forms,
Controls,
Graphics,
Classes,
Variants,
SysUtils,
Messages,
Windows;
type
TMvSender = class(TPanel)
private
FSenderForm: TSenderForm;
FVideoFrameRate: Integer;
FAudioDrvIndex: Integer;
FVideoDrvIndex: Integer;
FMaxKeyFrameInterval: Integer;
FVideoMode: TVideoDispMode;
FVideoRate: TVideoRate;
FHasVideo: Boolean;
FHasAudio: Boolean;
FOnAudioOut: TOnAudioOut;
FOnVideoOut: TOnVideoOut;
FOnVolumeOut: TOnVolumeOut;
procedure SetAudioDrvIndex(const Value: Integer);
procedure SetMaxKeyFrameInterval(const Value: Integer);
procedure SetVideoDrvIndex(const Value: Integer);
procedure SetVideoFrameRate(const Value: Integer);
procedure SetVideoMode(const Value: TVideoDispMode);
procedure SetVideoRate(const Value: TVideoRate);
procedure SetOnAudioOut(const Value: TOnAudioOut);
procedure SetOnVideoOut(const Value: TOnVideoOut);
procedure SetOnVolumeOut(const Value: TOnVolumeOut);
protected
procedure DoAudioOut(Abuf: Pointer; Asize: Cardinal);
procedure DoVideoOut(Abuf: Pointer; Asize: Cardinal);
procedure DoVideoShow(FrameImage: TGraphic);
procedure DoVolumeOut(VolumeValue:integer);
public
constructor Create(A: TComponent); override;
destructor Destroy;
function ConnectDrv: Boolean;
function DisConnectDrv: Boolean;
function OpenVideo: Boolean;
procedure CloseVideo;
function OpenAudio: Boolean;
procedure CloseAudio;
procedure Init;
published
property HasAudio: Boolean read FHasAudio;
property HasVideo: Boolean read FHasVideo;
property AudioDrvIndex: Integer read FAudioDrvIndex write SetAudioDrvIndex;
property VideoDrvIndex: Integer read FVideoDrvIndex write SetVideoDrvIndex;
property MaxKeyFrameInterval: Integer read FMaxKeyFrameInterval write SetMaxKeyFrameInterval;
property VideoFrameRate: Integer read FVideoFrameRate write SetVideoFrameRate;
property VideoRate: TVideoRate read FVideoRate write SetVideoRate;
property VideoMode: TVideoDispMode read FVideoMode write SetVideoMode;
property OnAudioOut: TOnAudioOut read FOnAudioOut write SetOnAudioOut;
property OnVideoOut: TOnVideoOut read FOnVideoOut write SetOnVideoOut;
property OnVolumeOut: TOnVolumeOut read FOnVolumeOut write SetOnVolumeOut;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TMvSender]);
end;
procedure TMvSender.CloseAudio;
begin
FSenderForm.CloseAudio;
end;
procedure TMvSender.CloseVideo;
begin
FSenderForm.CloseVideo;
Canvas.Brush.Color := clBlack;
Canvas.FillRect(Canvas.ClipRect);
end;
function TMvSender.ConnectDrv: Boolean;
begin
ConnectDrv:=FSenderForm.ConnectDrv;
end;
constructor TMvSender.Create(A: TComponent);
begin
inherited Create(A);
Color := clBlack;
BorderStyle := bsNone;
BevelInner:= bvNone;
Width:=176;
Height:=144;
end;
destructor TMvSender.Destroy;
begin
{ FSenderForm.CloseVideo;
FSenderForm.CloseAudio;
FSenderForm.DisconnectDrv;
Free; }
end;
function TMvSender.DisConnectDrv: Boolean;
begin
DisConnectDrv:=FSenderForm.DisconnectDrv;
end;
procedure TMvSender.DoAudioOut(Abuf: Pointer; Asize: Cardinal);
begin
if Asize<=0 then exit;
if Assigned(FOnAudioOut) then begin
FOnAudioOut(Abuf,Asize);
end;
end;
procedure TMvSender.DoVideoOut(Abuf: Pointer; Asize: Cardinal);
begin
if Asize<=0 then exit;
if Assigned(FOnVideoOut) then begin
FOnVideoOut(Abuf,Asize);
end;
end;
procedure TMvSender.DoVideoShow(FrameImage: TGraphic);
begin
Canvas.Lock;
Canvas.Draw(0,0,FrameImage);
Canvas.Unlock;
end;
procedure TMvSender.DoVolumeOut(VolumeValue:integer);
begin
if Assigned(FOnVolumeOut) then begin
FOnVolumeOut(VolumeValue);
end;
end;
procedure TMvSender.Init;
begin
FSenderForm:= TSenderForm.Create(self);
FSenderForm.Visible :=false;
FSenderForm.OnAudioOut:=DoAudioOut;
FSenderForm.OnVideoOut:=DoVideoOut;
FSenderForm.OnVideoShow:=DoVideoShow;
FSenderForm.OnVolumeOut:=DoVolumeOut;
PopupMenu:=FSenderForm.PopupSetting;
FSenderForm.VideoDrvIndex := FVideoDrvIndex;
FSenderForm.AudioDrvIndex := FAudioDrvIndex;
FSenderForm.VideoMode := FVideoMode;
FSenderForm.Init;
end;
function TMvSender.OpenAudio: Boolean;
begin
OpenAudio:=FSenderForm.OpenAudio;
end;
function TMvSender.OpenVideo: Boolean;
begin
FSenderForm.Init;
OpenVideo:=FSenderForm.OpenVideo;
end;
procedure TMvSender.SetAudioDrvIndex(const Value: Integer);
begin
FAudioDrvIndex:=Value;
end;
procedure TMvSender.SetMaxKeyFrameInterval(const Value: Integer);
begin
FMaxKeyFrameInterval:=Value;
end;
procedure TMvSender.SetOnAudioOut(const Value: TOnAudioOut);
begin
FOnAudioOut:= Value;
end;
procedure TMvSender.SetOnVideoOut(const Value: TOnVideoOut);
begin
FOnVideoOut := Value;
end;
procedure TMvSender.SetOnVolumeOut(const Value: TOnVolumeOut);
begin
FOnVolumeOut := Value;
end;
procedure TMvSender.SetVideoDrvIndex(const Value: Integer);
begin
FVideoDrvIndex:=Value;
end;
procedure TMvSender.SetVideoFrameRate(const Value: Integer);
begin
FVideoFrameRate:=Value;
end;
procedure TMvSender.SetVideoMode(const Value: TVideoDispMode);
begin
FVideoMode:=Value;
end;
procedure TMvSender.SetVideoRate(const Value: TVideoRate);
begin
FVideoRate:= Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -