爱招飞帮助手册 爱招飞帮助手册
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
  • Smart帮助主页
  • 学习手册

    • 基本入门

    • 功能介绍

    • 控件说明

      • 公共属性
      • 公共方法
      • 公共事件
      • 窗口控件
      • 系统控件
      • 标准控件
      • 对话框控件
      • 标准工控控件
      • 专业工控控件
      • 数据控制控件
      • 数据表格控件
      • 数据感知控件
      • 通讯控制控件
      • 仪表采集控件
      • 监控视频控件
        • 1. TVideoClient 组件
        • 2. TVideoServer 组件
          • 2.1. 属性(Propertys)
          • 2.2. 方法(Methods)
          • 2.2.1. StartDevice
          • 2.2.2. StopDevice
          • 2.2.3. ShowPropertyDialog
          • 2.2.4. TakePicture
          • 2.3. 事件
          • 2.3.1. OnBarCode
        • 3. TVNCClientWrapper组件
          • 3.1. 方法(Methods)
          • 3.1.1. IsActive函数
          • 3.1.2. Start函数
          • 3.1.3. Connect函数
          • 3.1.4. Disconnect函数
        • 4. TVNCServerWrapper组件
          • 4.1. 属性(Properties)
          • 4.2. 方法(Methods)
          • 4.2.1. IsActive函数
          • 4.2.2. Start函数
          • 4.2.3. Stop函数
          • 4.2.4. Restart函数
        • 5. TRVCamera 组件
          • 5.1. 属性
          • 5.1.1. Aborting 属性
          • 5.1.2. FramePerSec, FramePerSecInt 属性
          • 5.1.3. Agent 属性
          • 5.1.4. Bitrate 属性
          • 5.1.5. Brightness, Contrast, Hue, Saturation, Sharpnes 属性
          • 5.1.6. CameraControl 属性
          • 5.1.7. CameraHost, CameraPort, RTSPPort 属性
          • 5.1.8. CameraSearchTimeOut 属性
          • 5.1.9. CommandMode 属性
          • 5.1.10. CycleVideoImages, VideoImagesURLs 属性
          • 5.1.11. DesktopMode, DesktopRect, DesktopWindowHandle, DesktopZoomPercent 属性
          • 5.1.12. DeviceType 属性
          • 5.1.13. FFMpegProperty 属性*
          • 5.1.14. FileName, ToFile 属性
          • 5.1.15. FlipHorizontally, FlipVertically 属性
          • 5.1.16. FocusType, FocusDistance 属性*
          • 5.1.17. GStreamerProperty 属性
          • 5.1.18. IPCameraTypes 属性(只读)
          • 5.1.19. JpegIntegrity 属性
          • 5.1.20. MaxCameraSearchThreadCount 属性
          • 5.1.21. Parameters 属性*
          • 5.1.22. Quality 属性
          • 5.1.23. Rotation 属性
          • 5.1.24. Searching 属性
          • 5.1.25. SmoothImage 属性
          • 5.1.26. SourceFileName 属性
          • 5.1.27. URL 属性
          • 5.1.28. UserAccess 属性(只读)
          • 5.1.29. UserName, UserPassword 属性
          • 5.1.30. Users, Maxusers 属性
          • 5.1.31. VideoDeviceIndex, VideoDeviceCount, VideoDeviceList, VideoDeviceIdList 属性
          • 5.1.32. VideoFormat 属性
          • 5.1.33. VideoMode 属性*
          • 5.1.34. VideoResolution 属性
          • 5.2. 事件
          • 5.3. 方法
          • 5.3.1. FillVideoDeviceList 方法
          • 5.3.2. GetCamVideoMode, GetCamVideoModeCount, GetCamVideoModeIndex, GetCamCurrentVideoMode, SetCamVideoMode 属性*
          • 5.3.3. GetDesktopVideoModeCount, GetDesktopVideoModeIndex, GetDesktopCurrentVideoMode, SetDesktopVideoMode, GetDesktopVideoMode 属性*
          • 5.3.4. GetAvailableCamProperties, GetAvailableCamMethods, GetAccessibleCamProperties, GetAccessibleCamMethods 属性
          • 5.3.5. GetSnapShot 方法
          • 5.3.6. IsSupportedFFMPEG 属性
          • 5.3.7. IsSupportedGStreamer 属性
          • 5.3.8. LockCommands, UnlockCommands 属性
          • 5.3.9. Move系列 方法
          • 5.3.10. PlayVideoStream, PlayVideoFile 属性
          • 5.3.11. ResetImageSetting 方法
          • 5.3.12. SearchCamera 方法--
          • 5.3.13. SwitchLEDOn, SwitchLEDOff 属性
          • 5.3.14. UpdateUsers 属性
          • 5.3.15. WaitForVideoStream, WaitForVideoFile, WaitForVideo, WaitForSearch 属性
        • 6. TRVCamView 组件
          • 6.1. 属性
          • 6.1.1. AutoSize 属性
          • 6.1.2. CamMoveMode 属性
          • 6.1.3. Color 属性
          • 6.1.4. CurRenderMode, RenderMode 属性
          • 6.1.5. FocusLineColor 属性
          • 6.1.6. Font 属性
          • 6.1.7. GUIDFrom, IndexFrom 属性
          • 6.1.8. HoverLineColor 属性
          • 6.1.9. IconStyle 属性
          • 6.1.10. Language 属性
          • 6.1.11. RememberLastFrame 属性
          • 6.1.12. SearchPanelColor, SearchPanelTextColor 属性
          • 6.1.13. ShowCameraSearch 属性
          • 6.1.14. ShowCaption, CaptionParts, Title, CaptionColor, CaptionFont,CaptionHeight 属性
          • 6.1.15. ShowFrameRect 属性
          • 6.1.16. VideoSource, Camera, Receiver 属性
          • 6.1.17. ViewMode 属性
          • 6.2. 事件
        • 7. TRVCamMultiView 组件
          • 7.1. 属性
          • 7.1.1. AudioSource 属性
          • 7.1.2. CameraControl 属性
          • 7.1.3. CamMoveMode 属性
          • 7.1.4. CaptionColor, CaptionFont, CaptionHeight 属性
          • 7.1.5. Color, ViewerColor 属性
          • 7.1.6. CurRenderMode, RenderMode 属性
          • 7.1.7. Font 属性
          • 7.1.8. HoverLineColor 属性
          • 7.1.9. IconStyle 属性
          • 7.1.10. Language 属性
          • 7.1.11. RememberLastFrame 属性
          • 7.1.12. SearchPanelColor, SearchPanelTextColor 属性
          • 7.1.13. ShowFocusRect*, FocusLineColor 属性
          • 7.1.14. ViewerIndex 属性
          • 7.1.15. Viewer 属性
          • 7.2. 事件
        • 8. TRVCamControl 组件
          • 8.1. 属性
          • 8.1.1. Clor, ParentColor, BorderColor, ArrowLineColor, ArrowColor, ArrowColorClicked, ArrowColorHot 属性
          • 8.1.2. ShowFocus 属性
        • 9. TRVCamSender 组件
          • 9.1. 属性
          • 9.1.1. Active 属性
          • 9.1.2. AudioSource 属性
          • 9.1.3. BufferSize 属性
          • 9.1.4. ChangedAreaProcessingMode 属性
          • 9.1.5. CompressionOptions 属性
          • 9.1.6. CompressionQuality 属性
          • 9.1.7. ConnectionProperties 属性
          • 9.1.8. Encoding 属性
          • 9.1.9. ExtraMediaSources 属性
          • 9.1.10. FilterBlur 属性
          • 9.1.11. FrameDifferenceInterval 属性
          • 9.1.12. FullFrameInterval 属性
          • 9.1.13. GUIDFrom, UseGUID 属性
          • 9.1.14. GUIDTo, GUIDGroup 属性
          • 9.1.15. MinChangeAreaSize, PixelColorThreshold -R -G -B 属性
          • 9.1.16. Protocol 属性
          • 9.1.17. ProxyHost, ProxyPort 属性
          • 9.1.18. ReceiverHost, ReceiverPort 属性
          • 9.1.19. SenderPort 属性
          • 9.1.20. SendMediaTypes 属性
          • 9.1.21. SendOptions 属性
          • 9.1.22. SessionKey 属性(只读)
          • 9.1.23. ShowCmd 属性
          • 9.1.24. SourceAudioIndex 属性
          • 9.1.25. SourceVideoIndex 属性
          • 9.1.26. TCPConnectionType 属性
          • 9.1.27. TestMode 属性
          • 9.1.28. VideoResolution 属性
          • 9.1.29. VideoSendType 属性*
          • 9.1.30. VideoSource, SourceGUID 属性
          • 9.2. 事件
          • 9.2.1. OnConnected, OnConnecting, OnDisconnect, OnConnectError 事件
          • 9.2.2. OnEncodeAudio 事件
          • 9.2.3. OnSendCmd, OnSentCmd 事件
          • 9.3. 方法
          • 9.3.1. AddAllowedSender, RemoveAllowedSender, AddAllowedSenders, ClearAllowedSenders, HelloToAllowedSenders, GoodbyeToAllowedSenders 方法
          • 9.3.2. AddDefaultReceiver, RemoveDefaultReceiver, HelloToDefaultReceivers, GoodbyeToDefaultReceivers 方法
          • 9.3.3. AllowMediaAccess, CancelMediaAccess 事件
          • 9.3.4. GetAllUsers, GetAllOnlineUsers 事件
          • 9.3.5. JoinGroup, LeaveGroup, GetUsersFromGroup, GetGroupInfo, GetAllGroups 事件
          • 9.3.6. NeedSendFullFrame 方法
          • 9.3.7. Reconnect 方法
          • 9.3.8. RestartServer 方法
          • 9.3.9. SendCmd, BeginCmd, EndCmd, WaitSendCmd 方法
          • 9.3.10. SendFile, SendUserData 事件
          • 9.3.11. SendMediaAccessRequest, SendMediaAccessCancelRequest 方法
        • 10. TRVCamReceiver 组件
          • 10.1. 属性
          • 10.1.1. Active 属性
          • 10.1.2. AudioLatency, VideoLatency 属性
          • 10.1.3. BufferSize 属性
          • 10.1.4. ConnectionProperties 属性
          • 10.1.5. FilterSystemCmd 属性
          • 10.1.6. GUIDMy 属性
          • 10.1.7. IgnoreCorruptedFrames 属性
          • 10.1.8. Mute 属性
          • 10.1.9. Port 属性
          • 10.1.10. Protocol 属性
          • 10.1.11. ReceiveMediaTypes 属性
          • 10.1.12. Senders 属性
          • 10.1.13. SessionKey, SessionKey2 属性(只读)
          • 10.1.14. SmoothImage 属性
          • 10.1.15. State 属性(只读)
          • 10.1.16. SynchonizedReceiveUserData 属性
          • 10.1.17. TCPConnectionType 属性
          • 10.1.18. Volume 属性
          • 10.2. 事件
          • 10.2.1. OnConnected, OnConnecting, OnDisconnect, OnConnectError 事件
          • 10.2.2. OnDecodeAudio 事件
          • 10.2.3. OnGetGroupInfo 事件
          • 10.2.4. OnRequestJoinGroup 事件
          • 10.2.5. OnGetAllGroups 属性
          • 10.2.6. OnGetAllUsers, OnGetAllOnlineUsers 事件
          • 10.2.7. OnGetGroupUsers 属性
          • 10.2.8. OnGetImage 事件
          • 10.2.9. OnOpenChannel, OnCloseChannel 事件
          • 10.2.10. OnReceiveCmdData 事件
          • 10.2.11. OnReceiveFileData 事件
          • 10.2.12. OnReceiveUserData 属性
          • 10.2.13. OnSessionConnected, OnSessionDisconnected 属性
          • 10.2.14. OnUserEnter, OnUserExit 属性
          • 10.2.15. OnUserJoinsGroup, OnUserLeavesGroup 属性
          • 10.2.16. OnMediaAccessRequest, OnMediaAccessCancelRequest 属性
          • 10.3. 方法
          • 10.3.1. GetOpenChannelCount, GetMaxChannelCount 方法
        • 11. TRVMicrophone 组件
          • 11.1. 属性
          • 11.1.1. AudioInputDeviceIndex, AudioInputDeviceCount, AudioInputDeviceList 属性
          • 11.1.2. BitsPerSample, SamplesPerSec 属性
          • 11.1.3. BufferDuration 属性
          • 11.1.4. Mute 属性
          • 11.1.5. NoiseReduction 属性
          • 11.1.6. Pitch 属性
          • 11.1.7. SoundIgnoreInterval 属性
          • 11.1.8. SoundMinLevel 属性
          • 11.1.9. SourceType 属性
          • 11.1.10. VolumeMultiplier 属性
          • 11.1.11. WAVFileName 属性
          • 11.1.12. WAVUseOptions 属性
          • 11.2. 事件
          • 11.2.1. OnOpenWavFile, OnReadWavFile, OnCloseWavFile 事件
        • 12. TRVMicrophoneView 组件
          • 12.1. 属性
          • 12.1.1. Style 属性
          • 12.2. 事件
          • 12.2.1. OnPaint 事件
        • 13. TRVMediaServer 组件
          • 13.1. 属性
          • 13.1.1. BufferOptions, TempFolder 属性
          • 13.1.2. CmdOptions 属性
          • 13.1.3. FilterUserCmd 属性
          • 13.1.4. GUIDMy 属性
          • 13.1.5. HTTPActive, HTTPPort 属性
          • 13.1.6. KeepClientInfoMode 属性
          • 13.1.7. MaxGroupCount 属性
          • 13.1.8. SenderConnectionProperties, ReceiverConnectionProperties 属性
          • 13.1.9. SessionKey 属性(只读)
          • 13.1.10. UDPActive, UDPPort 属性
          • 13.2. 事件
          • 13.2.1. OnDataRead 事件
          • 13.2.2. OnPacketProcessing, OnConnectionCountChanged 事件
          • 13.2.3. OnServerCmd 事件
          • 13.2.4. OnStart, OnStop, OnError 事件
          • 13.2.5. OnUserConnect, OnUserDisconnect 事件
          • 13.3. 方法
          • 13.3.1. SendCommandToGUID 方法
        • 14. TRVTrafficMeter 组件
          • 14.1. 属性
        • 15. TFSPlayer组件
          • 15.1. 属性
          • 15.1.1. AspectRatio
          • 15.2. 方法
          • 15.2.1. InitSDL
          • 15.2.2. Open
          • 15.2.3. TogglePause
          • 15.2.4. StepToNextFrame
          • 15.2.5. Stop
          • 15.2.6. Capture
          • 15.2.7. ShowMsgLog
        • 16. TFSEnCoder组件
          • 16.1. 属性
          • 16.1.1. DeviceType
          • 16.1.2. InFileName
          • 16.1.3. InputOptions
          • 16.1.4. OutFileName
          • 16.1.5. OutputOptions
          • 16.2. 方法
          • 16.2.1. Load
          • 16.2.2. Start
          • 16.2.3. Pause
          • 16.2.4. Resume
          • 16.2.5. Stop
        • 17. TChrome 组件
          • 17.1. 方法
          • 17.1.1. CreateBrowswer
          • 17.1.2. Init
          • 17.1.3. URL
      • 数据图表控件
      • 流程图表控件
      • 数据分析控件
      • 复合数控控件
      • 模拟数控控件
      • 调节数控控件
      • 数位数控控件
      • 数据数控控件
      • 地图控件
      • 其他控件
      • SVG控件
      • IsoBean控件
      • 样式控件
      • 样式外观控件
      • 样式高级控件
      • 样式工具控件
      • 样式数据控件
      • 样式控件GP
      • 样式数据控件GP
    • 功能用法

    • 专用模板

    • 开发流程

    • 函数程序

  • 开发手册

目录

监控视频控件

# Smart 控件使用(监控视频)

  该分类中集合了用于处理本地网络摄像头和IP摄像头组件,通过IP网络传输视频,组织视频聊天,录制音频和视频文件,以及展示的功能。

# 1. TVideoClient 组件

  TVideoClient是一个视频串流客户端组件,用来捕获网络摄像头视频流并转化成视频。

  TVideoClient有三个重要属性分别是:CamType摄像头类型,Url摄像头网终地址,Active激活。

TVideoClient
  • CamType属性说明
    • ctESP32_CAM:ESP32-CAM摄像头
    • ctCAM:非ESP32-CAM摄像头
Begin
  FThis.VideoClient1.Url :='http://192.168.1.115'; //摄像头网络地址
  FThis.VideoClient1.Active := true;//激活控件
End;
1
2
3
4

# 2. TVideoServer 组件

  TVideoServer是一个将USB摄像头视频通过HTTPServer流推出去的组件,还可以进行录像功能,配合 TVideoClient 视频客户端组件使用。

TVideoServer

# 2.1. 属性(Propertys)

  • TVideoServer主要属性说明
    • AudioDeviceName:麦克风属性,可指定视频录音的麦克风。
    • DeviceName:USB摄像头列表,指定摄像头。
    • CameraOptions:摄像头配置
      • Active:摄像头是否激活。
      • AspectRatio:是否保持纵横比。
      • BorderColor:控件的背景颜色。
      • CaptureType:视频捕获类型(ctAuto,ctGrabber,ctVmr9)。
      • OutputFileName:输出视频文件名。
      • OutputFileType:输入视频文件类型。
    • BarCode:是否进行条码识别。
    • BarCodeInterval:条码识别频率。

# 2.2. 方法(Methods)

  • TVideoServer组件主要方法列表
方法 方法说明
StartDevice 启动设备
StopDevice 停止设备
TakePicture 拍摄照片
ShowPropertyDialog 显示摄像头属性配置对话框

# 2.2.1. StartDevice

  启动相机设备。

procedure StartDevice;
1

# 2.2.2. StopDevice

  停止相机设备。

procedure StartDevice;
1

# 2.2.3. ShowPropertyDialog

  现实相机属性对话框。

procedure ShowPropertyDialog;
1

# 2.2.4. TakePicture

  截取当前摄像头的画面。

function TakePicture:string;
1

# 2.3. 事件

  • TVideoServer组件主要事件

# 2.3.1. OnBarCode

  识别条码成功时触发该事件,并反馈识别的条码内容。

 procedure VideoServer1OnBarCode (const BarCode: string);
 begin
    //BarCode 识别的条码内容
 end;
1
2
3
4

# 3. TVNCClientWrapper组件

   VNC客户端组件,通过此组件可能连接到指定的VNC服务端。

  • TVNCClientWrapperr组件主要属性
属性 功能说明
Host VNCServer 服务器地址
Port VNCServer 服务器端口
ZlibLevel Zlib压缩级别(默认为1)
Listen: Boolea 接收来自VNC服务器的连接。(默认值= 0)
AutoReconnect 如果因为发生错误而取消连接,请提供重新连接到远程服务器。(默认= 1)
MenuKey 弹出菜单的键(默认=F8)
Monitor 打开VNC查看器窗口的监视器(如果可用)。
AcceptBell 当服务器要求时,发出系统提示音。(默认= 1)
Emulate3 模拟鼠标中键,当左右键同时使用时。(默认值= 0)
PointerEventDelay 从发送一个指针事件到发送下一个指针事件之间的间隔时间。(默认值= 0)
Protocol33 只使用协议3.3版本(默认=0)
DisableWinKeys 将特殊的Windows密钥直接传递给服务器。
ServerCutText 接受来自服务器的剪贴板更改。(默认= 1)
ClientCutText 将剪贴板更改发送到服务器。(默认= 1)
SendKeyEvents 向服务器发送按键(和释放)。(默认= 1)
SendPointerEvents 发送指针(鼠标)事件到服务器。(默认= 1)
Shared 允许到服务器的现有连接继续。(默认是断开所有其他客户端)(默认=0)
AutoSelect 自动选择像素格式和编码(默认值为1)
PreferredEncoding 使用的首选图形编码-如果设置为自动选择覆盖(ZRLE, Hextile或Raw)(默认=ZRLE)
FullScreen 使用整个显示来显示远程桌面。(按MenuKey进入查看器菜单)(默认=0)
LowColourLevel 颜色级别,用于低速连接。0 =非常低(8种颜色),1 =低(64种颜色),2 =中等(256种颜色)(默认值为1)
FullColour 使用全彩(默认是使用低颜色,除非自动选择决定链接足够快)。(默认值= 0)
UseDesktopResize 支持动态桌面调整(默认=1)
UseLocalCursor 本地渲染鼠标光标(默认=1)
DebugDelay 毫秒显示反转的像素数据-一个调试特性(默认值为0)

# 3.1. 方法(Methods)

方法 功能说明
IsActive 指示VNCClient远程状态
Start 开启VNCClient远程控制
Connect 连接VNCClient远程控制
Disconnect 断开VNCClient远程控制

# 3.1.1. IsActive函数

function IsActive: Boolean;
1

# 3.1.2. Start函数

function Start: Boolean;
1

# 3.1.3. Connect函数

function Connect: Boolean; overload;
function Connect(AHost: string; APort: word = 5900): Boolean; overload;
1
2

# 3.1.4. Disconnect函数

function Disconnect: Boolean;
1

# 4. TVNCServerWrapper组件

   VNC服务端组件,开启此组件可接受VNC客户端发送的连接请求。

# 4.1. 属性(Properties)

  • TVNCServerWrapper组件主要属性
属性 功能说明
MaxCutText 传入剪贴板更新的最大允许长度(默认值为262144)
PollConsoleWindows 服务器应该轮询控制台窗口的更新(默认值为1)
ZlibLevel Zlib压缩级别(默认为1)
UseCaptureBlt 使用更慢的捕获方法,确保alpha混合窗口正确显示(默认值=True)
DeadKeyAware 是否假设查看器已经将死键序列解释为latin-1字符(默认值=True)
QueryConnect 提示本地用户接受或拒绝传入的连接。(默认值=False)
SendCutText 将剪贴板更改发送到客户端。(默认值=True)
AcceptCutText 接受客户端的剪贴板更新。(默认= 1)
AcceptPointerEvents 从客户端接受指针按下和释放事件
AcceptKeyEvents 从客户端接受按键按下和释放事件。(默认= 1)
DisconnectClients 如果传入连接是非共享的,则断开现有客户端。
NeverShared 无论客户端指定的设置是什么,都不要将传入的连接视为共享的(默认值为0)
AlwaysShared 始终将传入连接视为共享连接,而不考虑客户端指定的设置(默认值为0)
Protocol33 始终使用协议3.3版本向后兼容行为不佳的客户端(默认=0)
CompareFB 在framebuffer上执行像素比较,减少不必要的更新(默认=1)
ClientWaitTimeMillis 等待客户端不再响应的毫秒数(默认值为20000)
IdleTimeout 丢弃空闲VNC连接的秒数(0表示没有超时)(默认值为3600)
RemapKeys 要重新映射的传入键码的逗号分隔列表。映射表示为两个十六进制值,以0x为前缀,以->分隔(默认=)
BlacklistTimeout 首次将主机列入黑名单时应用的初始超时。直到超时过期,主机才能重新尝试连接。(默认= 10)
BlacklistThreshold 未通过身份验证的连接尝试的数量,在该主机被列入黑名单之前允许的任何主机连接尝试的数量(默认值为5)
Password 客户端访问服务器时必须提供的密码的模糊二进制编码(默认=)
PasswordFile VNC认证密码文件(默认=)
ReverseSecurityType 指定用于反向连接的加密方案(无)(默认=无)
SecurityType 指定用于传入连接的安全方案(None, VncAuth)(默认=VncAuth)
DisableEffects 当服务器在使用时,禁用桌面用户界面效果。(默认值= 0)
RemovePattern 在使用服务器时删除桌面背景模式。(默认值= 0)
RemoveWallpaper 当服务器使用时,移除桌面壁纸。(默认值= 0)
DisplayDevice 显示要远程监控的设备名,或空出整个桌面。(默认=)
DisconnectAction 所有客户端断开连接时执行的操作。(None, Lock, Logoff) (default=None)
DisableLocalInputs 在服务器使用时禁用本地键盘和指针输入(默认值为0)
UpdateMethod 如何发现桌面更新;0 -轮询,1 -应用挂钩,2 -驱动挂钩。(默认= 1)
QueryOnlyIfLoggedOn 只有在有用户登录时才提示本地用户接受传入连接(默认值为0)
LocalHost 只接受来自本地环回网络接口的连接(默认=0)
Hosts 过滤器描述允许哪些主机访问此服务器(默认=+0.0.0.0/0.0.0.0)
PortNumber 服务器接受连接的TCP/IP端口(默认=5900)
HTTPPortNumber TCP/IP端口,服务器将在该端口上提供Java applet VNC查看器(默认值为5800)
DisableClose 关闭VNC服务器托盘菜单中的关闭条目。(默认值= 0)
DisableOptions 禁用VNC服务器托盘菜单中的选项条目。(默认值为0)-未导出
QueryConnectTimeout 拒绝连接前显示接受连接对话框的秒数(默认值为10)

# 4.2. 方法(Methods)

方法 功能说明
IsActive 指示VNCServer状态
Start 开启VNCServer服务
Stop 停止VNCServer服务
Restart 重新VNCServer服务

# 4.2.1. IsActive函数

function IsActive: Boolean;
1

# 4.2.2. Start函数

function Start: Boolean;
1

# 4.2.3. Stop函数

function Stop: Boolean;
1

# 4.2.4. Restart函数

function Restart: Boolean;
1

# 5. TRVCamera 组件

  TRVCamera需与相机配合使用实现搜索,配置,接收视频流,保存或播放视频文件的功能。   TRVCamera接收到的视频可以显示在TRVCamView或TRVCamMultiView组件中。 相机的移动由TRVCamControl组件控制或者自行手动调整控制。 组件连接逻辑图 属性对应连接图   可以将TRVCamera指定为TRVCamSender的VideoSource(视频源)。   您可以使用TRVCamRecorder从TRVCamera录制视频。   TRVCamera可以从以下来源接收视频:

  • 来自网络的IP摄像机(MJPEG,更新的JPEG,一个周期更新的JPEG文件集,H.264流)
  • RTSP(包含H.264和MPEG-4第2部分视频数据的AVI和MP4文件,MJPEG流,H.264流)
  • HTTP(MJPEG流,H.264流,包含H.264和MPEG-4第2部分视频数据的AVI和MP4文件)
  • USB网络摄像头;
  • 屏幕(桌面);
  • 视频文件(如果安装了必要的编解码器)。

  您可以通过DeviceType属性选择视频源。 在分配必要的属性(取决于源类型)后,调用PlayVideoStream方法。   视频可以录制到MJPEG文件并从MJPEG文件播放。

# 5.1. 属性

属性 属性说明
Aborting 当组件正在中止当前操作时返回True
FramePerSec 设定帧速率
FramePerSecInt 当帧速率需要被设定为整数时,该属性显示的是FramePerSec属性的舍入整数值,最小值为1
Agent 使用HTTP协议连接时,此属性将作为用户代理字段(user-agent)发送
Bitrate 返回并允许更改视频比特率
Brightness 读取/改变视频亮度
CameraControl 指定用于控制相机的控制控件
CameraHost 指定摄像机的地址
CameraPort 指定摄像机的端口
CameraSearchTimeOut 指定搜索相机超时的时间
CommandMode 定义组件如何向摄像机发送命令的模式
Contrast 读取/改变视频对比度
CycleVideoImages 是否开启循环读取模式
DeviceType 指定源视频设备类型
DesktopMode 指定视频的显示方式
DesktopRect 当DesktopMode=rvdmRect时,该属性用于指定显示的矩形区域
DesktopWindowHandle 当DesktopMode=rvdmWindow时,指定其显示的窗体句柄
DesktopZoomPercent 缩放视频帧大小的百分比
FFMpegProperty 配置FFmpeg视频属性,其中UseFFmpeg决定是否启用FFmpeg
FileName 录制的视频名称
FlipHorizontally 视频是否水平翻转
FlipVertically 视频是否垂直翻转
FocusDistance 对焦距离的模式设定,当FocusType属性为rvcfFocusAuto时使用
FocusType 对焦类型设定
GStreamerProperty GStreamer的属性设置
Hue 读取/改变视频色调
IPCameraTypes 摄像机的型号
JpegIntegrity 图片文件的完整性检查方式
MaxCameraSearchThreadCount 指定最大的摄像机搜索线程数
MaxUsers MaxUsers返回摄像机支持的最大用户数,用户允许管理摄像机的用户(需要管理员权限)
Parameters 此属性包含返回有关IP摄像机的信息的子属性(如果摄像机支持)
RTSPPort 指定摄像机RTS协议的端口号
Quality 指定视频品质的偏好设置
Rotation 在发送视频前旋转视频帧
Saturation 读取/改变视频饱和度
Searching 读取当前是否处于搜索状态
Sharpness 读取/改变视频锐度
SmoothImage 顺滑视频帧
SourceFileName DeviceType = rvdtFile时,指定的源文件的名称
ToFile 是否将录制的视频制作为文件保存
URL 使用RTSP、HTTP协议获取视频流时获取的地址信息
UserAccess 指定摄像机的访问模式
UserName 指定登陆摄像机的用户名
UserPassword 指定登陆摄像机的密码
Users 指定登陆的用户属性的配置
VideoDeviceCount 视频源设备数量
VideoDeviceIndex 视频源设备编号序号
VideoDeviceIdList 摄像头标识符的列表数组
VideoDeviceList 摄像机设备的列表数组
VideoFormat 视频的格式
VideoImagesURLs 当设定CycleVideoImages = Ture时,循环读取视频的链接列表
VideoMode 视频的播放模式

# 5.1.1. Aborting 属性

property Aborting: Boolean; // 只读属性
1

  当组件正在中止当前操作时返回True。

  if This.RVCamera1.Aborting then
    ShowMessage('当前组件正在中止操作');
1
2

# 5.1.2. FramePerSec, FramePerSecInt 属性

property FramePerSec: Double;
property FramePerSecInt: Integer; // 只读属性
1
2

  如果视频源(例如IP摄像机)支持修改帧数,则修改FramePerSec属性可更改每秒帧数值(帧速率)。   此外,TRVCamera在播放MJPEG文件时也会使用此属性。   如果DeviсeType = rvdtWebCamera,rvdtDesktop或rvdtUserData,或者在播放MJPEG文件时,该属性可以使用小数值。 否则,它会被舍入为整数值(最小值1)。 在FramePerSecInt属性中会返回该整数值。   TRVCamReceiver中将忽略此属性。

  This.RVCamera1.FramePerSec := 25;
1

# 5.1.3. Agent 属性

property Agent: String;
1

  使用HTTP协议连接时,此属性将作为用户代理字段(user-agent)发送,该属性是可选填的。

  This.RVCamera1.Agent := 'IP Camera';
1

# 5.1.4. Bitrate 属性

property Bitrate: Integer;
1

  返回并允许更改视频比特率。   当DeviceType = rvdtRTSP和rvdtHTTP时,指定GStreamer的比特率范围是0~2097152(0表示自动计算的比特率)   当DeviceType = rvdtIPCamera时,MJPEG Foscam相机,范围:适用于MJPEG:1200~115200,适用于H.264:20480~2097152   要应用这些值,请在TRVCamera连接到设备时更改它们。   如果摄像机支持这些属性,则在组件连接到摄像机时会从摄像机接收它们的值,请参阅SearchCamera属性。

  //该属性的默认值不会被应用,在连接到相机时会被覆盖。
  This.RVCamera1.Bitrate := 2097512;
1
2

# 5.1.5. Brightness, Contrast, Hue, Saturation, Sharpnes 属性

property Brightness: Integer;
property Contrast: Integer;
property Hue: Integer;
property Saturation: Integer;
property Sharpness: Integer;
1
2
3
4
5

  该几项属性是图像显示设置,包含亮度、对比度、色调、饱和度、锐度设置。

  • Brightness/Contrast(亮度、对比度):
      当DeviceType = rvdtDesktop时,取值范围为0..255(中间值为128),由控件实现调整。   当DeviceType = rvdtIPCamera时,对于MJPEG和H.264 Foscam相机,取值范围为0..100。

  • Hue/Saturation(色调/饱和度):
      当DeviceType = rvdtIPCamera时,H.264 Foscam相机取值范围为0..100。

  • Sharpness(锐度):
      当DeviceType = rvdtRTSP和rvdtHTTP时,指定GStreamer的比特率,取值范围为50..150(中间值为100)。   当DeviceType = rvdtIPCamera时,对于H.264 Foscam相机,取值范围为0..100。

  要应用这些值,请在TRVCamera连接到设备时更改它们。   如果摄像机支持这些属性,则在组件连接到摄像机时会从摄像机接收它们的值,请参阅SearchCamera属性。

  //该属性的默认值不会被应用,在连接到相机时会被覆盖。
  This.RVCamera1.Brightness := 96;
  This.RVCamera1.Contrast := 4;
  This.RVCamera1.Hue := 50;
  This.RVCamera1.Saturation := 50;
  This.RVCamera1.Sharpness := 50;
1
2
3
4
5
6

# 5.1.6. CameraControl 属性

property CameraControl: TRVCamControl;
1

  指定用于控制摄像机移动的TRVCameraControl组件(需当前摄像机支持控制才可使用该属)。如果将此组件分配给TRVCamMultiView中某个查看器的VideoSource,则此属性由TRVCamMultiView维护,请参阅TRVCamMultiView.CameraControl属性。

   This.RVCamera1.CameraControl := This.RVCamControl1;
1

# 5.1.7. CameraHost, CameraPort, RTSPPort 属性

property CameraHost: String;
property CameraPort: Integer;
property RTSPPort: Integer;
1
2
3

  指定IP摄像机的主机地址和端口。   仅当DeviceType = rvdtIPCamera时才使用这些属性。   如果摄像机的视频协议是RTSP,它可能会使用不同的端口来执行命令和视频流。 在这种情况下,请在CameraPort中指定命令的端口,在RTSPPort中指定视频的端口。   CameraPort / RTSPPort还需与URL属性一起使用。

  如果CycleVideoImages = True,则从VideoImagesURL中指定的文件中读取来自IP摄像机的视频。 sc要从摄像头播放视频,请先调用SearchCamera,然后调用PlayVideoStream。   注意:如果SearchCamera创建了摄像机,并且此摄像机不是由Foscam,Axis,D-Link或Panasonic制造的可控摄像机,则会清除CameraHost和CameraPort属性,并将视频流的地址分配给URL。

   This.RVCamera1.CameraHost := '192.168.1.10';
   This.RVCamera1.CameraPort := 9800;
   This.RVCamera1.RTSPort := 9801;
1
2
3

# 5.1.8. CameraSearchTimeOut 属性

property CameraSearchTimeOut: Integer;
1

  指定摄像机搜索的超时间隔,以毫秒(ms)为单位。设定较小的值可以加快搜索相机的速度,但是会增加忽视相机的概率。

   This.RVCamera1.CameraSearchTimeOut := 3000;
1

# 5.1.9. CommandMode 属性

type
  TRVSendMode = (rvsmWait, rvsmNoWait); // defined in MRVType unit
property CommandMode: TRVSendMode
1
2
3

  定义组件如何向摄像机发送命令的模式。

  • rvsmWait:组件等待命令完成。
  • rvsmNoWait:组件不等待命令。 命令完成后,将调用事件。
   This.RVCamera1.CommandMode := rvsmWait;
1

# 5.1.10. CycleVideoImages, VideoImagesURLs 属性

property CycleVideoImages: Boolean;
property VideoImagesURLs: TStringList;
1
2

  这些属性允许使用文件名列表来下载视频。
  仅当DeviceType = rvdtIPCamera时才使用这些属性。
  如果CycleVideoImages = True,则从VideoImagesURL中指定的位置循环读取视频。 这些位置将添加到CameraHost和CameraPort中。

    This.RVCamera1.CycleVideoImages := True;
    This.RVCamera1.VideoImagesURLs.Add('http://192.168.1.10/sample.mp4');
1
2

# 5.1.11. DesktopMode, DesktopRect, DesktopWindowHandle, DesktopZoomPercent 属性

type
  TRVDesktopMode = (rvdmAll, rvdmRect, rvdmForm); // defined in MRVType unit
property DesktopMode: TRVDesktopMode;
property DesktopRect: TRect
property DesktopWindowHandle: THandle;
property DesktopZoomPercent: Integer
1
2
3
4
5
6

  这些属性指定用于编码视频的桌面区域。
  当DeviceType属性为rvdtDesktop时,DesktopMode属性可用,包含以下选项:

  • rvdmFull:将整个桌面或者整个监视器作为显示区域,详情请参阅VideoDeviceIndex/VideoDeviceCount/VideoDeviceList/VideoDeviceIdList属性。
  • rvdmRect:显示区域为DesktopRect属性中规定的矩形区域。
  • rvdmWindow:如果指定了DesktopHandle,则打开一个新的程序窗口用于显示该区域内容。如果DesktopHandle=0,则使用主窗体进行显示。

  DesktopZoomPercent用于缩放生成的视频帧。 例如,DesktopZoomPercent = 100,则保持帧不变(100%大小),DesktopZoomPercent = 50,则将其宽度和高度缩小到50%。 分配1..99范围内的值以减小帧大小,从而减少流量消耗。 也可以指定大于100的值来使帧变大。

    //全屏显示
    This.RVCamera1.DesktopMode := rvdmFull;
    //指定显示区域
    This.RVCamera1.DesktopMode := rvdmRect;
    This.RVCamera1.DesktopRect.Left := 0; 
    This.RVCamera1.DesktopRect.Right := 960; 
    This.RVCamera1.DesktopRect.Top := 0;
    This.RVCamera1.DesktopRect.Bottom := 540;
    //指定显示窗体
    This.RVCamera1.DesktopMode := rvdmWindow;
    This.RVCamera1.DesktopWindowHandle := 0;

    //指定显示的帧区域
    This.RVCamera1.DesktopZoomPercent := 100;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 5.1.12. DeviceType 属性

type
  TRVDeviceType = (rvdtIPCamera, rvdtWebCamera, rvdtDesktop,
    rvdtFile, rvdtRTSP, rvdtHTTP, rvdtUserData); // defined in MRVType unit
property DeviceType: TRVDeviceType;
1
2
3
4

  指定源视频设备类型。
  指定的视频格式和网络协议用于GStreamer; 对于FFmpeg,它们会被自动检测到。

值 说明 GStreamer FFmpeg
rvdtIPCamera IP Camera通过HTTP或TCP生成MJPEG或H.264视频流
需要CameraHost:CameraPort或URL属性
视频格式需在VideoFormat中指定
不使用 不需要MJPEG
rvdtWebCamera 使用USB连接的网络摄像头,需要使用VideoDeviceIndex属性 不使用 不使用
rvdtDesktop 使用屏幕作为视频源设备,需要使用DesktopMode属性 不使用 不使用
rvdtFile 视频源为文件,需要使用SourceFileName属性 不使用 选择性使用
rvdtRTSP 通过RTSP协议获取视频源,需要使用URL属性,视频格式在VideoFormat属性中规定 两者同时使用 两者同时使用
rvdtHTTP 通过HTTP协议获取的视频源,需要使用URL属性,视频格式在VideoFormat属性中规定 不需要MJPEG,GStreamer与FFmpeg在其他情况下都需要
rvdtUserData 由应用提供视频,通过OnNewImage事件实现 不使用 不使用
    This.RVCamera1.DeviceType := rvdtIPCamera;
1

# 5.1.13. FFMpegProperty 属性*

property FFMpegProperty: TRVFFMpegProperty;
1

  用于配置FFmpeg的属性。
  您可以使用IsSupportedFFMPEG函数检查FFmpeg是否存在。
  主要属性是FFmpegProperty.UseFFMpeg,用于打开/关闭对FFmpeg的支持。

    This.RVCamera1.FFMpegProperty.UseFFMeg := True;
1

# 5.1.14. FileName, ToFile 属性

property ToFile: Boolean;
property FileName: String;
1
2

  该属性将视频录制成MJPEG格式的文件,如果ToFile = True,则从相机中录制的视频会被命名为FileName属性的视频文件。

    This.RVCamera1.ToFile := True;
    This.RVCamera1.Filename := 'sample.mp4';
1
2

# 5.1.15. FlipHorizontally, FlipVertically 属性

property FlipHorizontally: Boolean;
property FlipVertically: Boolean;
1
2

  如果摄像机支持这些属性的设置,则该属性允许水平/垂直翻转视频。
  如果摄像机支持这些属性,则在组件连接到摄像机时会从摄像机接收它们的值。

    This.RVCamera1.FlipHorizontally := True;
    This.RVCamera1.FlipVertically := True;
1
2

# 5.1.16. FocusType, FocusDistance 属性*

type
  TRVCamFocus = (rvcfFocusAuto, rvcfFocusNear, rvcfFocusFar); // defined in MRVType unit
property FocusType: TRVCamFocus;
property FocusDistance: Integer;
1
2
3
4

  如果相机支持控制对焦,则该属性可用于控制相机的对焦。

  FocusType属性有如下选项:

值 说明
rvcfFocusAuto 自动对焦
rvcfFocusNear 近距离对焦
rvcfFocusFar 远距离对焦

  FocusDistance属性仅在FocusType属性为rvcfFocusAuto时可用。FocusDistance属性有如下选项可用:

值 说明
1 近距离自动对焦
2 远距离自动对焦

  当相机支持这些属性时,这些属性的值将会从相机中读取。

   This.RVCamera1.FocusType := rvcfFocusAuto;
   This.RVCamera1.FocusDistance := 1;
1
2

# 5.1.17. GStreamerProperty 属性

property GStreamerProperty: TRVGStreamerProperty;
1

  该属性用于配置GStreamer。

  您可以使用IsSupportedGStreamer功能检查GStreamer是否存在。

  主要属性是GStreamerProperty.UseGStreamer,它用于打开/关闭GStreamer的支持。

# 5.1.18. IPCameraTypes 属性(只读)

property IPCameraTypes: TRVCameraTypes;
1

  当连接到网络摄像机(或者在搜索到摄像机)后,该属性用于返回摄像机的型号。

# 5.1.19. JpegIntegrity 属性

property JpegIntegrity: TRVJpegIntegrity;
1

  该属性用于指定对接收图片(视频帧)的完整性检查方式。有rvjiNone(不执行检查)、rvjiFast(快速检查)、rvjiFull(完全检查)三种形式。

   This.RVCamera1.JpegIntegrity := rvjiNone;
1

# 5.1.20. MaxCameraSearchThreadCount 属性

property MaxCameraSearchThreadCount: Word;
1

  指定同时工作的IP摄像机搜索线程的最大计数。值越高,搜索速度越快,但消耗的系统资源越多。

   This.RVCamera1.MaxCameraSearchThreadCount := 40;
1

# 5.1.21. Parameters 属性*

property Parameters: TRVCameraParameters;
1

  TRVCameraParameters包含以下属性:

  • ID: String;
  • Version: String;
  • Alias: String;
  • Network: TRVCamNetworkProperties;
  • DateTimeParameter: TRVDateTimeParameter;
  • WirelessLan: TRVWirelessLan;
  • ADSL: TRVADSL;
  • UPnPtoMapPort: Boolean;
  • MailService: TRVMailService;
  • FtpService: TRVFtpService;
  • AlarmService: TRVAlarmService;
  • PTZSettings: TRVPTZSettings;
  • Decoder: TRVDecoder;

  TRVCameraParameters包含以下只读属性:

  • CameraHost: String;
  • IPCameraTypes: TRVCameraTypes;
  • DeviceType: TRVDeviceType;
  • UserAccess: TRVUserAccess;
  • IPCameraTypesStr: String;
  • UserAccessStr: String;

# 5.1.22. Quality 属性

type
  TRVQualityType = (qtStandard, qtFavorMotion, qtFavorClarity); // defined in MRVType unit
property Quality: TRVQualityType;
1
2
3

  如果摄像机支持画质设置,则该属性用于定义视频的画质偏好,该属性会在摄像机连接时从摄像机处接收。以下是Quality属性的选项:

值 说明
qtStandard 标准画质
qtFavorMotion 针对快速运动画面进行优化
qtFavorClarity 针对静止的视频帧进行画质优化

# 5.1.23. Rotation 属性

type
  TRVRotation = (rvrNone, rvr90, rvr180, rvr270); // defined in MRVType unit
property Rotation: TRVRotation;
1
2
3

  该熟悉可指定在发送视频流之前将视频帧旋转的角度,有rvrNone、rvr90、rvr180、rvr270等选项,此属性对于在具有“纵向”屏幕方向的设备上发送视频非常有用。

   This.RVCamera1.Rotation := rvrNone;
1

# 5.1.24. Searching 属性

property Searching: Boolean; // read-only
1

  当正在搜索摄像机时返回True,该属性为只读。

# 5.1.25. SmoothImage 属性

property SmoothImage: Boolean;
1

  是否通过从最后接收的几个视频帧创建图像来平滑视频帧。

  如果为True,则通过最后接收的3帧图像来平滑视频帧。

  优点:可以消除图像中的噪点,尤其是在光线不足的情况下。

  不足:会使移动的物体模糊化。

  我们不建议对包含快速运动物体的视频或者摄像机帧速率低的执行该属性操作。

   This.RVCamera1.SmoothImage := False;
1

# 5.1.26. SourceFileName 属性

property SourceFileName: String;
1

  当DeviceType=rvdtFile时,该属性用于指定源视频文件的名称。

  如果FFMpegProperty.UseFFMPEG = True,并且FFmpeg可用,则组件使用FFmpeg播放此文件。 否则,它使用DirectX。 系统必须安装视频编解码器。

   This.RVCamera1.DeviceType := rvdtFile;
   This.RVCamera1.SourceFileName := 'temp.avi';
1
2

# 5.1.27. URL 属性

property URL: String;
1

  指定来自IP摄像机(或Internet中可用的其他视频源)的视频流的地址。

  如果DeviceType = rvdtIPCamera且CameraHost未分配,并且DeviceType = rvdtRTSP或rvdtHTTP,则使用此属性。

  避免在此属性中包含用户名,密码和端口。 请改用CameraPort / RTSPPort,UserName,UserPassword。

  该属性可通过搜索摄像机功能获取。

  要从相机播放视频,请调用PlayVideoStream方法。

# 5.1.28. UserAccess 属性(只读)

type // defined in MRVType unit
  TRVUserAccess = (uaNone, uaPresent, uaVisitor, uaOperator, uaAdmin);
property UserAccess: TRVUserAccess; // read-only
1
2
3

  连接到摄像机时(摄像机搜索完成后),返回用户UserName:UserPassword的访问模式。

# 5.1.29. UserName, UserPassword 属性

property UserName: String;
property UserPassword: String;
1
2

  属性定义用于访问摄像头的用户名和密码。

# 5.1.30. Users, Maxusers 属性

property MaxUsers: Integer; // read-only
property Users: TRVCamUserCollection;
1
2

  MaxUsers返回摄像机支持的最大用户数,用户允许管理摄像机的用户(需要管理员权限)。

  TRVCamUserCollection是TRVCamUser项的集合。 每个项目都具有以下属性:

  • UserName: String;
  • Password: String;
  • Access: TRVUserAccess;
type // defined in MRVType unit
  TRVUserAccess = (uaNone, uaPresent, uaVisitor, uaOperator, uaAdmin);
1
2

  如果连接到相机,则对此集合或其项目的任何更改都会在执行时发送到相机。 要防止发送,请使用LockCommands / UnlockCommands,然后调用UpdateUsers。

  如果摄像机支持此属性(用户),则在组件连接到摄像机时会从摄像机接收其值。

# 5.1.31. VideoDeviceIndex, VideoDeviceCount, VideoDeviceList, VideoDeviceIdList 属性

property VideoDeviceIndex: Integer;
property VideoDeviceCount: Integer; // read-only
property VideoDeviceList[Index: Integer]: String; // read-only
property VideoDeviceIdList[Index : Integer]: String; // read-only
1
2
3
4

  该属性用于控制USB摄像头以及监视器。

  如果DeviceType = rvdtWebCamera或rvdtDesktop,则使用这些属性。 VideoDeviceIdList仅用于网络摄像头。

  当DeviceType=rvdtWebCamera时,VideoDeviceCount返回网络摄像头(视频捕获设备)的数量。VideoDeviceList [Index](其中Index在0..VideoDeviceCount-1范围内)返回网络摄像头的名称。 可以在应用程序UI中向用户显示这些名称。VideoDeviceIdList [Index](其中Index在0..VideoDeviceCount-1范围内)返回网络摄像头的标识符。 这些标识符在计算机上是唯一的。将0..VideoDeviceCount-1范围内的值分配给VideoDeviceIndex以选择网络摄像头。要从相机播放视频,请调用PlayVideoStream方法。

  当DeviceType=rvdtDesktop时,VideoDeviceCount返回监视器的计数+ 1。第0个设备对应于整个桌面,从1到VideoDeviceCount-1的索引对应于监视器(第i个设备对应于Screen.Monitors [i-1])。VideoDeviceList [Index](其中Index在0..VideoDeviceCount-1范围内)返回设备(桌面或监视器)的描述。将范围为0..VideoDeviceCount-1的值分配给VideoDeviceIndex,以选择桌面或监视器作为视频源(如果DesktopMode = rvdmFull)。要从桌面播放视频,请调用PlayVideoStream。

# 5.1.32. VideoFormat 属性

  指定视频的格式。

type
  TRVVideoFormat = (rvvfMJPEG, rvvfH264, rvvfAVI_H264, rvvfMP4_H264, 
    rvvfAVI_MPEG, rvvfMP4_MPEG); // defined in MRVType unit
property VideoFormat: TRVVideoFormat;
1
2
3
4

  DeviceType=rvdtHTTP, rvdtRTSP, 或者 rvdtIPCamera时该属性可用。

  所有视频格式(rvdtHTTP和rvdtIPCamera模式下的MJPEG除外)都需要GStreamer或FFmpeg。 如果这两者处于不可用或者关闭状态,则该属性无效。

  以下是VideoFormat的选项:

值 说明 GStreamer用法 FFmpeg用法
rvvfMJPEG MJPEG格式的视频流 DeviceType=rvdtHTTP,可选使用
DeviceType=rvdtRTSP,必须使用
DeviceType=rvdtHTTP或者rvdtIPCamera时,可选
在其他情况下为必须
视频格式无需指定,FFmpeg自动检测
rvvfH264 H.264格式的视频流 需要 同上
rvvfAVI_H264 AVI文件,使用H.264编码 需要 同上
rvvfMP4_H264 MP4文件,使用H.264编码 需要 同上
rvvfAVI_MPEG AVI文件,使用MPEG-4 Part 2 编码 需要 同上
rvvfMP4_MPEG MP4文件,使用MPEG-4 Part 2编码 需要 同上

# 5.1.33. VideoMode 属性*

type
  TRVVideoMode = (vm50HZ, vm60HZ, vmOutdoor); // defined in MRVType unit
property VideoMode: TRVVideoMode;
1
2
3

  如果相机支持,则设置相机模式以防止由于电力频率而对图像造成抖动影响。

  以下是Video可用选项:

值 说明
vm50HZ 50Hz,且摄像机在室内使用
vm60HZ 60Hz,且摄像机在室内使用
vmOutdoor 如果摄像机在室外使用建议使用该选项

  如果相机支持该属性,则该属性会在相机搜索时获取。

  This.RVCamera1.VideoMode := vm50HZ;
1

# 5.1.34. VideoResolution 属性

property VideoResolution: TRVVideoResolution;
1

  如果相机支持,则该属性用于更改视频分辨率。

  如果相机支持该属性,则该属性会在搜索到相机时读取。

  如果当前的DeviceType = rvdtWebCamera,则该组件将设置宽度最接近分辨率中指定的视频模式。

  如果当前DeviceType = rvdtIPCamera,则组件设置摄像机视频分辨率(目前仅支持FosCam)。

  如果当前的DeviceType = rvdtRTSP或rvdtHTTP,并且GStreamer用于播放视频,则该组件以指定的分辨率请求视频。

   This.RVCamera1.DeviceType := rvdtIPCamera;
   This.RVCamera1.VideoResolution := rvDefault;
1
2

# 5.2. 事件

事件 何时触发
OnEndVideoFile 当视频文件播放停止时触发该事件
OnEndVideoStream 当视频流播放停止时触发该事件
OnGetImage 当组件读取从摄像机处获取的视频帧时触发该事件
图像以Img参数返回,你不能自己释放Img,但是您可以修改此图像
需在线程上下文中调用此事件。
OnMoved 当摄像机的移动命令结束后触发该事件
参数Status = 0表示命令成功,其他值表示错误
OnNewImage 当获取到自定义的视频帧时触发该事件
该事件仅在DeviceType = rvdtUserData时触发
在这种情况下,程序员可以提供自己的视频帧,但是必须将它们分配给img参数
Onprepared 当组件从IP摄像机读取属性时触发该事件
该事件发生在OnSearchComplete事件之前
OnProgress 当接收到下一部分视频数据(来自文件或相机)时,会发生该事件
BytesRead是此新数据部分的大小,您可以使用此事件计算播放视频时从摄像机接收的字节数
OnSearchComplete 当摄像机搜索结束时触发该事件
参数Status = 0表示找到摄像机,其他值表示出错
通过调用SearchCamera方法来开始搜索
OnSetProperty 在完成分配摄像机属性的命令时触发该事件
参数Status = 0表示找到摄像机,其他值表示出错
OnStartVideoFile 当视频文件开始播放时触发该事件
OnStartVideoStream 当视频文件停止播放时触发该事件
OnVideoStart 视频初始化播放时会发生此事件
当组件初始化播放视频(来自相机或文件)时,会发生此事件,它在接收第一个视频帧之前发生,因此该事件不保证该视频实际上将开始播放

# 5.3. 方法

方法 功能描述
FillVideoDeviceList 用于显示当前可用的网络摄像机或者监视器列表
GetCamVideoMode* 获取摄像机的视频模式
GetCamVideoModeCount* 获取当前摄像机支持的模式数量
GetCamVideoModeIndex* 获取摄像机当前视频模式的索引值
GetCamCurrentVideoMode* 返回当前的视频模式信息
SetCamVideoMode* 设定摄像机的视频模式
GetDesktopVideoModeCount* 返回监视器可用的视频模式数量
GetDesktopVideoModeIndex* 返回当前视频模式的索引值
GetDesktopCurrentVideoMode* 返回当前使用的视频模式
SetDesktopVideoMode* 设定视频模式
GetDesktopVideoMode* 返回视频模式以及其对应的索引值
GetAvailableCamProperties 获取可用摄像机属性
GetAvailableCamMethods 获取可用摄像机方法
GetAccessibleCamProperties 获取可连接摄像机属性
GetAccessibleCamMethods 获取可连接摄像机方法
GetSnapShot 获取视频截图
IsSupportedFFMPEG 检测是否支持FFmpeg
IsSupportedGStreamer 检测是否支持GStreamer
LockCommands, UnlockCommands 锁定命令,解锁命令
Move- 摄像机的移动命令
PlayVideoStream, PlayVideoFile 播放视频
ResetImageSetting 将视频颜色参数重置为默认值
SearchCamera 搜索相机
LEDOn,LEDOff 开启/关闭摄像机的LED灯
WaitForVideoStream, WaitForVideoFile, WaitForVideo, WaitForSearch 用于开启等待状态直至操作结束

# 5.3.1. FillVideoDeviceList 方法

procedure FillVideoDeviceList(List: TStrings);
1

  该方法用于显示当前可用的网络摄像机或监视器列表。

  如果DeviceType = rvdtWebCamera或rvdtDesktop,则可以使用该方法。

  此方法使用可用的网络摄像头或监视器的名称填充List,具体取决于DeviceType属性(请参阅VideoDeviceList属性)。

   This.RVCamera1.DeviceType := rvdtWebCamera;
   This.RVCamera1.FillVideoDeviceList(This.ListBox1.Items);
1
2

# 5.3.2. GetCamVideoMode, GetCamVideoModeCount, GetCamVideoModeIndex, GetCamCurrentVideoMode, SetCamVideoMode 属性*

function GetCamVideoModeCount: Integer;
function GetCamVideoModeIndex: Integer;
function GetCamCurrentVideoMode(var CamVideoMode: TRVCamVideoMode): Boolean;
function SetCamVideoMode(const Index: Integer): Boolean;
function GetCamVideoMode(const Index: Integer; var VideoMode: TRVCamVideoMode) : Boolean;
1
2
3
4
5

  如果DeviceType = rvdtWebCamera,则可以使用这些方法。

  GetCamVideoModeCount返回当前网络摄像头的可用模式数目。 GetCamVideoMode返回有关指定模式的信息(Index参数必须在0~GetCamVideoModeCount-1范围内)。 SetCamVideoMode将Web摄像头模式更改为Index-th模式(但某些模式可能会失败)。

  GetCamCurrentVideoMode返回有关当前视频模式的信息。

  GetCamVideoModeIndex返回当前视频模式的索引(此方法不准确:它返回第一个视频模式的索引,其中TRVCamVideoMode与当前视频模式匹配;但是,视频模式可能包含其他参数,不包括在TRVCamVideoMode记录中;当找到索引时记录会被忽略)。

  为VideoResolution分配新值可能会更改当前视频模式。 调用SetCamVideoMode后,将忽略VideoResolution,直到再为此属性指定不同的值。

# 5.3.3. GetDesktopVideoModeCount, GetDesktopVideoModeIndex, GetDesktopCurrentVideoMode, SetDesktopVideoMode, GetDesktopVideoMode 属性*

function GetDesktopVideoModeCount: Integer;
function GetDesktopVideoModeIndex: Integer;
function GetDesktopCurrentVideoMode(var DesktopVideoMode: TRVDesktopVideoMode): Boolean;
function SetDesktopVideoMode(const Index: Integer): Boolean;
function GetDesktopVideoMode(const Index: Integer; var VideoMode: TRVDesktopVideoMode): Boolean;
1
2
3
4
5

  如果DeviceType = rvdtDesktop,则可以使用这些方法。

  GetDesktopVideoModeCount返回主监视器的可用视频模式数目。 GetDesktopVideoMode返回有关指定模式的信息(Index参数必须在0..GetDesktopVideoModeCount-1范围内)。 SetDesktopVideoMode将桌面模式更改为索引模式。

  GetDesktopCurrentVideoMode返回有关当前视频模式的信息。

  GetDesktopVideoModeIndex返回当前视频模式的索引。

# 5.3.4. GetAvailableCamProperties, GetAvailableCamMethods, GetAccessibleCamProperties, GetAccessibleCamMethods 属性

type // defined in MRVType unit
  TRVCamProperty = (rvcp_DateTimeParameter, rvcp_dtpSyncWithPC, rvcp_dtpNow, rvcp_dtpTimeZone, rvcp_dtpNTPEnabled, rvcp_dtpNTPServer,
    rvcp_Network, rvcp_netDynamicIP, rvcp_netIPAddr, rvcp_netSubnetMask, rvcp_netGateway, rvcp_netDNSServer, rvcp_netHttpPort,
    rvcp_WirelessLan, rvcp_wlSSID, rvcp_wlEncryption, rvcp_wlNetworkType, rvcp_wlWEP, rvcp_wlWPA, rvcp_wlShareKey,
    rvcp_wlAuthetication, rvcp_wlKeyFormat, rvcp_wlDefaultTXKey, rvcp_wlKey, rvcp_wlKeyBits,
    rvcp_ADSL, rvcp_adslUser, rvcp_adslPassword,
    rvcp_MailService, rvcp_msSender, rvcp_msReceivers, rvcp_msSMTPServer, rvcp_msSMTPPort,
    rvcp_msReportInternetIPbyMail, rvcp_msNeedAuthentication, rvcp_msSMTPUser, rvcp_msSMTPPassword,
    rvcp_FtpService, rvcp_fsServer, rvcp_fsPort, rvcp_fsUser, rvcp_fsPassword,
    rvcp_fsUploadFolder, rvcp_fsMode, rvcp_fsUploadImageEnabled, rvcp_fsUploadInterval,
    rvcp_AlarmService, rvcp_asMotionDetectEnabled, rvcp_asMotionDetectSensitivity,
    rvcp_asAlarmInputEnabled, rvcp_asAlarmTriggerLevel, rvcp_asIOLinkage, rvcp_asOutputLevel,
    rvcp_asSendMail, rvcp_asUploadImageEnabled, rvcp_asUploadImageInterval, rvcp_asSchedulerEnabled,
    rvcp_Decoder, rvcp_dBaudrate,
    rvcp_PTZSettings, rvcp_ptzsLedMode, rvcp_ptzsCenterOnStart, rvcp_ptzsAutoPatrolInterval,
    rvcp_ptzsAutoPatrolType, rvcp_ptzsPatrolHoriz, rvcp_ptzsPatrolVert, rvcp_ptzsPatrolRate,
    rvcp_ptzsPatrolUpRate, rvcp_ptzsPatrolDownRate, rvcp_ptzsPatrolLeftRate, rvcp_ptzsPatrolRightRate,
    rvcp_dmID, rvcp_dmVersion, rvcp_dmAlias, rvcp_dmUPnPtoMapPort,
    rvcp_Users, rvcp_Switch, rvcp_FlipHorizontally, rvcp_FlipVertically, rvcp_VideoResolution,
    rvcp_VideoMode, rvcp_Brightness, rvcp_Contrast, rvcp_Parameters);
  TRVCamMethod = (rvul_dtpGetTimeZoneStr,rvcm_wlScan,rvcm_dmUpgradeDeviceFirmware, rvcm_dmBackup, rvcm_dmRestore,
    rvcm_dmRestoreFactorySettings, rvcm_dmRebootDevice, rvcm_dmLog,
    rvcm_VideoStream, rvcm_SnapShot, rvcm_Move);
    
function GetAvailableCamProperties: TRVCamProperties;
function GetAvailableCamMethods: TRVCamMethods;
function GetAccessibleCamProperties: TRVCamProperties;
function GetAccessibleCamMethods: TRVCamMethods;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

  GetAvailableCamProperties和GetAvailableCamMethods返回摄像头支持的所有属性和方法,即使它们不支持UserName:UserPassword。

  GetAccessibleCamProperties和GetAccessibleCamMethods考虑了用户权限。

  只有在找到相机后才能使用这些方法。

begin
   with This do
   begin
     RVCamera1.GetAvailableCamProperties;
     RVCamera1.GetAvailableCammethods;
     RVCamera1.GetAccessibleCamProperties;
     RVCamera1.GetAccessibleCamMethods;
   end;
end.
1
2
3
4
5
6
7
8
9

# 5.3.5. GetSnapShot 方法

function GetSnapShot: TRVImageWrapper;
1

  获取摄像机当前的视频帧作为截图,需要自行释放。

   This.RVCamera1.GetSnapShot;
1

# 5.3.6. IsSupportedFFMPEG 属性

function IsSupportedFFMPEG: Boolean;
1

  如果系统中已安装FFmpeg且可用,该方法返回True。

   if(This.RVCamera1.IsSupportedFFMPEG) then
   begin
     ShowMessage('支持FFMpeg');
   end;
1
2
3
4

# 5.3.7. IsSupportedGStreamer 属性

function IsSupportedGStreamer: Boolean
1

  如果系统中已包含GStreamer且可用,该方法返回True。

   if(This.RVCamera1.IsSupportedGStreamer) then
   begin
     ShowMessage('支持GStreamer');
   end;
1
2
3
4

# 5.3.8. LockCommands, UnlockCommands 属性

procedure LockCommands;
procedure UnlockCommands;
1
2

  LockCommands阻止在属性更改后向摄像机发送命令,UnlockCommands恢复命令发送模式。   例如,您可以调用LockCommands,对用户进行更改,调用UnlockCommands,然后调用UpdateUsers。

  此外,您可以在参数中应用更改时使用这些方法。

   This.RVCamera1.LockCommands;
   This.RVCamera1.UnlockCommands;
1
2

# 5.3.9. Move系列 方法

function MoveStop : Boolean;
function MoveLeft : Boolean;
function MoveLeftStop : Boolean;
function MoveRight : Boolean;
function MoveRightStop : Boolean;
function MoveUp : Boolean;
function MoveUpStop : Boolean;
function MoveDown : Boolean;
function MoveDownStop : Boolean;
function MoveLeftUp : Boolean;
function MoveLeftDown : Boolean;
function MoveRightUp : Boolean;
function MoveRightDown : Boolean;
function MoveHPatrol : Boolean;
function MoveHPatrolStop : Boolean;
function MoveVPatrol : Boolean;
function MoveVPatrolStop : Boolean;
function MoveCenter : Boolean;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

  如果摄像机支持Move操作,以上方法可用于控制摄像机的移动。

  等待模式:方法仅在执行命令时返回。 返回值:移动命令已成功发送到摄像机。

  无等待模式:该方法初始化一个线程(用于将命令发送到摄像机)并立即返回。 返回值:False。 命令完成后,将发生OnMoved事件。

  这些方法考虑了FlipHorizontally和FlipVertically属性。

# 5.3.10. PlayVideoStream, PlayVideoFile 属性

procedure PlayVideoStream;
procedure PlayVideoFile(FileName : string);  
1
2

  该方法用于播放视频。

  PlayVideoStream开始播放来自摄像机或网络的视频。 视频源取决于DeviceType属性。如果来自摄像机的视频成功启动(当收到第一帧时),则发生OnStartVideoStream事件。 当视频停止时,会发生OnEndVideoStream事件。

  PlayVideoFile开始播放FileName参数中指定的MJPEG文件。 如果文件中的视频成功启动(读取第一帧时),则会发生OnStartVideoFile事件。 当视频停止时,会发生OnEndVideoFile事件。 需使用FramePerSec属性。

  要停止视频播放,请调用Abort方法。

  您可以使用WaitForVideo,WaitForVideoStream,WaitForVideoFile执行等待操作直至播放结束(强烈建议通过事件而不是使用这些方法)。

# 5.3.11. ResetImageSetting 方法

function TRVCamera.ResetImageSetting: Boolean;
1

  将视频颜色参数重置为默认值。该方法为Foscam专用的方法。

# 5.3.12. SearchCamera 方法--

function SearchCamera(CameraTypes: TRVCameraTypes = []) : Boolean;
1

  该方法连接到指定的地址,识别相机型号(如果此地址有相机),读取其属性。

  如果VideoFormat = rvvfMJPEG,则该方法可搜索提供MJPEG视频流的摄像机;否则它会搜索提供H.264流的摄像机(需要FFmpeg解码)。

  如果您知道摄像机的型号,则可以在CameraTypes参数中指定其类型。这些方法仅搜索此参数中指定的摄像机类型(空集的工作方式类似于完整集,即组件搜索所有支持的摄像机模型)。

  等待模式:该方法仅在搜索完成时返回。返回值:找到相机。

  无等待模式:该方法初始化搜索线程并立即返回。返回值:False。搜索完成后,将发生OnSearchComplete事件。

  然后搜索成功完成,进行以下更改:

  • 已分配IPCameraTypes属性
  • 如果摄像机支持,则分配VideoResolution属性
  • 对于所有相机型号,除了可控制的Foscam,Axis,D-Link和Panasonic(或兼容)相机,CameraHost:CameraPort会被清除,MJPEG流的URL被分配给URL属性
  • 填充参数属性

  搜索后,调用PlayVideoStream接收来自此摄像机的视频。

# 5.3.13. SwitchLEDOn, SwitchLEDOff 属性

function  SwitchLEDOn : Boolean;
function  SwitchLEDOff : Boolean;
1
2

  如果相机支持的话,该属性用于开启/关闭摄像机的LED指示灯。

# 5.3.14. UpdateUsers 属性

procedure UpdateUsers(SkipIndex : Integer = -1);
1

  将用户的更改发送到摄像头(可选,用户[SkipIndex]除外)。如果LockCommands阻止向摄像机发送更改命令,则此方法很有用。

# 5.3.15. WaitForVideoStream, WaitForVideoFile, WaitForVideo, WaitForSearch 属性

procedure WaitForVideoStream;
procedure WaitForVideoFile;
procedure WaitForVideo;
procedure WaitForSearch;
1
2
3
4

  WaitForVideoStream等待,直到来自摄像机的视频(在PlayVideoStream中启动)停止播放。

  WaitForVideoFile等待,直到文件中的视频(在PlayVideoFile中启动)停止播放。

  WaitForVideo会一直等到视频(来自文件或来自摄像机)停止播放。

  WaitForSearch一直等到相机搜索(在SearchCamera中启动)停止。

  这些方法在无等待模式下可能很有用,但是请避免使用这些方法并改为使用事件:OnEndVideoStream,OnEndVideoFile,OnSearchComplete。 调用Abort后,这些方法可能很有用。


# 6. TRVCamView 组件

  TRVCamView显示来自指定视频源的视频:来自TRVCamera或来自TRVCamReceiver。

  • 用法   将TRVCamera或TRVCamReceiver组件分配给TRVCamView组件的VideoSource属性,开始播放视频。
      使用从多个源接收视频的TRVCamReceiver时,您可以指定要在GUIDFrom和IndexFrom属性中显示的视频。

# 6.1. 属性

属性 属性说明
AutoSize 规定是否使控件尺寸按照显示内容进行适配
CamMoveMode 规定如何控制摄像机的运动
Color 设定背景颜色
CurRenderMode, RenderMode 指定视频的呈现模式以及当前呈现模式
FocusLineColor 指定控件具有输入焦点时显示的矩形的颜色
Font 设定控件的显示字体
GUIDFrom, IndexFrom 如果VideoSource是TRVCamReceiver,则这些属性指定视频源的唯一标识符,以及其媒体通道的索引
HoverLineColor 指定当控件位于鼠标指针下方时显示的矩形的颜色
IconStyle 指定组件搜索IP摄像机时显示的动画
Language 指定用户界面的语言
RememberLastFrame 指示是否记住最后一个视频帧
SearchPanelColor, SearchPanelTextColor 这些属性指定摄像机搜索面板的颜色
ShowCameraSearch 指示控件在搜索摄像机时是否显示特殊搜索面板
ShowCaption, CaptionParts, Title, CaptionColor, CaptionFont 属性定义窗口标题的显示方式
ShowFrameRect 指示是否在控件周围绘制一个矩形
UseOptimalVideoResolution 指示控件是否尝试设置最适合其大小的视频分辨率
VideoSource, Camera, Receiver 指定视频源
ViewMode

# 6.1.1. AutoSize 属性

property AutoSize: Boolean;
1

  规定是否使控件尺寸按照显示内容进行适配。

   This.RVCamView1.AutoSize := False;
1

# 6.1.2. CamMoveMode 属性

type 
  TRVCamMoveMode = (vcmmNone, vcmmToCursor, vcmmDrag);
property CamMoveMode: TRVCamMoveMode;
1
2
3

  如果VideoSource是TRVCamera,则此属性有效。 如果相机支持,用户可以使用鼠标控制相机的运动(旋转)。

运动模式 说明
vcmmNone 组件控制摄像机的运动
vcmmToCursor 通过鼠标指针点击来使摄像机旋转
vcmmDrag 单击并拖动(按住鼠标按钮)将摄像机旋转到拖动方向
   This.RVCamView1.CamMoveMode := vcmmDrag;
1

# 6.1.3. Color 属性

property Color: TRVMColor;
1

  背景颜色设置。

   This.RVCamView1.Color := $00E7BE9F;
1

# 6.1.4. CurRenderMode, RenderMode 属性

type
  TRVMRenderMode = (rvmrmSoftware, rvmrmOpenGL, rvmrmDirectX, rvmrmAuto);
property RenderMode: TRVMRenderMode;
property CurRenderMode: TRVMRenderMode;
1
2
3
4

  RenderMode指定视频呈现方法。

  CurRenderMode返回当前使用的呈现方法。

值 说明
rvmrmSoftware 标准模式(GDI)
rvmrmOpenGL OpenGL
rvmrmDirectX DirectX(不稳定,不建议使用)
rvmrmAuto 自动选择:
如果DirectX可用,则选择DirectX,否则
如果OpenGL可用,则选择OpenGL,否则
使用标准呈现模式

# 6.1.5. FocusLineColor 属性

property FocusLineColor: TRVMColor;
1

  指定控件具有输入焦点时显示的矩形的颜色,如果ShowFrameRect = True,则绘制此矩形。

   This.RVCamView1.ShowFrameRect := True;
   This.RVCamView1.FocusLineColor := clRed;
1
2

# 6.1.6. Font 属性

property Font: TFont;
1

  属性指定使用的字体位置:

  • 搜索面板;
  • 查看器本身显示“No Video”文本。

# 6.1.7. GUIDFrom, IndexFrom 属性

property GUIDFrom: String;
property IndexFrom: Integer;
1
2

  如果VideoSource是TRVCamReceiver,则这些属性指定视频源的唯一标识符,以及其媒体通道的索引。

  当此查看器显示来自TRVCamera的视频时,将忽略这些属性。

  如果VideoSource是TRVCamReceiver,则查看器显示具有相同GUID值的视频流。

  在TRVCamSender组件中生成视频标识符并标识此发件人(TRVCamSender.GUIDFrom属性)。 然后,您需要将此标识符添加到TRVCamReceiver组件的Senders属性中。 然后,您需要将查看器连接到此接收器,并将其GUIDFrom分配给receiver.Senders[].GUIDFrom。

  如果TRVCamSender有多个媒体频道,请将所需频道的索引分配给IndexFrom; 否则,请保留IndexFrom = 0。

   This.RVCamView1.GUIDFrom := '';
   This.RVCamView1.IndexFrom := 0;
1
2

# 6.1.8. HoverLineColor 属性

property HoverLineColor: TRVMColor;
1

  指定当控件位于鼠标指针下方时显示的矩形的颜色,当ShowFrameRect=True时该属性有效。

   This.RVCamView1.HoverLineColor := $00B78E5F;
1

# 6.1.9. IconStyle 属性

property IconStyle: TRVMIconStyle;
1

  指定组件搜索IP摄像机时显示的动画。如果ShowCameraSearch = True,则在调用TRVCamera.SearchCamera时显示此面板。

  此属性不仅定义了动画,还定义了搜索面板的背景和文本颜色(如果它们未在SearchPanelColor和SearchPanelTextColor属性中明确定义)。

   This.RVCamView1.IconStyle := TRVMIconStyle;
1

# 6.1.10. Language 属性

property Language: TRVMLanguage;
1

  指定用户界面的语言。

   This.RVCamView1.Language := rvmlChineseSimplified;
1

# 6.1.11. RememberLastFrame 属性

property RememberLastFrame: Boolean;
1

  指示是否记住最后一个视频帧。如果为True,则控件在视频中断或停止时显示最后一帧, 否则显示空白屏幕。

   This.RVCamView1.RememberLastFrame := True;
1

# 6.1.12. SearchPanelColor, SearchPanelTextColor 属性

property SearchPanelColor: TRVMColor;
property SearchPanelTextColor: TRVMColor;
1
2

  这些属性指定摄像机搜索面板的颜色。

  如果ShowCameraSearch = True,则在调用TRVCamera.SearchCamera时显示此面板。

  默认情况下(此属性的值为clNone / Null),Viewer使用依赖于IconStyle属性的默认颜色。

  SearchPanelColor会覆盖搜索面板的背景颜色。

  SearchPanelTextColor会覆盖搜索面板的文本颜色。

   This.RVCamView1.SearchPanelColor := clNone;
   This.RVCamView1.SearchPanelTextColor := clNone;
1
2

# 6.1.13. ShowCameraSearch 属性

property ShowCameraSearch: Boolean;
1

  指示控件在搜索摄像机时是否显示特殊面板。

  该面板包含一些文本,动画和“中止”按钮。

  “中止”按钮使用Font属性作为文本,其颜色不可自定义。

  动画在IconStyle属性中定义。

  面板本身的颜色根据IconStyle属性自动选择,或者可以在SearchPanelColor属性中显式指定。

  文本使用Font属性,其颜色根据IconStyle属性自动选择,或者可以在SearchPanelTextColor中显式指定。 搜索相机面板

   This.RVCamView1.ShowCameraSearch := True;
1

# 6.1.14. ShowCaption, CaptionParts, Title, CaptionColor, CaptionFont,CaptionHeight 属性

type // defined in MRVType unit
  TRVCameraCaptionPart = (rvccpAddress, rvccpAlias, rvccpDate, rvccpTime);
  TRVCameraCaptionParts = set of TRVCameraCaptionPart;
property ShowCaption: Boolean;
property Title: String;
property CaptionParts: TRVCameraCaptionParts;
property CaptionColor: TRVMColor;
property CaptionHeight: Integer;
property CaptionFont: TFont;
1
2
3
4
5
6
7
8
9

  属性定义窗口标题的显示方式。

  如果ShowCaption = True,则显示标题。 它的背景是用CaptionColor绘制的。 激活Pascal XE2 +样式时,系统颜色将更改为相应的样式颜色。

  如果ShowFrameRect = True,CaptionColor也用于在整个窗口周围绘制一个框架。

  标题的文本使用CaptionFont绘制,包含标题和CaptionParts中指定的其他信息:

值 说明
rvccpAddress IP相机地址
rvccpAlias 相机别名
rvccpDate 当前日期
rvccpTime 当前时间

  仅当VideoSource为TRVCamera时,才会显示CaptionParts中指定的信息。 查看器界面说明

  CaptionHeight定义96DPI屏幕模式下的字幕高度,当屏幕DPI不同时,字幕高度相应地改变。

   This.RVCamView1.ShowCaption := True;
   This.RVCamView1.Title := '';
   This.RVCamView1.CaptionHeight := 20;
   This.RVCamView1.CaptionFont.Name := 'Tahoma';
   This.RVCamView1.CaptionColor := $00A77E4F;
1
2
3
4
5

# 6.1.15. ShowFrameRect 属性

property ShowFrameRect: Boolean;
1

  指示是否在控件周围绘制一个矩形

  此矩形具有以下颜色:

  • FocusLineColor用于聚焦窗口的颜色
  • HoverLineColor用于鼠标指针下方的窗口颜色
  • CaptionColor其他内容的颜色

  ShowFocusRect指示当控件具有输入焦点时是否在控件周围绘制矩形。 FocusLineColor是此矩形的颜色。

   This.RVCamView1.ShowFrameRect := True;
   This.RVCamView1.FocusLineColor := $00E377A5;
   This.RVCamView1.HoverLineColor := $00E377A5;
   This.RVCamView1.CaptionColor := $00E39804;
1
2
3
4

  #### 14.2.1.16. UseOptimalVideoResolution 属性

property UseOptimalVideoResolution;
1

  指示控件是否尝试设置最适合其大小的视频分辨率。

  如果VideoSource是TRVCamera,则此属性有效。 如果为True,则控件分配使用VideoSource.GetOptimalVideoResolution计算的VideoSource.VideoResolution,并在参数中指定其大小。

   This.RVCamView1.UseOptimalVideoResolution := False;
1

# 6.1.16. VideoSource, Camera, Receiver 属性

property VideoSource: TRVVideoSource;
property Camera: TRVCamera; // 只读属性
property Receiver: TRVCamReceiver; // 只读属性
1
2
3

  VideoSource指定视频源。您可以将TRVCamera或TRVCamReceiver组件分配给此属性。

  如果VideoSource是TRVCamera,Camera属性会返回VideoSource的值,并将其类型化为TRVCamera。 否则,Camera返回nil。

  如果VideoSource是TRVCamReceiver,则Receiver返回VideoSource的值,将其类型化为TRVCamReceiver。 否则,Receiver返回nil。

   This.RVCamView1.VideoSource := This.RVCamera1;
1

# 6.1.17. ViewMode 属性

type // defined in MRVType unit
  TRVCamViewMode = (vvmNormal, vvmCenter, vvmCut, vvmAspect, vvmStretch);
property ViewMode: TRVCamViewMode;
1
2
3

  指定视频帧在查看器中的定位和缩放方式。

查看模式 示例
vvmNormal
视频显示在窗口的左上角,没有拉伸
vvmNormal
vvmCenter
视频显示在窗口的中央,没有拉伸
vvmCenter
vvmCut
视频按比例拉伸,使最小边适合窗口,最大边被截断
vvmCut
vvmAspect(默认)
视频按比例拉伸以适合窗口,保持侧面比例
vvmAspect
vvmStretch
视频被拉伸以适合窗口
vvmStretch
   This.RVCamView1.ViewMode := vvmAspect;
1

# 6.2. 事件

事件 何时触发
OnPaint 在组件需要绘制视频帧时触发该事件
OnMouseEnter, OnMouseLeave 当用户将鼠标指针移动到组件内部/外部时触发事件
OnBeginMove, OnEndMove 当用户在此查看器中开始/结束相机移动时触发事件

# 7. TRVCamMultiView 组件

  TRVCamMultiView显示来自多个视频源的视频。 它也可以显示音频源的活动。

  • 用法   填写Viewer的集合。 此集合中的每个项目都定义控件内一个视频窗口的位置和属性。 此集合的项的属性类似于TRVCamView组件的属性。

# 7.1. 属性

属性 属性说明
AudioSource 指定可以显示活动的TRVMicrophone组件
CameraControl 指定用于控制摄像机移动的TRVCameraControl组件
CamMoveMode 规定如何控制摄像机的运动
CaptionColor, CaptionFont, CaptionHeight 属性定义查看器窗口的标题的显示方式
Color, ViewerColor 定义背景颜色
CurRenderMode, RenderMode 指定视频的呈现模式
Font 设置查看器的字体属性
HoverLineColor 指定当控件位于鼠标指针下方时显示的矩形的颜色
IconStyle 指定组件搜索IP摄像机时显示的动画
Language 指定用户界面的语言
RememberLastFrame 指示是否记住最后一个视频帧
SearchPanelColor, SearchPanelTextColor 这些属性指定摄像机搜索面板的颜色
ShowFocusRect, FocusLineColor ShowFocusRect指示在选择时是否在查看器周围绘制矩形,FocusLineColor是此矩形的颜色
ViewerIndex 规定选定的查看器索引号
Viewer 用于查看器窗口的一系列属性,可用于新建、删除查看器

# 7.1.1. AudioSource 属性

property AudioSource: TRVAudioSource;
1

  指定可以显示活动的TRVMicrophone组件。

  如果Viewers集合中的相应项目具有AudioViewer属性= True,则TRVCamMultiView组件内的查看器面板可以显示音频查看器。 如果此查看器面板链接到TRVCamera(而不是TRVCamReceiver),则其音频查看器会显示此AudioSource的活动。

   This.RVCamMultiView1.AudioSource := This.RVMicrophone1;
1

# 7.1.2. CameraControl 属性

property CameraControl: TRVCamControl;
1

  指定用于控制摄像机移动的TRVCameraControl组件(如果当前摄像机支持它)。

  此组件控制所选查看器中的摄像头,请参阅ViewerIndex。

  如果此属性不为空,则将其分配给链接到所选查看器的TRVCamera组件的CameraControl属性。

   This.RVCamMultiView1.CameraControl := This.RVCamControl1;
1

# 7.1.3. CamMoveMode 属性

type 
  TRVCamMoveMode = (vcmmNone, vcmmToCursor, vcmmDrag);
property CamMoveMode: TRVCamMoveMode;
1
2
3

  如果VideoSource是TRVCamera,则此属性有效。 如果相机支持,用户可以使用鼠标控制相机的运动(旋转)。

运动模式 说明
vcmmNone 组件控制摄像机的运动
vcmmToCursor 通过鼠标指针点击来使摄像机旋转
vcmmDrag 单击并拖动(按住鼠标按钮)将摄像机旋转到拖动方向
   This.RVCamMultiView1.CamMoveMode := vcmmDrag;
1

# 7.1.4. CaptionColor, CaptionFont, CaptionHeight 属性

property CaptionColor: TRVMColor;
property CaptionHeight: Integer;
property CaptionFont: TFont;
1
2
3

  属性定义查看器窗口的标题的显示方式

  CaptionColor是查看器窗口标题的默认背景颜色(可以被Viewers[].CaptionColor覆盖)。

  CaptionHeight定义在96DPI屏幕模式下字幕高度。 当屏幕DPI不同时,字幕高度相应地改变。

  可以为每个查看器定制其他标题属性:Title,CaptionParts,ShowCaption,CaptionColor。

   This.RVCamMultiView1.CaptionColor := $00A77E4F;
   This.RVCamMultiView1.CaptionFont.Name := 'Tahoma';
   This.RVCamMultiView1.CaptionHeight := 20;
1
2
3

# 7.1.5. Color, ViewerColor 属性

property Color: TRVMColor;
property ViewerColor: TRVMColor;
1
2

  该属性定义背景颜色。Color是此组件的背景颜色。 ViewerColor是查看器窗口的默认背景颜色(可以由Viewers[].Color覆盖)。

   This.RVCamMultiView1.Color := $00E7BE9F;
   This.RVCamMultiView1.ViewerColor := $00E7BE9F;
1
2

# 7.1.6. CurRenderMode, RenderMode 属性

type
  TRVMRenderMode = (rvmrmSoftware, rvmrmOpenGL, rvmrmDirectX, rvmrmAuto);
property RenderMode: TRVMRenderMode;
property CurRenderMode: TRVMRenderMode;
1
2
3
4

  RenderMode指定视频呈现方法。

  CurRenderMode返回当前使用的呈现方法。

值 说明
rvmrmSoftware 标准模式(GDI)
rvmrmOpenGL OpenGL
rvmrmDirectX DirectX(不稳定,不建议使用)
rvmrmAuto 自动选择:
如果DirectX可用,则选择DirectX,否则
如果OpenGL可用,则选择OpenGL,否则
使用标准呈现模式

# 7.1.7. Font 属性

property Font: TFont;
1

  属性指定使用的字体位置:

  • 搜索面板;
  • 查看器本身显示“No Video”文本。

# 7.1.8. HoverLineColor 属性

property HoverLineColor: TRVMColor;
1

  指定当控件位于鼠标指针下方时显示的矩形的颜色,当ShowFrameRect=True时该属性有效。

   This.RVCamMultiView1.HoverLineColor := $00B78E5F;
1

# 7.1.9. IconStyle 属性

property IconStyle: TRVMIconStyle;
1

  指定组件搜索IP摄像机时显示的动画。如果ShowCameraSearch = True,则在调用TRVCamera.SearchCamera时显示此面板。

  此属性不仅定义了动画,还定义了搜索面板的背景和文本颜色(如果它们未在SearchPanelColor和SearchPanelTextColor属性中明确定义)。

   This.RVCamMultiView1.IconStyle := TRVMIconStyle;
1

# 7.1.10. Language 属性

property Language: TRVMLanguage;
1

  指定用户界面的语言。

   This.RVCamMultiView1.Language := rvmlChineseSimplified;
1

# 7.1.11. RememberLastFrame 属性

property RememberLastFrame: Boolean;
1

  指示是否记住最后一个视频帧。如果为True,则控件在视频中断或停止时显示最后一帧, 否则显示空白屏幕。

   This.RVCamMultiView1.RememberLastFrame := True;
1

# 7.1.12. SearchPanelColor, SearchPanelTextColor 属性

property SearchPanelColor: TRVMColor;
property SearchPanelTextColor: TRVMColor;
1
2

  这些属性指定摄像机搜索面板的颜色。

  如果ShowCameraSearch = True,则在调用TRVCamera.SearchCamera时显示此面板。

  默认情况下(此属性的值为clNone / Null),Viewer使用依赖于IconStyle属性的默认颜色。

  SearchPanelColor会覆盖搜索面板的背景颜色。

  SearchPanelTextColor会覆盖搜索面板的文本颜色。

   This.RVCamMultiView1.SearchPanelColor := clNone;
   This.RVCamMultiView1.SearchPanelTextColor := clNone;
1
2

# 7.1.13. ShowFocusRect*, FocusLineColor 属性

property ShowFocusRect: Boolean;
property FocusLineColor: TRVMColor;
1
2

  ShowFocusRect指示在选择时是否在查看器周围绘制矩形。 FocusLineColor是此矩形的颜色。

   This.RVCamMultiView1.ShowFocusRect := True;
   This.RVCamMultiView1.FocusLineColor := clRed;
1
2

# 7.1.14. ViewerIndex 属性

property ViewerIndex: Integer;
1

  指定所选的查看器。

  如果ShowFocusRect = True,则所选查看器具有FocusLineColor颜色的框架。

  来自所选查看器的视频不仅可以显示在其窗口中,还可以显示在具有MainViewer = True属性的所有查看器中。

   This.RVCamMultiView1.ViewerIndex := 0;
1

# 7.1.15. Viewer 属性

type
  TRVCamViewCollection = class(TCollection);
  TRVCamViewItem = class(TCollectionItem)
property Viewers: TRVCamViewCollection;

type
  TRVAlignAudioViewer = (rvaavTop, rvaavBottom, rvaavLeft, rvaavRight, rvaavClient);
1
2
3
4
5
6
7

  这是TRVCamViewItem项的集合。 每个项目定义一个查看器窗口的属性。

视频查看器的属性

  此集合中的项具有与TRVCamView组件相同的属性:

  • Left,Top,Width,Height
  • VideoSource
  • GUIDFrom,IndexFrom
  • Title,CaptionParts,ShowCaption,CaptionColor
  • Color
  • ShowCameraSearch
  • UseOptimalVideoResolution
  • ViewMode

  此外,如果UseFramePerSec = True(默认为False),则将FramePerSec分配给相应的TRVCamView.VideoSource.FramePerSec。

  默认情况下,Color和CaptionColor属性等于clNone。这意味着会使用TRVCamMultiView的属性(ViewerColor和CaptionColor)

  可以选择一些查看器作为主要查看器:分配MainViewer = True,主要查看器会显示所选查看器中的视频,请参阅ViewerIndex。通常,仅分配一个主要查看器并使其窗口比其他查看器更大是有意义的。选择查看器时,将使用主查看器的FramePerSec和UseFramePerSec而不是所选查看器的属性(如果有多个主要查看器,则使用其FramePerSec的最大值)。因此,您可以为所选窗口指定比正常窗口更大的FPS值。

音频查看器属性

  除了视频查看器之外,查看器窗口还可以具有可选的音频查看器(集成的TRVMicrophoneView组件)。 它由以下属性控制:

  • AudioViewer:Boolean
    显示/隐藏音频查看器(默认值= False)
  • AlignAudioViewer:TRVAlignAudioViewer
    定义音频查看器的位置(默认值= rvaavRight)
值 说明
rvaavTop 音频查看器显示在视频查看器上层
rvaavBottom 音频查看器显示在视频查看器下层
rvaavLeft 音频查看器显示在视频查看器左侧
rvaavRight 音频查看器显示在视频查看器右侧
rvaavClient 音频查看器占据整个区域,隐藏视频查看器

  如果VideoSource属性指向TRVCamReceiver,则音频查看器将显示此接收器的活动:VideoSource和GUIDFrom分别分配给集成TRVMicrophoneView组件的ReceiverSource和GUIDFrom属性。

  如果VideoSource属性指向TRVCamera,则音频查看器将显示链接到父TRVCamMultiView的AudioSource属性的组件的活动。

# 7.2. 事件

事件 何时触发
OnSelectViewer 当其中一个查看器窗口被选中(聚焦)时触发事件
OnViewerPaint 当组件需要绘制视频帧时触发事件

# 8. TRVCamControl 组件

  TRVCamControl控制相机移动(如果相机支持旋转,并且用户有足够的权限操作相机)。

  该组件有5个活动区域,如按钮:向左移动,向上移动,向右移动,向下移动,移动到中心。您可以直接在TRVCamView / TRVCamMultiView组件中控制相机移动,或实现您自己的用户界面。 TRVCamControl 组件

  • 用法
    1. 创建TRVCamControl组件并将其分配给TRVCamera组件的CameraControl属性。
    2. 创建TRVCamControl组件并将其分配给TRVCamMultiView组件的CameraControl属性。 在此模式下,组件控制摄像机从所选视图的移动。

# 8.1. 属性

属性 属性说明
Color, ParentColor, BorderColor, ArrowLineColor,
ArrowColor, ArrowColorClicked, ArrowColorHot
配置控制器的各区域颜色
ShowFocus 指定组件在聚焦时是否应绘制虚线圆

# 8.1.1. Clor, ParentColor, BorderColor, ArrowLineColor, ArrowColor, ArrowColorClicked, ArrowColorHot 属性

property Color: TRVMColor;
property BorderColor: TRVMColor;
property ArrowLineColor: TRVMColor;
property ArrowColor: TRVMColor;
property ArrowColorClicked: TRVMColor;
property ArrowColorHot: TRVMColor;
property ParentColor: Boolean;
1
2
3
4
5
6
7
属性颜色对照图

  Color定义背景颜色(控件周围)。 如果ParentColor = True,则不绘制背景,因此控件是透明的。

  BorderColor是边界圆的颜色。

  ArrowLineColor是箭头边框的颜色。

  ArrowColor,ArrowColorClicked,ArrowColorHot是箭头的颜色:正常,单击,分别位于鼠标指针下方。

# 8.1.2. ShowFocus 属性

property ShowFocus: Boolean;
1

  指定组件在聚焦时是否应绘制虚线圆。

   This.RVCamControl1.ShowFocus := True;
1

# 9. TRVCamSender 组件

  TRVCamSenser将视频和音频发送到网络。

  • 描述   如果Active = True,则组件从VideoSource获取视频,从AudioSource获取音频,并将它们发送到网络。 TRVCamReceiver和TRVMediaServer可以接收这些视频和音频流。 除音频和视频外,发件人还可以发送命令和文件。视频格式在Encoding属性中指定。

  • 媒体通道   可以在多个媒体通道中组织数据。
      当您通过TRVMediaServer发送信息时,媒体通道非常有用; 例如,它们允许客户端从多个摄像头发送视频。 对于直接连接(对TRVCamReceiver),您可以使用多个TRVCamSender组件。
      默认(第0个)通道的音频和视频在属性VideoSource和AudioSource中定义。
      第一,第二通道等的音频和视频在ExtraMediaSource集合属性中的项目的VideoSource和AudioSource属性中定义。
      命令,文件和用户数据也可以链接到通道。 相应的方法具有MediaIndex参数,您可以在其中指定媒体通道的索引。

  • 连接到TRVCamReceiver   建议对视频和音频使用UDP连接,尤其是视频。 对于其他类型的数据,强烈建议不要这样做。如果使用代理服务器,则需要HTTP连接。
      将TRVCamSender.Active与TRVCamReceiver.Active设置为True。

    1. 发送者到接收者使用UDP连接 发送者通过UDP协议连接到接收者   TRVCamSender.Protocol设置为rvpUDP,并且指定TRVCamSender的ReceiverHost:ReceiverPort。
        TRVCamReceiver.Protocol设置为rvpUDP,并且其Port属性需要与TRVCamSender的ReceiverPort一致。
    2. 发送者到接收者使用TCP连接 发送者通过TCP协议连接到接收者   TRVCamSender.Protocol设置为rvpTCP(或者rvpHTTP),并且指定TRVCamSender的ReceiverHost:ReceiverPort(如果使用了rvpHTTP,还需要填写TRVCamSender的 ProxyHost:ProxyPort),将TRVCamSender的TCPConnectionType指定为rvtcpSenderToReceiver。
        TRVCamReceiver.Protocol也同样设置为rvpTCP(或者rvpHTTP),Port需与TRVCamSender.ReceiverPort一致。将TRVCamReceiver的TCPConnectionType指定为rvtcpSenderToReceiver。
    3. 接收者到发送者使用TCP(或者HTTP)连接 接收者通过TCP协议连接到发送者   TRVCamSender.Protocol设置为rvpTCP(或者rvpHTTP),指定SenderPort,并且将TRVCamSender的TCPConnectionType指定为rvtcpReceiverToSender。   TRVCamReceiver.Protocol设置为rvpTCP(或者rvpHTTP),Senders必须包含SenderHost:SenderPort指向此发件者的项(该项的SenderPort必须等于此发件者的SenderPort),将TRVCamReceiver的TCPConnectionType指定为rvtcpReceiverToSender。
  • 连接到TRVCamReceiver-2.使用唯一标识符   唯一标识符可用于标识发送者和接收者。

    • 接收者识别   接收器可以(可选地)检查数据是否真正地发送给它。 它有助于在网络攻击期间忽略未经授权的发件人。
        要启用此功能,请为TRVCamReceiver.GUIDMy分配有效值。 如果已分配,则接收方仅接受来自GUIDTo属性中包含相同值的发送方的数据。
    • 发送者识别   在最简单的情况下,当单个发送者连接到单个接收者时,不需要发送者标识。
        但是,接收者可以接收来自多个发送者的视频; GUIDFrom属性允许区分发件人。 接收方可以接受来自指定发件人的数据(在TRVCamReceiver.Senders中列出),也可以接受来自所有发件人的数据(在这种情况下,TRVCamReceiver.Senders必须为空)。

# 9.1. 属性

属性 属性说明
Active 启用/禁用视频/音频的发送
AudioSource 定义默认(第0)媒体通道的音频源
BufferSize 定义用于发送数据的缓冲区大小
ChangedAreaProcessingMode 指定在检测更改区域之前如何预处理视频帧
CompressionOptions 定义视频,音频,命令,文件和用户数据的压缩选项
CompressionQuality 指定图像的压缩质量
ConnectionProperties 定义连接的属性
Encoding 指定视频的编码行为
ExtraMediaSources 定义将由TRVCamSender组件发送的其他音频和视频源
FilterBlur 允许在发送之前将模糊滤镜应用于视频帧
FrameDifferenceInterval 启用发送帧间差异的模式
FullFrameInterval 定义发送完整视频帧的间隔
GUIDFrom, UseGUID 属性允许为此发送者指定唯一标识符
GUIDTo, GUIDGroup 属性指定接收者和一组接收者的标识符
MinChangeAreaSize, PixelColorThreshold -R -G -B 如果Encoding = rvet*Change,则属性指定前一帧和当前视频帧的比较方式
Protocol 定义用于发送数据的协议
ProxyHost, ProxyPort 这些属性定义代理服务器的地址和端口(如果存在代理服务器)
ReceiverHost, ReceiverPort 属性定义接收器的地址和端口(TRVCamReceiver或TRVMediaServer)
SenderPort 当接收方启动与发送方的连接时,在模式中定义发送方的端口
SendMediaTypes 定义组件发送的媒体类型(视频,音频等)
SendOptions 指定用于发送不同类型数据的选项
SessionKey 返回当前会话的标识符
ShowCmd 指定是否调用OnSendCmd和OnSentCmd事件
SourceAudioIndex 定义分配给VideoSource的TRVCamReceiver的媒体通道索引,该索引将用于默认(第0个)媒体通道中的音频
SourceVideoIndex 定义分配给VideoSource的TRVCamReceiver的媒体通道索引,该索引将用于默认(第0)媒体通道中的视频
TCPConnectionType 指定哪一方启动TCP / HTTP连接
TestMode 允许发送测试数据
VideoResolution 这些属性允许降低视频分辨率
VideoSendType 指定视频的发送方式
VideoSource, SourceGUID 定义视频(音频)源

# 9.1.1. Active 属性

property Active: Boolean;
1

  启用/禁用视频/音频的发送。

  This.RVCamSender1.Active := True;
1

# 9.1.2. AudioSource 属性

property AudioSource: TRVAudioSource;
1

  定义默认(第0)媒体通道的音频源。您可以将TRVMicrophone组件分配给此属性。 如果TRVCamReceiver用作视频源,它也可以用作音频源。

  • 媒体通道   TRVCamSender可以在多个频道中发送视频和音频。 默认(第0)通道由AudioSource和VideoSource属性定义。 其他通道在ExtraMediaSources属性中定义。

  • 完整指定音源的必要性   在最简单的情况下,只需分配给此属性的TRVMicrophone组件读取声音。 无需其他属性设置。
      但是当从TRVCamReceiver读取声音时,您需要指定其他属性,因为此接收者可以从多个发送者接收数据,并且每个发送者可以发送多个媒体通道。 在这种情况下,除了将TRVCamReceiver分配给VideoSource之外,还需要指定:

    • SourceGUID:指定发送者的标识符。
    • SourceAudioIndex:指定SourceGUID中指定的发送方的媒体通道。

  请参阅有关SourceAudioIndex属性中的方案。

  This.RVCamSender1.AudioSource := This.RVMicrophone1;
1

# 9.1.3. BufferSize 属性

property BufferSize: Cardinal;
1

  定义用于发送数据的缓冲区大小。

  当流量较高时,较大的缓冲区大小可提供更快的发送速度。 但是,当流量较低时,较大的缓冲区可能会降低发送速度,因为在缓冲区完全填满时会发送数据。

  对于UDP连接,请勿将BufferSize设置为大于16384。

  This.RVCamSender1.BufferSize := 8192;
1

# 9.1.4. ChangedAreaProcessingMode 属性

property ChangedAreaProcessingMode: TRVChangedAreaProcessingMode;
1

  指定在检测更改区域之前如何预处理视频帧。

  如果Encoding = rvet*Change,则组件会比较前一个和当前视频帧以查找更改的区域。 有关此过程的其他信息,请参阅有关MinChangeAreaSize和PixelColorThreshold属性。

  该属性有以下选项:

值 说明
rvcapmOriginalSize 在原始视频帧中搜索更改的区域
rvcapmAuto 视频帧在处理之前缩小,帧的最大边减半,直到不大于320像素,最小的一面相应减少

  在大帧中搜索变化的区域可能是耗时的过程。 使用缩小的图像可以快速处理。

  This.RVCamSender1.ChangedAreaProcessingMode := rvcapmAuto;
1

# 9.1.5. CompressionOptions 属性

property CompressionOptions: TRVCompressionOptions;
1

  定义视频,音频,命令,文件和用户数据的压缩选项。对于不同类型的数据,您可以选择以下选项:

  • rvcNone:不压缩。
  • rvcParts:部分压缩。
  • rvcFull:完全(整体)压缩。
  This.RVCamSender1.CompressionOptions.Audio := rvtcNone;
1

# 9.1.6. CompressionQuality 属性

property CompressionQuality: Integer;
1

  指定图像的压缩质量。可取的值的范围在0~100之间。

  • JPEG和HWL   使用CompressionQuality设置Jpeg和HWL图像的压缩质量。 属性值越高(最多为100),图像质量越好,但尺寸越大。 属性值越低(至少为1),得到的大小越小,但代价是图像质量降低。

  • PNG   对于Png图像,此选项不会影响图像质量,但会影响压缩质量。 属性值越高,图片越小,但编码它需要更多的CPU资源。

值 较小数值的CompressionQuality 较大数值的CompressionQuality
Jpeg,HWL 数据量小,图像质量低,CPU使用率低 数据量大,图像质量高,CPU使用率高
Png 数据量大,CPU使用率低 数据量小,CPU使用率高
  This.RVCamSender1.CompressionQuality := 90;
1

# 9.1.7. ConnectionProperties 属性

property ConnectionProperties: TRVConnectionProperties;
1

  定义连接的属性。

  • VideoTimeout:Integer(默认值= DefaultWaitForVideo)
  • AudioTimeout:Integer(默认值= DefaultWaitForAudio)
  • CmdTimeout:Integer(默认值= DefaultWaitForCmd)
  • DataTimeout:Integer(默认值= DefaultWaitForData)
  • FileTimeout:Integer(默认值= DefaultWaitForFile)

  Timeout属性为非阻塞套接字定义指定类型数据的最大等待时间(以毫秒为单位)。 对于命令的等待时间是最大的,因为它们是最重要的(对于稳定工作可能甚至是至关重要的)。

  • UseBlockingSocketsForVideo:Boolean(默认值= False)
  • UseBlockingSocketsForAudio:Boolean(默认值= False)
  • UseBlockingSocketsForCmd:Boolean(默认值= True)
  • UseBlockingSocketsForData:Boolean(默认值= False)
  • UseBlockingSocketsForFile:Boolean(默认值= True)

  如果UseBlockingSockets * = True,组件发出请求并等待其他方响应(或断开连接),超时时不会断开连接。

  优点:将收到所有发送的数据。

  缺点:稳定性; 如果一个应用程序挂起,其他应用程序也会挂起。

  如果UseBlockingSockets * = False,组件发出请求并等待其他方响应,若出现超时则会断开连接。

  优点:稳定; 如果一个应用程序挂起,或者它太忙而无法处理请求,则其他应用程序会在超时后中断连接,因此它可以继续工作。

  缺点:如果其他应用程序繁忙,数据可能会丢失,连接将被破坏。

# 9.1.8. Encoding 属性

property Encoding: TRVEncodingType;
1

  指定视频的编码行为。在rvet * Change模式中,组件仅发送视频帧的更改区域。有以下选项:

值 说明
rvetJPEG 视频帧作为Jpeg图像发送
rvetJPEGChange 视频帧被分成片段,更改的片段作为Jpeg图像发送
rvetHWL (BETA) 使用Haar Wavelet Transfrom压缩视频帧
rvetHWLChange (BETA!) 视频帧被分成片段,更改的片段使用Haar Wavelet Transfrom压缩
rvetBMP 视频帧作为位图图像发送
rvetBMPChange 视频帧被分成片段,更改的片段作为位图图像发送
rvetPNG 视频帧作为Png图像发送
rvetPNGChange 视频帧被分成片段,更改的片段作为位图PNG图像发送
rvetMixFormat 视频帧作为图像发送,该组件选择为该帧提供最小尺寸的图像格式,模式需要更多的计算资源
rvetMixFormatChange 视频帧被分成片段,更改的片段作为图像发送,该组件选择为该帧提供最小尺寸的图像格式,此模式需要过多的计算资源

  PNG编码对于从具有DeviceType = rvdtDesktop的TRVCamera发送无损图像可能是有用的。

  This.RVCamSender1.Encoding := rvetJPEG;
1

# 9.1.9. ExtraMediaSources 属性

property ExtraMediaSources: TRVMediaSourceCollection;
1

  定义将由TRVCamSender组件发送的其他音频和视频源。

  TRVCamSender组件可以发送在多个媒体信道中组织的数据。

  默认(第0个)通道的音频和视频在其属性VideoSource,AudioSource(和SourceGUID,SourceVideoIndex,SourceAudioIndex)中定义。

  第1,第2频道等的音频和视频在ExtraMediaSource集合属性中的项目属性中定义:

  • ExtraMediaSource[0]定义第一个频道
  • ExtraMediaSource[1]定义第二个频道 ……

# 9.1.10. FilterBlur 属性

property FilterBlur: Boolean;
1

  允许在发送之前将模糊滤镜应用于视频帧。

  This.RVCamSender1.FilterBlur := False;
1

# 9.1.11. FrameDifferenceInterval 属性

property FrameDifferenceInterval: Word 
1

  启用发送帧间差异的模式 。此模式仅在编码为rvet * Change时有效。

  为此属性分配正值将打开仅发送帧之间差异的模式。

  该值指定链中的多个视频帧。 例如,如果FrameDifferenceInterval = 5,则链由5个帧组成:第一帧按原样发送,随后的4帧作为新帧和旧帧之间的差异发送。

  此设置可减少流量,但:

  • 它需要在发送方进行更多计算;

  • 如果至少有一帧丢失或损坏(可能在UDP模式下),绘制后续帧会导致出现伪影(另请参阅TRVCamReceiver.IgnoreCorruptedFrames)

  帧计数器不仅在到达FrameDifferenceInterval时重置,而且在到达FullFrameInterval时也会重置,因此使用FrameDifferenceInterval> FullFrameInterval是没有意义的。

  This.RVCamSender1.FrameDifferenceInterval := 0;
1

# 9.1.12. FullFrameInterval 属性

property FullFrameInterval: Integer;
1

  定义发送完整视频帧的间隔。

  如果Encoding = rvet*发生更改,则仅发送部分视频帧。 如果由于某些原因丢失了包含完整图像的初始帧,则末端侧将显示部分图像。 要解决此问题,发送方会在每个FullFrameInterval时间发送一个完整的帧。

  This.RVCamSender1.FullFrameInterval := 25;
1

# 9.1.13. GUIDFrom, UseGUID 属性

property UseGUID: Boolean
property GUIDFrom: String;
1
2

  属性允许为此发送者指定唯一标识符。

  如果UseGUID = True,则会向GUIDFrom发送数据,允许接收者区分来自不同发件人的视频。

  如果要与TRVMediaServer组件通信,则UseGUID必须为True(否则服务器会拒绝此发件人的数据)。

  如果UseGUID = False,则只能将数据发送到TRVCamReceiver组件,以接受来自任何GUID的数据。

  如果UseGUID = True,则GUIDFrom不能为全零(即“{00000000-0000-0000-0000-000000000000}”)。

  //UseGUID为True的情况下,GUIDFrom自动生成
  This.RVCamSender1.UseGUID := True;
1
2

# 9.1.14. GUIDTo, GUIDGroup 属性

property GUIDTo: String;
property GUIDGroup: String;
1
2

  属性指定接收者和一组接收者的标识符。

  如果UseGUID = False,则忽略GUIDTo和GUIDGroup。

  • 连接到TRVCamReceiver   如果接收者的GUIDMy为空,则它接受来自具有任何GUIDTo值(可以为空值)的发送者的数据。如果分配了接收者的GUIDMy,则它仅接受具有相同GUIDTo值的发送者的数据。

  • 连接到TRVMediaServer   如果GUIDTo不为空,则它标识要将数据发送到的客户端:服务器仅将此发送方的数据发送到指定的客户端;如果GUIDGroup不为空,则服务器将数据从此发件人发送到属于GUIDGroup标识的组的客户端;否则,发送方将数据发送到默认接收方。 如果此列表为空,则数据无处可去。

# 9.1.15. MinChangeAreaSize, PixelColorThreshold -R -G -B 属性

  如果Encoding = rvet*Change,则属性指定前一帧和当前视频帧的比较方式。

property MinChangeAreaSize: Integer;
property PixelColorThreshold: Integer;
property PixelColorThresholdR: Integer;
property PixelColorThresholdG: Integer;
property PixelColorThresholdB: Integer;
1
2
3
4
5

  如果Encoding = rvet*Change,则组件会比较前一个和当前视频帧以查找更改的区域。

  设第一像素为(R1G1B1),第二像素为(R2G2B2)。 如果PixelColorThreshold≥0,则在(|R1−R2|+|G1−G2|+|B1−B2|)3>PixelColorThreshold时将它们视为不同。 否则,如果|R1−R2|>PixelColorThresholdR或|G1−G2|>PixelColorThresholdG或|B1−B2|>PixelColorThresholdB,它们将被视为不同。

  该组件以最佳方式计算覆盖已更改像素的矩形。 包含少于MinChangeAreaSize更改像素的矩形将被忽略。

  然后发送者只发送覆盖更改区域的矩形。 这些属性的最佳设置可减少网络流量并允许滤除噪声。

  • 示例   例如,发件人从相机接收图像,然后计算已更改(高于阈值)像素。 在下图中,未更改的像素用黑色绘制,更改的像素以灰色显示。 如果MinChangeAreaSize = 6,则忽略包含少于6个像素的所有区域。包含6个或更多像素的两个区域用红色矩形框起。 包含6个或更多像素的两个区域用红色矩形框起 发送者只发送这两个区域,接收者放置它们
  This.RVCamSender1.MinChangeAreaSize := 10;
  This.RVCamSender1.PixelColorThreshold := 8;
  This.RVCamSender1.PixelColorThresholdR := 8;
  This.RVCamSender1.PixelColorThresholdG := 8;
  This.RVCamSender1.PixelColorThresholdB := 8;
1
2
3
4
5

# 9.1.16. Protocol 属性

property Protocol: TRVProtocol;
1

  定义用于发送数据的协议。有三种选项可选:rvpUDP、rvpTCP、rvpHTTP。

  UDP使用简单的传输模型,协议机制最少。 UDP速度快但不可靠:无法保证交付、无顺序检查、无重复检验。 建议用于发送视频和音频,尤其是视频。 强烈建议不要使用UDP发送其他类型的数据(二进制数据,文件,命令)。

  TCP和HTTP提供可靠的有序交付。 使用代理服务器进行连接时,或者服务器具有符号名称(URL)时,必须使用HTTP。 否则,您可以使用TCP。

  • TRVCamSender与TRVCamReceiver连接的建议   如果您不仅需要发送视频和音频,还需要发送其他类型的数据(命令,文件等),请创建2对Sender + Receiver。 对于第一个Sender,分配Protocol = rvpUDP,将其连接到第一个Receiver(具有相同的Protocol属性值)并用于传输视频和音频数据。 对于第二个Sender,分配Protocol = rvpTCP(或rvpHTTP),将其连接到第二个Receiver(具有相同的Protocol属性值)并用于传输命令,文件等。

  • TRVCamSender与TRVMediaServer连接的建议   如果您不仅需要发送视频和音频,还需要发送其他类型的数据(命令,文件等),则客户端可能包含3个具有相同GUID的组件:两个Sender和一个Receiver。 第一个Sender可以使用UDP发送视频和音频。 第二个Sender可以使用HTTP或TCP发送命令和文件。 连接Server-Receiver必须始终为HTTP或TCP。

  This.RVCamSender1.Protocol := rvpTCP;
1

# 9.1.17. ProxyHost, ProxyPort 属性

property ProxyHost: String;
property ProxyPort: Word;
1
2

  这些属性定义代理服务器的地址和端口(如果存在代理服务器),仅当Protocol = rvpHTTP时才使用这些属性。

  This.RVCamSender1.ProxyHost := '192.168.1.101';
  This.RVCamSender1.ProxyPort := 9908;
1
2

# 9.1.18. ReceiverHost, ReceiverPort 属性

property ReceiverHost: String;
property ReceiverPort: Word;
1
2

  属性定义接收器的地址和端口(TRVCamReceiver或TRVMediaServer)。

  连接到TRVCamReceiver时,ReceiverPort的值必须等于其Port属性。

  连接到TRVMediaServer时,ReceiverPort的值必须等于其HTTPPort或UDPPort,具体取决于协议。

  如果Protocol = rvpUDP,或者TCPConnectionType = rvtcpSenderToReceiver时也需要使用该属性。

  This.RVCamSender1.ReceiverHost := '192.168.1.102';
  This.RVCamSender1.ReceiverPort := 9909;
1
2

# 9.1.19. SenderPort 属性

property SenderPort: Word;
1

  当接收方启动与发送方的连接时,在模式中定义发送方的端口。

  如果Protocol = rvpTCP(或rvpHTTP)和TCPConnectionType = rvtcpReceiverToSender,则使用此属性。

  This.RVCamSender1.SenderPort := 9910;
1

# 9.1.20. SendMediaTypes 属性

property SendMediaTypes: TRVMediaTypes;
1

  定义组件发送的媒体类型(视频,音频等)。可发送的媒体类型包括视频(rvmtVideo)、音频(rvmtAudio)、文件(rvmtFileData)、任意二进制数据(rvmtUserData)、命令(rvmtCmdData)。

# 9.1.21. SendOptions 属性

property SendOptions: TRVSendOptions;
1

  指定用于发送不同类型数据的选项。包括视频(Video)、音频(Audio)、文件(FileDta)、任意二进制数据(UserData)、命令(Cmd)。这些类型的数据有以下选项可选:

值 说明
rvmvstOnlyCurrentData 数据可用时会创建新连接,并在数据发送后关闭
rvmvstStream 连续发送,保持连接

# 9.1.22. SessionKey 属性(只读)

property SessionKey: TRVSessionKey;
1

  返回当前会话的标识符。

  每当Active变为True时,此属性的值将更改(递增1)。 当Active = False时,此属性返回0。

  此属性的值作为参数传递给TRVCamSender的事件。 如果在事件内执行耗时的操作,则比较此属性和SessionKey参数的值是有意义的,以确保未关闭或重新打开连接。

  此属性的值不会传输到已连接的TRVCamReceiver或TRVMediaServer,因此它是本地属性。 它不必等于连接的TRVCamReceiver的SessionKey(这些属性彼此独立)。

# 9.1.23. ShowCmd 属性

property ShowCmd: Boolean;
1

  指定是否调用OnSendCmd和OnSentCmd事件。

  This.RVCamSender1.ShowCmd := True;
1

# 9.1.24. SourceAudioIndex 属性

property SourceAudioIndex: Integer;
1

  定义分配给VideoSource的TRVCamReceiver的媒体通道索引,该索引将用于默认(第0个)媒体通道中的音频。

  在最简单的情况下,从分配给AudioSource属性的TRVMicrophone组件读取声音。 不需要其他属性设置(SourceGUID必须为空,SourceAudioIndex必须为0)。

  但更复杂的情况是可能的:此发送器用于重新转换从网络接收的声音。 在这种情况下,声音取自分配给VideoSource属性的TRVCamReceiver组件。

  该接收器可以从多个发送器接收数据,并且每个发送器可以发送多个媒体信道。 在这种情况下,您需要指定:

  • SourceGUID:指定向该接收器发送音频的发送者。

  • SourceAudioIndex:指定SourceGUID中指定的发送方的媒体通道。

  • 示例   现在有一个TRVCamReceiver,它通过网络(直接连接或通过TRVMediaServer)从两个发送者接收数据:TRVCamSender1和TRVCamSender2。每个源发送者都有两个媒体频道(第0和第1),我们想重新翻译TRVCamSender1第一频道的音频,我们的TRVCamSender组件及其属性为橙色。在上述情况下,我们要将SourceGUID属性指定为TRVCamSender的GUIDFrom值,SourceAudioIndex = 1,TRVCamReceiver组件分配给VideoSource属性。

  • 多轨道媒体   AudioSource / VideoSource,SourceGUID,SourceAudioIndex属性定义TRVCamSender组件的默认(第0)媒体通道的声源。
      类似地,VideoSource,SourceGUID,SourceVideoIndex属性定义默认媒体通道的视频源。
      可以在ExtraMediaSources集合属性的项目的属性中定义更多媒体渠道(从1开始索引)。

  This.RVCamSender1.SourceAudioIndex := 0;
1

# 9.1.25. SourceVideoIndex 属性

property SourceVideoIndex: Integer;
1

  定义分配给VideoSource的TRVCamReceiver的媒体通道索引,该索引将用于默认(第0)媒体通道中的视频。

  在最简单的情况下,从分配给VideoSource属性的TRVCamera组件读取视频。 不需要其他属性设置(SourceGUID必须为空,SourceVideoIndex必须为0)。

  但更复杂的情况是可能的:此发件人用于重新翻译从网络接收的视频。 在这种情况下,声音取自分配给VideoSource属性的TRVCamReceiver组件。

  该接收器可以从多个发送器接收数据,并且每个发送器可以发送多个媒体信道。 在这种情况下,您需要指定:

  • SourceGUID指定向该接收者发送视频的发送者。

  • SourceVideoIndex指定SourceGUID中指定的发送方的媒体通道。

  • 示例   现在有一个TRVCamReceiver,它通过网络(直接连接或通过TRVMediaServer)从两个发送者接收数据:TRVCamSender1和TRVCamSender2,每个源发送者都有两个媒体频道(第0和第1),我们想重新翻译TRVCamSender第一频道的视频,我们的TRVCamSender组件及其属性为橙色。在上述情况下,我们将SourceGUID属性指定为等于TRVCamSender1的GUIDFrom值,并且SourceVideoIndex = 1,TRVCamReceiver组件分配给VideoSource属性。

  • 多轨道媒体   VideoSource,SourceGUID,SourceVideoIndex属性为此TRVCamSender组件的默认(第0个)媒体通道定义视频源。类似地,AudioSource / VideoSource,SourceGUID,SourceAudioIndex属性定义默认媒体通道的音频源。可以在ExtraMediaSources集合属性的项目的属性中定义更多媒体渠道(从1开始索引)。

  This.RVCamSender1.SourceVideoIndex := 0;
1

# 9.1.26. TCPConnectionType 属性

property TCPConnectionType: TRVTCPConnectionType;
1

  指定哪一方启动TCP / HTTP连接。

  如果Protocol = rvpTCP或rvpHTTP,则使用此属性。

  与TRVCamReceiver连接时,此值必须等于接收方的TCPConnectionType。

  该属性有以下选项可选:

值 说明
rvtcpSenderToReceiver 发送方启动与接收方的连接
rvtcpReceiverToSender 接收方启动与发送方的连接
  This.RVCamSender1.TCPConnectionType := rvtcpSenderToReceiver;
1

# 9.1.27. TestMode 属性

property TestMode: TRVBoundsTestMode;
1

  允许发送测试数据。

  如果Encoding = rvet*Change,则可以使用rvstmChangedFragments。 在此模式下,组件不会发送更改的片段,而是发送特殊的测试图像,其中显示更改的像素,更改的区域(匹配MinChangeAreaSize属性)用矩形框起。 此模式可用于查找给定视频源的MinChangeAreaSize和PixelColorThreshold属性的最佳值。

  该属性有以下选项:

值 说明
rvstmNone 测试模式已关闭
rvstmChangedFragments 创建显示更改区域的图像
  This.RVCamSender1.TestMode := rvstmChangedFragments;
1

# 9.1.28. VideoResolution 属性

property VideoResolution: TRVVideoResolution;
1

  这些属性允许降低视频分辨率。

  如果VideoResolution <> rvDefault,并且VideoResolution小于VideoSource的视频分辨率,则发送者使用VideoResolution中规定的值发送视频。

该属性有如下选项:

值 说明
rvDefault 使用默认视频分辨率,不进行缩放
rv160_120 视频分辨率为160 x 120
rv320_240 视频分辨率为320 x 240
rv640_480 视频分辨率为640 x 480
rv1024_768 视频分辨率为1024 x 768
rv1280_720 视频分辨率为1280 x 720
rv1900_1280 视频分辨率为1900 x 1280
  This.RVCamSender1.VideoResolution := rvDefault;
1

# 9.1.29. VideoSendType 属性*

type
  TRVMVideoSendType = (rvmvstImageStream, rvmvstVideoStream);
property VideoSendType : TRVMVideoSendType;
1
2
3

  指定视频的发送方式。发送者连接到接收者时使用此属性。 否则,始终建立永久连接。

值 说明
rvmvstImageStream 帧是单独发送的,建立连接以发送每个帧,可以并行发送多个帧
rvmvstVideoStream 帧在单个连接中发送,仅在视频播放完毕后才会关闭此连接,推荐用于慢速处理器

# 9.1.30. VideoSource, SourceGUID 属性

property VideoSource: TRVVideoSource;
property SourceGUID: String
1
2

  定义视频(音频)源。视频源可以是TRVCamera或TRVCamReceiver组件。如果将TRVCamReceiver分配给此属性,它也可以用作音频源。如果将TRVCamReceiver分配给此属性,并且此接收器从多个源接收视频,则可以指定要在SourceGUID属性中显示的视频(和音频)。

  • 媒体通道   TRVCamSender可以在多个频道中发送视频和音频。 默认(第0个)通道由AudioSource和VideoSource属性定义。 其他通道在ExtraMediaSources属性中定义。

  • 需要完整定义视频源属性的必要性   在最简单的情况下,从分配给此属性的TRVCamera组件读取视频。 无需其他属性设置。
      但是当从TRVCamReceiver读取视频时,您需要指定其他属性,因为此接收器可以从多个发送方接收数据,并且每个发送方可以发送多个媒体通道。 在这种情况下,除了将TRVCamReceiver分配给VideoSource之外,还需要指定:

    • SourceGUID:指定发件人。
    • SourceVideoIndex:指定SourceGUID中指定的发送方的媒体通道,请参阅有关SourceVideoIndex中的方案。

# 9.2. 事件

事件 何时触发
OnConnecting 当发送者开始与服务器/接收者的连接时,或者当接收者开始与发送者的连接时触发该事件
OnConnected 当连接成功时触发该事件
OnConnectError 当连接失败时(仅指在发起连接后由于出错导致连接失败)触发该事件
OnDisconnect 当断开连接时触发该事件
OnEnCodeAudio 当编码音频时触发该事件
OnSendCmd, OnSentCmd 当命令发送后触发该事件

# 9.2.1. OnConnected, OnConnecting, OnDisconnect, OnConnectError 事件

  连接/断开连接到TRVMediaServer或TRVCamReceiver时会发生上述事件。

  当发送者开始与服务器/接收器的连接时,或者当接收者开始与发送者的连接时,发生OnConnecting事件。

  OnConnecting事件发生后,会发生OnConnected事件或OnConnectError事件。

  OnConnected在成功连接时发生。 OnConnectError在连接失败时发生。

  断开连接时发生OnDisconnect事件。

  如果发送者启动连接,则MediaTypes参数需要包含将要发送的数据类型。 发送者创建新连接以发送特定数据,因此参数始终包含单个数据类型。

  如果接收方启动连接,则MediaTypes为空。

  如果在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值是有意义的,以确保连接未关闭或重新打开。

# 9.2.2. OnEncodeAudio 事件

  当发件人将要从AudioSource发送音频数据时发生。

  AStream包含原始音频数据。 这些数据的参数在ASamplesPerSec和ABitsPerSample中指定。

  您可以将音频编码为另一种格式,然后将其写回到AStream。 您还可以修改将发送到网络的ASamplesPerSec和ABitsPerSample的值。

# 9.2.3. OnSendCmd, OnSentCmd 事件

  发送命令时发生。

  仅在ShowCmd = True时才调用这些事件。

  命令由SendCmd方法发送(以及内部调用SendCmd以发送特殊命令的其他方法)。

  启动命令发送时(即调用SendCmd时)发生OnSendCmd。 此事件可用于调试目的。

  发送命令后发生OnSentCmd。

  可以在线程上下文中调用这些事件,因此在此事件中请勿更新用户界面(或进行需要主进程上下文的任何其他操作)。

# 9.3. 方法

方法 功能描述
AddAllowedSender, RemoveAllowedSender, AddAllowedSenders,
ClearAllowedSenders, HelloToAllowedSenders, GoodbyeToAllowedSenders
允许筛选出服务器上发件人的方法
AddDefaultReceiver, RemoveDefaultReceiver, HelloToDefaultReceivers, GoodbyeToDefaultReceivers 与服务器上的默认接收者列表一起使用的方法
AllowMediaAccess, CancelMediaAccess 该方法简化了默认接收者的管理
GetAllUsers, GetAllOnlineUsers 这些方法请求服务器上的用户列表
JoinGroup, LeaveGroup, GetUsersFromGroup, GetGroupInfo, GetAllGroups 与服务器上的组配合使用的方法
NeedSendFullFrame 要求尽快发送完整帧
Reconnect 连接断开后,重新连接到TRVCamReceiver或TRVMediaServer
ReStartServer 重启 TRVMediaServer
SendCmd, BeginCmd, EndCmd, WaitSendCmd 向TRVCamReceiver发送命令的方法(当发送方通过网络与TRVCamReceiver直接连接或通过TRVMediaServer连接时)
SendFile, SendUserData 发送文件和任意数据的方法
SendMediaAccessRequest, SendMediaAccessCancelRequest 该方法简化了默认接收者的管理

# 9.3.1. AddAllowedSender, RemoveAllowedSender, AddAllowedSenders, ClearAllowedSenders, HelloToAllowedSenders, GoodbyeToAllowedSenders 方法

procedure AddAllowedSender(GUID : TGUID);
procedure RemoveAllowedSender(GUID : TGUID);
procedure AddAllowedSenders(GUID : array of TGUID; Count : Integer);
procedure ClearAllowedSenders(AllowAll: Boolean);
procedure HelloToAllowedSenders;
procedure GoodbyeToAllowedSenders;
1
2
3
4
5
6

  允许筛选出服务器上发件人的方法。

  仅当此发送者通过网络连接到TRVMediaServer时,方法才有效。 它们允许定义可以向该客户端发送数据的客户端列表。

  最初,此列表为空,服务器可以从所有客户端向该客户端发送数据。如果在此列表中添加了至少一个客户端,则服务器只能从此列表中包含的客户端向该客户端发送数据。

  AddAllowedSender / RemoveAllowedSender将用户添加/删除到允许的发件人列表中。 AddAllowedSenders添加多个用户。 ClearAllowedSenders删除所有允许的发件人。

  如果使用AllowAll = True调用ClearAllowedSenders,则此客户端可以从所有客户端接收消息,就如同初始状态。如果使用AllowAll = False调用ClearAllowedSenders,或者通过调用RemoveAllowedSender删除了最后一个允许的发件人,则此客户端不接受任何其他客户端的数据。

  客户端可以通过调用HelloToAllowedSenders通知允许的发件人,并通过调用GoodbyeToAllowedSenders通知退出的发件人。如果调用了HelloToAllowedSenders,并且此客户端与服务器之间的连接断开,则服务器本身会通知允许的发送方此客户端正在退出。在OnUserEnter和OnUserExit事件中通知允许的发件人。

  如果更改TRVMediaServer.KeepClientInfoMode,则当此客户端断开连接时,服务器可以保留允许的发件人列表。

# 9.3.2. AddDefaultReceiver, RemoveDefaultReceiver, HelloToDefaultReceivers, GoodbyeToDefaultReceivers 方法

procedure AddDefaultReceiver(GUID : TGUID);
procedure RemoveDefaultReceiver(GUID : TGUID);
procedure HelloToDefaultReceivers;
procedure GoodbyeToDefaultReceivers;
1
2
3
4

  与服务器上的默认接收者列表一起使用的方法。

  仅当此发送者通过网络连接到TRVMediaServer时,方法才有效。

  如果GUIDTo和GUIDGroups为空,则音频和视频将发送到默认接收器。 命令和文件也可以发送到默认接收者。

  服务器可以为每个客户端创建默认接收者列表。客户端本身通过调用AddDefaultReceiver / RemoveDefaultReceiver来添加和删除默认接收者。

  客户端可以通过调用HelloToDefaultReceivers来通知其默认接收者,并通过调用GoodbyeToDefaultReceivers来通知其退出。如果调用了HelloToDefaultReceivers,并且此客户端与服务器之间的连接断开,则服务器本身会通知默认接收者该客户端正在退出。默认接收者在OnUserEnter和OnUserExit事件中得到通知。

  如果更改TRVMediaServer.KeepClientInfoMode,则当此客户端断开连接时,服务器可以保留默认接收者列表。

  另外,该组件提供了一组方法来简化默认接收者的管理:

  • SendMediaAccessRequest,SendMediaAccessCancelRequest(默认接收者列表中的添加/删除请求)
  • AllowMediaAccess,CancelMediaAccess(用于在默认接收者列表中添加和删除的替代方法)

# 9.3.3. AllowMediaAccess, CancelMediaAccess 事件

procedure AllowMediaAccess(const GUID: TRVMAnsiString);
procedure CancelMediaAccess(const GUID: TRVMAnsiString);
1
2

  该方法简化了默认接收者的管理。

  当TRVCamSender作为客户端的一部分连接到TRVMediaServer时,这些方法很有用。

  AllowMediaAccess允许将视频和音频发送到GUID标识的另一个客户端(通过将该客户端添加到默认接收者列表中来实现)。 从TRVCamReceiver.OnMediaAccessRequest事件调用此方法。

  CancelMediaAccess停止将视频和音频发送到由GUID标识的另一个客户端(通过从默认接收者列表中排除该客户端来实现)。从TRVCamReceiver.OnMediaAccessCancelRequest事件中调用此方法。

# 9.3.4. GetAllUsers, GetAllOnlineUsers 事件

procedure GetAllUsers;
procedure GetAllOnlineUsers;
1
2

  这些方法请求服务器上的用户列表。

  当一对TRVCamSender和TRVCamReceiver(在单个应用程序内部)通过网络作为客户端连接到TRVMediaServer时,这些方法有效。

  该方法请求用户列表。 服务器将此信息发送到接收方,并发生OnGetAllUsers / OnGetAllOnlineUsers。

  如果服务器的KeepClientInfoMode = rvkclmWhileOnline,则这些方法将返回相同的列表。 否则,服务器将存储有关脱机客户端的信息。

# 9.3.5. JoinGroup, LeaveGroup, GetUsersFromGroup, GetGroupInfo, GetAllGroups 事件

procedure JoinGroup(AGUIDGroup: TGUID; Permanent: Boolean = False;
  AGroupName: TRVMAnsiString = ''; AGroupPassword: TRVMAnsiString = '';
  OnlyExistingGroup: Boolean = False);
procedure LeaveGroup(GUIDGroup: TGUID);
procedure GetUsersFromGroup(GUIDGroup: TGUID; Online: Boolean);
procedure GetAllGroups;
procedure GetGroupInfo(AGUIDGroup: TGUID);
1
2
3
4
5
6
7

  与服务器上的组配合使用的方法。

  仅当此发送者通过网络连接到TRVMediaServer时,方法才有效。

  服务器可能具有几组客户端(用户)。 属于一个组的用户可以彼此交换数据。 组由唯一标识符(GUIDGroup)标识。 群组可用于实现聊天室功能。

  • 加入和离开

    JoinGroup 将此发件人添加到服务器上的组(由GUIDGroup标识)。如果参数OnlyExistingGroup = True,则只有在服务器上已经存在用户时,用户才加入该组,否则将创建一个新组(如果服务器上的组数不超过TRVMediaServer.MaxGroupCount)。

      当新用户加入现有组时,该组的所有成员都会收到有关该新用户的通知(其接收者的OnUserJoinsGroup事件)。

      用户可以指定组名和密码。如果此方法创建一个新组,则所有其他用户必须指定相同的密码才能加入该组。

      如果参数Permanent = False,则用户将成为该组的成员,直到他/她呼叫LeaveGroup或断开与该客户端的连接为止。用户离开该组时,将通知所有其他用户(接收方的OnUserLeavesGroup事件)。

      如果参数Permanent = True,则无法在该组中删除该用户。当用户呼叫LeaveGroup时,或者当他/她与服务器断开连接时,他/她变为“脱机”,但他/她仍然是该组的成员。仅当使用Permanent = False重新加入该用户后,才能将其从组中删除。此功能允许将组用作联系人列表。

    LeaveGroup 从组中删除该发件人。该组的所有成员都会收到有关此用户退出该组的通知(其接收者的OnUserLeavesGroup事件)。如果它是该组的最后一个用户,则该组将在服务器上删除。如果此客户端与服务器之间的连接断开,则服务器本身将通知该用户退出的组成员。

  • 接收信息

    GetUsersFromGroup 接收属于该组的用户列表。 如果参数Online = True,则仅返回当前连接的组用户。 在接收者的OnGetGroupUsers中返回用户列表。

    GetAllGroups 返回服务器上的组列表。 仅当TRVMediaServer.CmdOptions中包含rvcpUseSystemCmd和rvcpCmdAllGroups时,才支持此命令。 在接收者的OnGetAllGroups中返回组列表。

    GetGroupInfo 返回有关特定组(其名称和创建者)的信息。 该信息在接收者的OnGetGroupInfo中返回。

# 9.3.6. NeedSendFullFrame 方法

procedure NeedSendFullFrame;
1

  要求尽快发送完整帧。

  如果Encoding = rvet*Change,则此方法可能很有用。 在这些模式下,每FullFrameInterval帧发送一个完整帧。 如果长时间未发送完整帧(当视频帧速率低和/或视频图像是静态的,因此由于帧相同而导致不发送帧)时,接收器可以等待相当长的时间才能开始显示视频( 因为它只有在接收到全帧后才能开始显示视频)。 此方法允许在指定时间发送完整帧。

  例如,在ClientServer \ VideoChat \ Lecture \ demo中使用此方法。 如果没有这种方法,则只有在讲师最多更换10张幻灯片后,新学生才能收到幻灯片(因为讲师的FullFrameInterval = 10)。

# 9.3.7. Reconnect 方法

procedure Reconnect;
1

  连接断开后,重新连接到TRVCamReceiver或TRVMediaServer。

# 9.3.8. RestartServer 方法

procedure ReStartServer;
1

  如果此发送者通过网络连接到媒体服务器,则此方法向服务器发送命令以重新启动它。

  如果服务器的CmdOptions属性中包含rvcpUseSystemCmd和rvcpCmdResetServer,则将处理此命令。

# 9.3.9. SendCmd, BeginCmd, EndCmd, WaitSendCmd 方法

procedure BeginCmd;
procedure EndCmd;
procedure WaitForSendCmd(IsProcessMessages: Boolean; AMediaIndex: Word = 0);
procedure SendCmd(Cmd: TRVCmd; vGUIDTo: TRVMAnsiString = '';
  vGUIDGroup: TRVMAnsiString = ''; AMediaIndex: Word = 0);
1
2
3
4
5

  向TRVCamReceiver发送命令的方法(当发送方通过网络与TRVCamReceiver直接连接或通过TRVMediaServer连接时)。

  • 连接到TRVMediaServer时:

      发送到服务器的命令名称不得以“ RV_”或“ RVS_”开头。这些前缀为系统命令保留。

      SendCmd将Cmd发送到vGUIDTo中指定的客户端(如果vGUIDTo为empy,则改用GUIDTo属性)。如果它们为空,则将命令发送到属于具有标识符vGUIDGroup的组的客户端(如果vGUIDGroup为空,则改用GUIDGroup属性)。否则,命令将发送到默认接收器(如果已定义)。当客户端的接收方收到命令时,将发生OnReceiveCmdData事件。

      名称以“ RVSU_”开头的命令将被特别处理。它们被发送到服务器本身(忽略GUID参数)。当服务器收到它时,发生OnServerCmd事件。服务器不会将这些命令重新发送给客户端。发送给服务器的命令不得太大:包括所有内部信息在内的命令总大小不得超过8912字节。

  • 连接到TRVCamReceiver时:

      SendCmd将Cmd发送到接收方,vGUIDTo可以指定接收方标识符(如果vGUIDTo为empy,则改用GUIDTo属性)。组标识符将被忽略。当接收方收到命令时,将发生OnReceiveCmdData事件。

  • 发送命令

      SendCmd仅启动发送,并在实际发送此命令之前退出。不要释放Cmd对象,它将由TRVCamSender释放。

      您可以使用WaitForSendCmd等待所有命令发送完毕。如果IsProcessMessages = True,则WaitForSendCmd包含一个调用Application.ProcessMessages的循环,因此请在之后检查Application.Terminated。

      如果需要发送多个命令,请调用BeginCmd,然后调用多个SendCmd,然后调用EndCmd。在这种模式下,命令在调用SendCmd时会累积,并且仅在EndCmd中发送。

  • 媒体渠道

      可选的AMediaIndex参数允许定义媒体频道的索引,从而将此命令链接到该频道。在大多数应用程序中,可以将此参数保留为0。

# 9.3.10. SendFile, SendUserData 事件

procedure SendFile(FileName: String; FileSeek: Int64 = 0;
  vGUIDTo: TRVMAnsiString = ''; vGUIDGroup: TRVMAnsiString = '';
  AMediaIndex: Word = 0);
procedure SendUserData(AStream: TMemoryStream;
  vGUIDTo: TRVMAnsiString = ''; TRVMAnsiString: TRVMAnsiString = '';
  AMediaIndex: Word = 0);
1
2
3
4
5
6

  发送文件和任意数据的方法。

  连接到TRVMediaServer时:这些方法将数据发送到vGUIDTo中指定的客户端(如果vGUIDTo为empy,则改用GUIDTo属性)。如果它们为空,则将数据发送到属于具有标识符vGUIDGroup的组的客户端(如果vGUIDGroup为空,则改用GUIDGroup属性)。否则,命令将发送到默认接收器(如果已定义)。

  连接到TRVCamReceiver时:该方法将数据发送到接收器,vGUIDTo可以指定接收器标识符(如果vGUIDTo为empy,则改用GUIDTo属性)。组标识符将被忽略。

SendFile 发送文件FileName(从FileSeek参数中定义的位置(以字节为单位))。

SendUserData 从AStream发送数据。

  • 媒体渠道

      可选的AMediaIndex参数允许定义媒体频道的索引,从而将此文件/数据链接到该频道。在大多数应用程序中,可以将此参数保留为0。

      可以同时发送不同频道中的文件和数据。

  • 在接收方

      TRVCamReceiver接收文件时,将发生OnReceivingFile,OnReceiveFileData,OnReceivedFile事件。

      TRVCamReceiver接收用户数据时,将发生OnReceiveUserData事件。

# 9.3.11. SendMediaAccessRequest, SendMediaAccessCancelRequest 方法

procedure SendMediaAccessRequest(const GUID: TRVMAnsiString; ADataType: Word = RVMEDIA_DATA);
procedure SendMediaAccessCancelRequest(const GUID: TRVMAnsiString; ADataType: Word = RVMEDIA_DATA);
1
2

  该方法简化了默认接收者的管理。

  当TRVCamSender作为客户端的一部分连接到TRVMediaServer时,这些方法很有用。

SendMediaAccessRequest 向GUID标识的客户端发送请求;作为响应,该客户端可以开始向请求者发送数据(通常是视频和音频)。

SendMediaAccessCancelRequest 向GUID标识的客户端发送请求;作为响应,该客户端应停止向请求者发送数据。

  从技术上讲,这些方法可用于发送特殊的命令,例如SendCmd。

  • 参数:

    GUID –从中请求媒体的其他客户端的标识符。如果GUID为空,则使用GUIDTo。如果也为空,则此请求将发送到组GUIDGroup。

    ADataType –保留供将来使用(计划:它将列出提出请求的数据类型,可以包含*** _ DATA常量(使用“或”运算符组合)。如果未指定此参数,则假定音频和视频)。

  • 例:

      有两个客户端ClientA和ClientB连接到介质服务器。 ClientA由RVCamSenderA和RVCamReceiverA组成,ClientB由RVCamSenderB和RVCamReceiverB组成。客户A的标识符为GUID_A,客户B的标识符为GUID_B。

      ClientA希望通过网络从ClientB接收视频和音频。它调用RVCamSenderA.SendMediaAccessRequest(GUID_B)。作为响应,TRVCamReceiverB.OnMediaAccessRequest事件发生。在这种情况下,ClientB(如果同意将视频和音频发送到ClientA)调用TRVCamSenderB.AllowMediaAccess(GUID_A)。

      接下来,ClientA不再希望从ClientB接收视频和音频。它调用RVCamSenderA.SendMediaAccessCancelRequest(GUID_B)。作为响应,TRVCamReceiverB.OnMediaAccessCancelRequest事件发生。在这种情况下,ClientB应该调用TRVCamSenderB.CancelMediaAccess(GUID_A)。

# 10. TRVCamReceiver 组件

  TRVCamReceiver通过网络从TRVCamSender或TRVMediaServer接收视频和音频。

  分配Active = True激活接收器。 该组件通过网络从一个或多个TRVCamSender组件接收视频和音频数据。 如果收件人可以从多个发件人处接收,则应将发件人的标识符添加到发件人。

  除了音频和视频,接收器还可以接收命令,文件和二进制数据。

  接收器接收的视频可以显示在TRVCamView或TRVCamMultiView组件中。

  接收器接收的视频和音频可以使用TRVCamSender组件进一步发送。

# 10.1. 属性

属性 属性说明
Active 启用接收
AudioLatency, VideoLatency 延迟(以毫秒为单位)
BufferDuration 指定音频数据的缓冲区大小(以毫秒为单位)
BufferSize 定义用于接收数据的缓冲区的大小
Color 指定丢失的视频帧片段的颜色
ConnectionProperties 定义连接属性
FilterSystemCmd 指定系统命令是否调用OnReceiveCmdData事件
GUIDMy 该接收者的标识符
IgnoreCorruptedFrames 指定在帧链中如何处理丢失或损坏的帧
JpegIntegrity 指定如何检查收到的jpeg图像(视频帧),参考TRVCamera.JpegIntegrity
Mute 允许/禁止播放从网络接收到的声音
Port 指定连接的端口
Protocol 定义用于接收数据的协议
ReceiveMediaTypes 定义组件接收的媒体类型(视频,音频等)
RetryCount 指定尝试连接的最大次数
Senders 潜在发件人的集合,该集合的工作方式取决于发起连接的一侧。
SessionKey, SessionKey2 返回当前会话的标识符
SmoothImage 通过从最后收到的几个视频帧中创建图像来平滑视频帧
State 返回接收器状态
SynchonizedReceiveUserData 定义OnReceiveUserData事件的线程上下文
TCPConnectionType 指定哪一侧启动TCP / HTTP连接
Volume 返回或更改此应用程序的扬声器音量

# 10.1.1. Active 属性

property Active: Boolean;
1

  启用接收。

  每次将Active从False更改为True时,SessionKey的值都会更改。

  可参考State。

# 10.1.2. AudioLatency, VideoLatency 属性

property VideoLatency: Word;
property AudioLatency: Word;
1
2

  延迟(以毫秒为单位)。

  如果未经过指定时间,则不会播放视频帧/音频片段。

  AudioLatency非常重要,它可以确保在播放之前已接收到所有音频片段。

  VideoLatency允许将视频与音频同步。 如果您不打算接收音频,建议指定VideoLatency = 0以节省资源。

# 10.1.3. BufferSize 属性

property BufferSize: Cardinal;
1

  定义用于接收数据的缓冲区的大小。

  当流量较高时,较大的缓冲区大小可提供更快的发送速度(但是,接收数据的部分之间的暂停会增加)。

  可参考TRVCamSender.BufferSize。

# 10.1.4. ConnectionProperties 属性

property ConnectionProperties: TRVConnectionProperties;
1

  ConnectionProperties包含以下属性:

  • VideoTimeout: Integer (default value = DefaultWaitForVideo)
  • AudioTimeout: Integer (default value = DefaultWaitForAudio)
  • CmdTimeout: Integer (default value = DefaultWaitForCmd)
  • DataTimeout: Integer (default value = DefaultWaitForData)
  • FileTimeout: Integer read (default value = DefaultWaitForFile)
  • UseBlockingSocketsForVideo: Boolean (default value = False)
  • UseBlockingSocketsForAudio: Boolean (default value = False)
  • UseBlockingSocketsForCmd: Boolean (default value = True)
  • UseBlockingSocketsForData: Boolean (default value = False)
  • UseBlockingSocketsForFile: Boolean (default value = True)

  其中默认值定义如下:

const
  DefaultWaitForVideo := 3000;
  DefaultWaitForAudio := 3000;
  DefaultWaitForCmd   := 15000;
  DefaultWaitForData  := 10000;
  DefaultWaitForFile  := 10000;
1
2
3
4
5
6

  TimeOut属性为指定类型的数据的非阻塞套接字定义最大等待时间(以毫秒为单位)。 如上所示,命令的等待时间最长,因为命令是最重要的(对于稳定工作甚至可能至关重要)。

  • 如果UseBlockingSockets * = True

      该组件发出请求,并等待另一方做出响应(或断开连接)。 超时没有断开连接。

    • 优点: 所有发送的数据将被接收。

    • 缺点: 稳定; 如果一个应用程序挂起,其他应用程序也挂起。

  • 如果UseBlockingSockets * = False

      该组件发出请求,并等待另一方做出响应或断开连接,或者等待超时间隔过去。

    • 优点: 稳定性; 如果一个应用程序挂起,或者由于太忙而无法处理请求,则另一个应用程序会在超时后断开连接,因此它可以继续工作。

    • 缺点: 如果其他应用程序繁忙,则数据可能会丢失,连接将断开。

# 10.1.5. FilterSystemCmd 属性

property FilterSystemCmd: Boolean;
1

  指定系统命令是否调用OnReceiveCmdData事件。

  名称以“ RV_”和“ RVS_”开头的命令是系统命令。

  如果为True,则系统命令不会调用此事件。

  如果为False,则系统命令将调用此事件。 这对于调试很有用。

# 10.1.6. GUIDMy 属性

property GUIDMy: String;
1

  该接收者的标识符。

  如果定义,则此接收器仅接受包含与接收器相同的标识符(TRVCamSender.GUIDTo)的数据。 它有助于在网络攻击期间忽略未经授权的发送者。

  如果为空,则此接收器接受所有数据。

  此外,当此接收器作为客户端的一部分连接到TRVMediaServer时,将使用此属性。

  请勿为此属性分配全零的GUID(即'{00000000-0000-0000-0000-0000-000000000000}')。

# 10.1.7. IgnoreCorruptedFrames 属性

property IgnoreCorruptedFrames: Boolean;
1

  指定在帧链中如何处理丢失或损坏的帧。

  如果将正值分配给TRVCamSender.FrameDifferenceInterval,则发送一帧帧。 链中的第一帧照原样发送,后续帧作为新帧与旧帧之间的差异发送。

  此属性指定如果链中的一帧丢失或损坏(在UDP连接中可能会出现这样的情况),接收方的工作方式。

  如果为True,则仍显示帧,但可能出现视觉伪影。

  如果为False,则删除损坏/丢失的帧之后的其余链条。

# 10.1.8. Mute 属性

property Mute: Boolean;
1

  允许/禁止播放从网络接收到的声音。

  此属性不会更改扬声器的系统“静音”属性,它只会使此组件接收到的声音静音。

  如果分配了AudioOutput,则将忽略此属性,而改用AudioOutput.Mute。

# 10.1.9. Port 属性

property Port: Word;
1

  指定连接的端口。

  必须在将连接到此接收器的所有发送器组件的ReceiverPort属性中指定相同的值。

# 10.1.10. Protocol 属性

property Protocol: TRVProtocol;
1

  定义用于接收数据的协议。

  • 有关TRVCamSender和TRVCamReceiver之间连接的建议:

      如果您不仅需要发送视频和音频,还需要发送其他类型的数据(命令,文件等),请创建两对Sender + Receiver。 对于第一个发送方,分配Protocol = rvpUDP,将其连接到第一个接收方(具有相同的Protocol属性值),并用于传输视频和音频数据。 对于第二个发送方,分配Protocol = rvpTCP(或rvpHTTP),将其连接到第二个接收方(具有相同的Protocol属性值),并用于传输命令,文件等。

  • TRVCamReceiver和TRVMediaServer之间的连接建议:

      连接服务器-接收器必须始终为HTTP或TCP。

# 10.1.11. ReceiveMediaTypes 属性

property ReceiveMediaTypes: TRVMediaTypes;
1

  定义组件接收的媒体类型(视频,音频等)。有rvmtVideo, rvmtAudio, rvmtUserData, rvmtFileData, rvmtCmdData等选项可选。参考TRVCamSender.SendMediaTypes。

# 10.1.12. Senders 属性

property Senders: TRVSenderCollectionEx;
1

  潜在发件人的集合,该集合的工作方式取决于发起连接的一侧。

  • 选项1:从TRVCamSender连接到TRVCamReceiver

      如果Protocol = rvpUDP或TCPConnectionType = rvtcpSenderToReceiver,则会发生这种类型的连接。

      发件人用作定义可以接受哪些连接的筛选器。

      发件人中的每个项目(TRVSenderItemEx)指定可以从item.SenderHost中指定的地址接受哪些连接。如果项目具有非空的GUIDFrom,则接收者仅接受具有相同GUIDFrom值的发送者。如果item.GUIDFrom为空,则将项目属性AudioSenders,VideoSenders,UserDataSenders,CmdSenders,FileSenders用作筛选器(但是,与TRVMediaServers通信时,这些属性更有意义,请参见下文)。

      如果发件人为空,则接受来自任何发件人的连接。

  • 选项2:从TRVCamReceiver到TRVCamSender的连接

      当Protocol = rvpTCP(或rvpHTTP)和TCPConnectionType = rvtcpReceiverToSender时,将发生这种类型的连接。

      收件人将连接到“发件人”中列出的所有发件人。对于每一项,接收方都连接到地址项。SenderHost:item.SenderPort。要成功建立连接,item.GUIDFrom必须等于sender.GUIDFrom。

  • 选项3:从TRVMediaServer到TRVCamReceiver的连接

      此模式需要以下设置:Protocol = rvpTCP(或rvpHTTP)和TCPConnectionType = rvtcpReceiverToSender。

      通常,属性应具有与选项2相同的设置。但是:

    • item.SenderHost必须指定服务器地址
    • item.GUIDFrom应该为空
    • 项目属性AudioSenders,VideoSenders,UserDataSenders,CmdSenders,FileSenders可能包含允许将数据发送到此接收器的客户端列表;如果它们为空,则根据VideoDefaultAcceptAll,AudioDefaultAcceptAll,UserDefaultAcceptAll,FileDefaultAcceptAll,CmdDefaultAcceptAll属性,接受/拒绝来自此服务器所有客户端的数据。

# 10.1.13. SessionKey, SessionKey2 属性(只读)

property SessionKey: TRVSessionKey;
property SessionKey2: TRVSessionKey;
1
2

  返回当前会话的标识符。

  每当Active变为True时,SessionKey的值都会更改(增加1)。 当Active = False时,此属性返回0。

  SessionKey的值作为参数传递给TRVCamReceiver的事件。 如果您在事件内执行耗时的操作,则比较此属性和SessionKey参数的值以确保未关闭或重新打开连接是有意义的。

  SessionKey的值不必等于连接的TRVCamSender的SessionKey(它们彼此完全独立)。

注意: SessionKey在整个连接期间都返回非零值,不仅是在所有通道都打开时(甚至在未创建通道的模式下)。

  当Active = True时,SessionKey2返回与SessionKey相同的值。 但是,当Active = False时,它将返回上一个会话的密钥。

# 10.1.14. SmoothImage 属性

property SmoothImage: Boolean;
1

  通过从最后收到的几个视频帧中创建图像来平滑视频帧。

  当前属性为实验性质。

  如果为True,则通过根据最近接收的几(3)个帧创建图像来平滑视频帧。

优点: 消除图像中的噪点,尤其是在光线不足的情况下。

缺点: 使运动对象模糊。

  我们不建议将这种模式用于包含快速更改计时器的视频,或者如果视频的帧速率较低时。

# 10.1.15. State 属性(只读)

type // Defined in MRVType unit
  TRVMState = (rvmsDisconnect, rvmsConnecting, rvmsConnect, rvmsDisconnecting);
property State: TRVMState;
1
2
3

  返回接收器状态。

参数 含义 对应的Active属性值
rvmsDisconnect 接收器已断开连接 False
rvmsConnecting 接收器正在连接 True
rvmsConnect 接收器已连接 True
rvmsDisconnecting 接收器正在断开连接 True

  当State = rvmsConnect时,组件可以接收数据。 如果State = rvmsDisconnect,则无法接收数据。 当State=rvmsConnecting和rvmsDisconnecting时,组件正在等待,并且操作不可用。

# 10.1.16. SynchonizedReceiveUserData 属性

property SynchonizedReceiveUserData: Boolean;
1

  定义OnReceiveUserData事件的线程上下文。

  如果为False,则在线程上下文中调用此事件。

  如果为True,则在主进程的上下文中调用此事件。

# 10.1.17. TCPConnectionType 属性

property TCPConnectionType: TRVTCPConnectionType;
1

  指定哪一侧启动TCP / HTTP连接。

  如果Protocol = rvpTCP或rvpHTTP,则使用此属性。

  与TRVCamSender连接时,此值必须等于发送者的TCPConnectionType。

# 10.1.18. Volume 属性

property Volume: Word;
1

  返回或更改此应用程序的扬声器音量。

  值的范围是0..65535。

  此属性更改应用程序扬声器的系统音量。

  如果分配了AudioOutput,请改用AudioOutput.Volume。

# 10.2. 事件

事件 何时触发
OnConnected, OnConnecting, OnDisconnect, OnConnectError 与TRVMediaServer或TRVCamSender连接/断开连接时触发事件
OnDecodeAudio 接收音频数据时触发事件
OnGetGroupInfo 响应TRVCamSender.GetGroupInfo而发生事件
OnRequestJoinGroup 在响应TRVCamSender.JoinGroup时发生事件
OnGetAllGroups 响应TRVCamSender.GetAllGroups而发生事件
OnGetAllUsers, OnGetAllOnlineUsers 响应TRVCamSender.GetAllUsers / GetAllOnlineUsers而发生事件
OnGetGroupUsers 响应TRVCamSender.GetUsersFromGroup而发生事件
OnGetImage 当组件接收视频帧时,将发生此事件
OnOpenChannel, OnCloseChannel 这些事件在打开特定媒体类型的连接之前和之后发生
OnReceiveCmdData 响应TRVCamSender.SendCmd发生事件
OnReceiveFileData 响应TRVCamSender.SendFile发生该事件
OnReceiveUserData 响应TRVCamSender.SendUserData发生该事件
OnSessionConnected, OnSessionDisconnected 连接/断开所有通道时,将发生事件
OnUserEnter, OnUserExit 在响应TRVCamSender.HelloToDefaultReceivers / GoodbyeToDefaultReceivers和HelloToAllowedSenders / GoodbyeToAllowedSenders时发生事件
OnUserJoinsGroup, OnUserLeavesGroup 在响应TRVCamSender.JoinGroup和LeaveGroup时发生事件
OnMediaAccessRequest, OnMediaAccessCancelRequest 响应TRVCamSender.SendMediaAccessRequest和SendMediaCancelAccessRequest而发生事件

# 10.2.1. OnConnected, OnConnecting, OnDisconnect, OnConnectError 事件

与TRVMediaServer或TRVCamSender连接/断开连接时发生的事件。

当发送者开始与接收者的连接或接收者开始与发送者/服务器的连接时,就会发生OnConnecting事件。 有关说明,请参见有关连接模式。

OnConnecting之后,会发生OnConnected或OnConnectError事件。 连接成功后,将发生OnConnected事件。 OnConnectError在连接失败时发生。

OnDisconnect发生在断开连接时。

如果发送方启动连接,则MediaTypes参数为空。

如果接收方开始连接,则在打开用于特定数据类型的通道的过程中将调用这些事件,因此MediaTypes参数包含用于标识通道的单个数据类型。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.2. OnDecodeAudio 事件

接收音频数据时触发事件。

AStream包含音频数据。 通常,它是带有参数ASamplesPerSec和ABitsPerSample的原始数据,但它们可以在TRVCamSender.OnEncodeAudio事件中进行编码。

您可以自己播放声音。 如果执行此操作,则将False分配给DoDefault参数。

否则,您可以使用此事件解码在TRVCamSender.OnEncodeAudio中编码的声音。

# 10.2.3. OnGetGroupInfo 事件

响应TRVCamSender.GetGroupInfo而发生事件。

当一对TRVCamSender和TRVCamReceiver(在单个应用程序内部)作为客户端通过网络连接到TRVMediaServer时,将发生此事件。

TRVCamSender.GetGroupInfo请求有关该组的信息。 服务器将此信息发送到接收方,并发生OnGetGroupInfo。

  • 参数:
    • GUIDGroup –组的标识符(与TRVCamSender.GetGroupInfo的参数相同)
    • AGUIDOwner –创建此组的客户端的标识符。
    • AGroupName –组的名称(与创建该组时的TRVCamSender.JoinGroup的参数相同)
    • ACmd –包含此信息的命令。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保连接未关闭或重新打开。

# 10.2.4. OnRequestJoinGroup 事件

在响应TRVCamSender.JoinGroup时发生事件。

当一对TRVCamSender和TRVCamReceiver(在单个应用程序内部)作为客户端通过网络连接到TRVMediaServer时,将发生此事件。

TRVCamSender.JoinGroup请求加入服务器上的指定组。 服务器将此信息发送到接收方,并发生OnRequestJoinGroup。

  • 参数:
    • GUIDGroup –组的标识符(与TRVCamSender.JoinGroup的参数相同)
    • AAccess –如果用户成功,则为True(可以从AError参数接收扩展信息)
    • AError –错误(或成功)代码。
AError值 含义
RV_ERROR_CMD_SUCCESS 用户已成功加入该组(无错误)
RV_ERROR_CMD_BAD_PASSWORD 用户未加入组,因为提供的密码不正确
RV_ERROR_CMD_GROUP_EXISTS 用户未加入该组,因为该组在服务器上不存在

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.5. OnGetAllGroups 属性

响应TRVCamSender.GetAllGroups而发生事件。

当一对TRVCamSender和TRVCamReceiver(在单个应用程序内部)作为客户端通过网络连接到TRVMediaServer时,将发生此事件。

仅当TRVMediaServer.CmdOptions中包含rvcpUseSystemCmd和rvcpCmdAllGroups时,才支持此命令。

TRVCamSender.GetAllGroups请求服务器上所有组的列表。 服务器将此列表发送到接收方,然后发生OnGetAllGroups。

组列表包含在ACmd参数中。

此命令具有以下参数:

  • GUIDCount(整数)–返回的组数

  • GUIDGroup1,GUIDGroup2,...(字符串)–组标识符(从1到GUIDCount的值)

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.6. OnGetAllUsers, OnGetAllOnlineUsers 事件

响应TRVCamSender.GetAllUsers / GetAllOnlineUsers而发生事件。

当一对TRVCamSender和TRVCamReceiver(在单个应用程序内部)通过网络作为客户端连接到TRVMediaServer时,会发生这些事件。

仅当TRVMediaServer.CmdOptions中包含rvcpUseSystemCmd和rvcpCmdAllUsers时,才支持这些命令。

TRVCamSender GetAllUsers(或GetAllOnlineUsers)请求服务器上所有用户的列表。 服务器将此列表发送给接收方,然后发生OnGetAllUsers(或GetAllOnline)。

用户列表包含在ACmd参数中。

此命令具有以下参数:

  • GUIDCount(整数)–返回的用户数。

  • GUIDUser1,GUIDUser2,...(字符串)–用户标识符(从1到GUIDCount的值)

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.7. OnGetGroupUsers 属性

响应TRVCamSender.GetUsersFromGroup而发生事件。

当一对TRVCamSender和TRVCamReceiver(在单个应用程序内部)作为客户端通过网络连接到TRVMediaServer时,将发生此事件。

TRVCamSender.GetUsersFromGroup向服务器请求属于某个组的客户端列表。 服务器将此列表发送给接收方,然后发生OnGetGroupUsers。

  • 参数:
    • GUIDGroup –组的标识符(与TRVCamSender GetUsersFromGroup的参数相同)
    • GUIDUsers –属于该组的用户的标识符列表。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.8. OnGetImage 事件

当组件接收视频帧时,将发生此事件。

图片在Img参数中返回。 您不能自己释放Img。 您可以修改此图像。

AGUIDFrom是发送此图像的发送者的标识符。

AGUIDFrom是接收者的标识符。

此事件在线程上下文中调用。

# 10.2.9. OnOpenChannel, OnCloseChannel 事件

这些事件在打开特定媒体类型的连接之前和之后发生。

通道是用于传输媒体类型之一的数据的连接。 接收者最多可以接受ReceiveMediaTypes属性中指定的5种媒体类型。 打开所有通道后,将建立一个会话。

仅当接收方启动与发送方/服务器的连接时,才使用通道和会话。 有关说明,请参见有关连接模式的主题。

  • 连接成功的事件顺序:

    1. 对于每个通道:OnOpenChannel,然后是OnConnecting,然后是OnConnected;
    2. OnSessionConnected。
  • 断开连接时的事件顺序:

    1. 对于每个通道:OnDisconnect,然后是OnCloseChannel;
    2. OnSessionDisconnected。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.10. OnReceiveCmdData 事件

响应TRVCamSender.SendCmd发生事件。

接收器接收到TRVCamSender发送的命令(直接或通过TRVMediaServer)后,将发生此事件。

  • 参数:
    • Cmd –命令及其参数。
    • nGUIDFrom –发送命令的发送方的标识符(TRVCamSender.GUIDFrom)
    • nGUIDGroup –服务器上组的标识符,如果此命令已发送到组。
    • AMediaIndex –发送者的媒体频道的索引。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

默认情况下,接收系统命令(名称以“ RV_”或“ RVS_”开头)时不调用此事件。 如果要为这些命令调用此事件(例如,用于调试),请分配FilterSystemCmd = False。

# 10.2.11. OnReceiveFileData 事件

响应TRVCamSender.SendFile发生该事件。

当接收方开始接收文件时,将发生OnReceivingFile。

接收文件数据时,OnReceiveFileData发生(多次)。

当接收到文件时,发生OnReceivedFile。

  • 参数:
    • AData –收到的内容
    • nGUIDFrom –发送命令的发送方的标识符(TRVCamSender.GUIDFrom)
    • nGUIDGroup –服务器上组的标识符,如果此命令已发送到组。
    • FileName,FileOffs -对应于TRVCamSender.SendFile的参数。 TotalFileSize –原始文件的大小。
    • AMediaIndex –发送者的媒体频道的索引。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

在主进程的上下文中调用OnReceivingFile和OnReceivedFile。

在线程上下文中调用OnReceiveFileData。 在这种情况下,请勿更新用户界面(或进行需要主进程上下文的任何其他操作)。

# 10.2.12. OnReceiveUserData 属性

响应TRVCamSender.SendUserData发生该事件。

  • 参数:
    • AData –收到的内容
    • nGUIDFrom –发送命令的发送方的标识符。
    • nGUIDGroup –服务器上组的标识符,如果此命令已发送到组。
    • AMediaIndex –发送者的媒体频道的索引。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

根据SynchonizedReceiveUserData属性,在线程上下文或主进程上下文中调用该事件。

不要在线程上下文中调用的事件中更新用户界面(或进行任何其他需要主进程上下文的操作)。

# 10.2.13. OnSessionConnected, OnSessionDisconnected 属性

连接/断开所有通道时,将发生事件。

仅当接收方启动与发送方/服务器的连接时,才使用通道和会话。 有关说明,请参见连接模式。

通道是用于传输媒体类型之一的数据的连接。 接收器最多可以接受ReceiveMediaTypes属性中指定的5种媒体类型(即使TRVCamSender也不发送其中一些数据,通道仍处于打开状态)。 这些通道组成一个会话。 打开所有通道后,将创建一个会话(并发生OnSessionConnected)。 如果至少一个通道关闭,则会话终止(并且发生OnSessionDisconnected)。

在尝试连接失败(未调用OnSessionConnected)之后也会发生OnSessionDisconnected。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.14. OnUserEnter, OnUserExit 属性

在响应TRVCamSender.HelloToDefaultReceivers / GoodbyeToDefaultReceivers和HelloToAllowedSenders / GoodbyeToAllowedSenders时发生事。

如果客户端通过网络连接到TRVMediaServer,则会发生此事件。

  • 参数:

  • GUIDUser –进入或退出的客户端的标识符。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.15. OnUserJoinsGroup, OnUserLeavesGroup 属性

在响应TRVCamSender.JoinGroup和LeaveGroup时发生事件。

如果客户端通过网络连接到TRVMediaServer,则会发生此事件。

  • 参数:
    • GUIDGroup –组的标识符(与TRVCamSender JoinGroup和LeaveGroup的参数相同)
    • GUIDUser –加入或离开组的客户端的标识符。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.2.16. OnMediaAccessRequest, OnMediaAccessCancelRequest 属性

响应TRVCamSender.SendMediaAccessRequest和SendMediaCancelAccessRequest而发生事件。

当另一个客户端调用SendMediaAccessRequest到此客户端时,会发生OnMediaAccessRequest。在这种情况下,您可以通过调用TRVCamSender.AllowMediaAccess将视频和音频发送到该客户端。

当另一个客户端向该客户端调用SendMediaAccessCancelRequest时,将发生OnMediaAccessCancelRequest。在这种情况下,您应该禁止通过调用TRVCamSender.CancelMediaAccess向该客户端发送数据(通常是视频和音频)。

注意:这些事件有助于管理媒体服务器上的默认接收者列表。这是发送给未指定收件人的数据(不仅是视频和音频,还包括所有类型的数据)的默认收件人的列表。

  • 参数:

  • GUIDGroup –组的标识符(如果向组发出请求)

  • GUIDUser –客户端请求者的标识符。

  • ADataType –保留供将来使用。

如果您在事件内执行耗时的操作,则比较SessionKey参数和SessionKey属性的值以确保未关闭或重新打开连接是有意义的。

# 10.3. 方法

# 10.3.1. GetOpenChannelCount, GetMaxChannelCount 方法

function GetOpenChannelCount: Integer;
function GetMaxChannelCount: Integer;
1
2

该方法返回打开的通道数和最大可能的通道数。

如果TRVCamSender启动连接,则最大通道数为1。如果TRVCamReceiver启动连接,则为ReceiveMediaTypes中指定的每种数据类型创建一个通道。有关说明,请参见连接模式。

# 11. TRVMicrophone 组件

TRVMicrophone从麦克风读取声音。

可以将TRVMicrophone分配为TRVCamSender的音频源,以将声音发送到网络。

可以将TRVMicrophone分配为TRVMicrophoneView的音频源,以可视化其活动。

  • 使用方法

    • 选择麦克风(或其他音频输入设备)

      默认情况下,组件从默认音频输入设备读取声音。您可以选择其他设备。

      AudioInputDeviceList数组属性中返回可用设备的列表,AudioInputDeviceCount属性中返回设备的数目。

      您可以通过分配AudioInputDeviceIndex属性来选择设备(可以在AudioInputDeviceList中分配索引,或-1以选择默认设备)。

    • 麦克风发出的声音

      如果Active = True,则组件从麦克风读取声音。

      以下属性允许更改麦克风的系统属性(影响所有应用程序):Volume。

      以下属性允许在播放/发送之前更改从麦克风读取的声音:VolumeMultiplier,NoiseReduction,Pitch。

      Mute会关闭麦克风的读数。

      以下属性允许截断非信息性声音:SoundMinLevel,SoundIgnoreInterval。下图显示了它们的定义。黄色曲线表示声音振幅随时间变化的绝对值。在以下情况下,该组件将忽略声音:(1)位于SoundMinLevel以下,(2)位于SoundIgnoreInterval定义的区间内。

      声音质量在BitsPerSample和SamplesPerSec属性中指定

    • WAV文件中的声音

      要从文件读取声音,请分配SourceType = rvsstWAV,将文件名分配给WAVFileName,分配Active = True。

      要将修改属性应用于从文件读取的声音,请分配WAVUseOptions = True。

      在处理文件时,会发生OnOpenWavFile,OnReadWavFile,OnCloseWavFile事件。

# 11.1. 属性

属性 属性说明
AudioInputDeviceIndex, AudioInputDeviceCount, AudioInputDeviceList 允许选择麦克风(或其他音频捕获设备)的属性
BitsPerSample, SamplesPerSec 这些属性定义从麦克风读取的声音质量
BufferDuration 指定缓冲区大小(以毫秒为单位)
Mute 打开/关闭麦克风
NoiseReduction 启用/禁用降噪
Pitch 允许更改声音的音高
SoundIgnoreInterval 定义声音幅度变化的最小可接受间隔
SoundMinLevel 声音幅度的最小可接受值
SourceType 指定声源
VolumeMultiplier 麦克风音量的倍乘数
WAVFileName 指定WAV文件的名称
WAVUseOptions 指定组件是否将声音选项应用于WAV文件

# 11.1.1. AudioInputDeviceIndex, AudioInputDeviceCount, AudioInputDeviceList 属性

property AudioInputDeviceIndex: Integer;
property AudioInputDeviceCount: Integer;
property AudioInputDeviceList[Index: Integer]: String;
1
2
3

AudioInputDeviceCount返回音频捕获设备的计数。

AudioInputDeviceList [Index](其中Index的范围是0..AudioInputDeviceCount-1)返回设备的名称。 这些名称可以在应用程序UI中显示给用户。

在0..AudioInputDeviceCount-1到AudioInputDeviceIndex范围内分配一个值以选择设备。 或者,您可以分配-1以使用默认设备。

# 11.1.2. BitsPerSample, SamplesPerSec 属性

property SamplesPerSec: TRVSamplesPerSec;
property BitsPerSample: TRVBitsPerSample;
1
2

这些属性定义从麦克风读取的声音质量。

较高的值可能会提高声音质量,但也会增加流量和延迟。

“SamplesPerSec”通常称为“采样率”,“BitsPerSample”通常称为“样本大小”。

# 11.1.3. BufferDuration 属性

property BufferDuration: Word;
1

指定缓冲区大小(以毫秒为单位)。

当缓冲区完全填满时,组件将发送声音数据。

较小的值表示较小的滞后,但是,它可能会降低声音质量。

# 11.1.4. Mute 属性

property Mute: Boolean;
1

打开/关闭麦克风。

此属性不会更改音频设备的系统“Mute”属性,它只会使此组件读取的声音静音。

# 11.1.5. NoiseReduction 属性

property NoiseReduction: Boolean;
1

启用/禁用降噪。

# 11.1.6. Pitch 属性

property Pitch: Shortint;
1

允许更改声音的音高。取值范围如下:

负值(-127 ..- 1):高音调

0:不变的声音

正值(1..127):低音

此属性应用于从麦克风读取的声音。 如果WAVUseOptions = True,则它也将应用于WAV文件中的声音。

# 11.1.7. SoundIgnoreInterval 属性

property SoundIgnoreInterval: Byte;
1

定义声音幅度变化的最小可接受间隔。

对于给定的时间段,该组件将计算声音振幅(Av)的平均值。 如果声音幅度在间隔[Av-SoundInterval,Av + SoundInterval]中变化,则声音将被忽略。

此属性可以消除单调的嗡嗡声。

此属性应用于从麦克风读取的声音。 如果WAVUseOptions = True,则它也将应用于WAV文件中的声音。

# 11.1.8. SoundMinLevel 属性

property SoundMinLevel: Byte;
1

声音幅度的最小可接受值。

振幅较低的声音将被忽略。

0表示播放所有声音。

此属性可截断太安静的声音。

此属性应用于从麦克风读取的声音。 如果WAVUseOptions = True,则它也将应用于WAV文件中的声音。

# 11.1.9. SourceType 属性

type
  TRVSoundSourceType = (rvsstMicrophone, rvsstWAV); // defined in MRVType unit
property SourceType: TRVSoundSourceType;
1
2
3

指定声源。

值 说明
rvsstMicrophone 话筒
rvsstWAV 在WAVFileName属性中指定的WAV文件

# 11.1.10. VolumeMultiplier 属性

property VolumeMultiplier: Double;
1

麦克风音量的倍乘数。

该组件将从麦克风读取的声音信号乘以该值。

如果值= 1,声音不会改变。

如果值= 0,则声音将关闭。

如果值> 1,则音量会增加(但是声音的质量可能会降低)。

如果值<1,则减小音量。

此属性应用于从麦克风读取的声音。 如果WAVUseOptions = True,则它也将应用于WAV文件中的声音。

# 11.1.11. WAVFileName 属性

property WAVFileName: String;
1

指定WAV文件的名称。

如果SourceType = rvsstWAV,则组件从此文件读取声音。

为该属性分配值不会开始处理文件。 分配此属性后,需分配Active = True(即使它已经为True)。

# 11.1.12. WAVUseOptions 属性

property WAVUseOptions : Boolean;
1

指定组件是否将声音选项应用于WAV文件。

如果SourceType = rvsstWAV,则组件从WAV文件读取声音。

如果为True,则在播放文件时将应用以下属性:NoiseReduction,SoundMinLevel,SoundIgnoreInterval,Pitch,VolumeMultiplier。

# 11.2. 事件

事件 何时触发
OnGetAudio 低级别事件,在获取音频时触发
OnOpenWavFile, OnReadWavFile, OnCloseWavFile 从WAV文件读取声音时会发生触发事件

# 11.2.1. OnOpenWavFile, OnReadWavFile, OnCloseWavFile 事件

打开WAV文件时,将发生OnOpenWavFile事件。

  • 参数:
    • WavSampleCount –文件中声音样本的计数
    • WavSamplesPerSec –采样率
    • WavBitsPerSample –位深度
    • WavChanneles –通道数

读取WAV文件时发生OnReadWavFile事件。

  • 参数:
    • CurSample –当前声音样本的数量
    • SampleCount –文件中声音样本的总数

关闭WAV文件时,将发生OnCloseWavFile事件。

  • 参数:
    • CurSample –最近读取的声音样本数
    • SampleCount –文件中声音样本的总数

如果CurSample <SampleCount,则中止处理。 如果CurSample = SampleCount,则对文件进行竞争处理。

# 12. TRVMicrophoneView 组件

TRVMicrophoneView显示麦克风活动。它可以指示通过网络接收到的声音数据。

该组件显示从麦克风(AudioSource)读取或通过网络(ReceiverSource)接收的声音信号的音量。

该组件可以单独使用,也可以集成在TRVCamMultiView中。

该组件不播放声音,它仅以视觉方式显示音频源的活动。

# 12.1. 属性

属性 属性说明
Orientation 指定内容的显示方向
Style 指定音量的显示方式

# 12.1.1. Style 属性

type // defined in MRVType unit
  TRVMicrophoneStyle = (rvmpsSimple, rvmpsHistogram, rvmpsGradient, rvmpsOwnerDraw);
property Style: TRVMicrophoneStyle;
1
2
3

指定音量的显示方式。

如果Style = rvmpsOwnerDraw,则可以在OnPaint事件中自己绘制组件。

值 说明
rvmpsSimple
rvmpsHistogram
rvmpsGradient
rvmpsOwnerDraw 任意在OnPaint事件中绘制的图形

# 12.2. 事件

事件 何时触发
OnPaint 允许绘制显示音量的自定义图像

# 12.2.1. OnPaint 事件

允许绘制显示音量的自定义图像。

在Style = rvmpsOwnerDraw中使用此事件。

可以根据“| Level-127 |”的“ Level”参数来计算音量。

# 13. TRVMediaServer 组件

TRVMediaServer可以通过网络实现多个TRVCamSenders与多个TRVCamReceiver的数据(视频,音频,命令,文件)交互。

  • 描述

    要启动服务器,请定义其HTTPPort和UDPPort,并分配HTTPActive和UDPActive = True。

    多个客户端可以通过网络连接到服务器。 每个客户端可能包含一个或多个TRVCamSenders和一个TRVCamReceiver,它们具有相同的标识符(TRVCamSender.GUIDFrom,TRVCamReceiver.GUIDMy; TRVCamSender.UseGUID必须为True)。 如果连接了具有相同标识符的第二个客户端,则服务器将断开第一个客户端的连接。

    同一客户端中的两个发送方可能需要使用不同的协议:第一个发送方可以使用UDP发送视频和音频,第二个发送方可以使用TCP或HTTP发送命令,二进制数据和文件。 协议在TRVCamSender.Protocol中指定。 TCP或HTTP发送者必须连接到HTTPPort,UDP发送者必须连接到UDPPort。 TCP或HTTP发送者必须具有TCPConnectionType = rvtcpSenderToReceiver。

    接收器始终使用TCP或HTTP连接到服务器。 它必须具有TCPConnectionType = rvtcpReceiverToSender。

  • 端到端

    如果两个客户端知道彼此的标识符,则它们可以通过服务器彼此发送数据。 可以在TRVCamSender.GUIDTo中指定其他客户端的标识符(或发送命令,文件等的方法的类似参数)。

    此类通信可用于实施私人对话。

  • 群组

    在客户端之间建立通信的另一种方法是将它们添加到同一组中。

    客户端可以通过调用TRVCamSender.JoinGroup将自身添加到服务器上的组中,并通过调用TRVCamSender.LeaveGroup将自身从该组中删除。

    现有组成员在TRVCamReceiver.OnUserJoinsGroup和OnUserLeavesGroup中得到通知。

    客户端可以通过调用TRVCamSender.GetUsersFromGroup来请求组成员的列表; 作为响应,将调用TRVCamReceiver.OnGetGroupUsers。

    数据的目标组可以在TRVCamSender.GUIDTo中指定(或发送命令,文件等的方法的类似参数)。

    此类通信可用于实现聊天室。

    使用MaxGroupCount属性可以限制组的数量。

  • 默认接收方

    在客户端之间建立通信的另一种方法是默认接收者列表。

如果发送方没有特定的GUIDTo和GUIDGroup,则发送方中的数据将发送到默认接收方。默认接收者可以用来实现联系人列表(以及允许的发送者)。

# 13.1. 属性

属性 属性说明
BufferOptions, TempFolder 这些属性定义缓冲选项
CmdOptions 用于处理来自客户端的命令的选项
FilterUserCmd 指定系统命令是否调用OnServerCmd事件
HTTPActive, HTTPPort HTTPActive打开/关闭HTTP服务器,HTTPPort定义服务器端口
GUIDMy 服务器标识符
KeepClientInfoMode 定义服务器如何保留有关客户端的信息
MaxGroupCount 定义服务器上允许的最大群组数
SenderConnectionProperties, ReceiverConnectionProperties 定义连接属性(超时时间和套接字类型)
SessionKey 返回当前会话的标识符
UDPActive, UDPPort UDPActive打开/关闭UDP服务器,UDPPort定义服务器端口

# 13.1.1. BufferOptions, TempFolder 属性

property BufferOptions: TRVBufferOptions;
property TempFolder: String;
1
2

这些属性定义缓冲选项。

在TempFolder中创建文件缓冲区。 如果TempFolder为空,则使用临时文件的系统目录。

# 13.1.2. CmdOptions 属性

type
  TRVCmdOption = (rvcpUseSystemCmd, rvcpCmdAllGroups, rvcpCmdAllUsers, 
    rvcpCmdAllOnline, rvcpCmdResetServer);
  TRVCmdOptions = set of TRVCmdOption;
property CmdOptions: TRVCmdOptions;
1
2
3
4
5

用于处理来自客户端的命令的选项。

值 说明
rvcpUseSystemCmd 允许在服务器上处理系统命令,仅当包括rvcpUseSystemCmd时,以下所有选项才有效
rvcpCmdAllGroups 允许客户端接收服务器上的组列表
rvcpCmdAllUsers 允许客户端接收服务器上所有客户端的列表
rvcpCmdAllOnline 允许客户端接收服务器上所有在线客户端的列表
rvcpCmdResetServer 允许客户端重新启动服务器

# 13.1.3. FilterUserCmd 属性

property FilterUserCmd: Boolean;
1

指定系统命令是否调用OnServerCmd事件。

如果为True,则仅针对寻址到服务器的命令(名称以RVS_或RVSU_开头)调用此事件。

如果为False,则所有命令(包括用户彼此发送的命令)都会调用此事件,前提是这些命令未经压缩就发送。

# 13.1.4. GUIDMy 属性

property GUIDMy: TRVMAnsiString;
1

服务器标识符。

不直接使用此属性,但建议将其作为参数AGUIDFrom传递给SendCommandToGUID。

# 13.1.5. HTTPActive, HTTPPort 属性

property HTTPActive: Boolean;
property HTTPPort: Word;
1
2

HTTPActive打开/关闭HTTP服务器,HTTPPort定义服务器端口,HTTPPort和UDPPort必须不同。

# 13.1.6. KeepClientInfoMode 属性

type 
  TRVKeepClientInfoMode = (rvkclmWhileOnline, rvkclmAlways);
property KeepClientInfoMode: TRVKeepClientInfoMode;
1
2
3

定义服务器如何保留有关客户端的信息。

此属性指定何时在服务器上清除有关客户端的信息。

值 说明
rvkclmWhileOnline 客户端在线时会存储信息,断开连接时,将删除有关此客户端的所有信息。
如果在每个连接上重新生成客户端的GUID,则可以使用此模式。
rvkclmAlways 即使客户端处于脱机状态(直到服务器重新启动),信息也会被存储。
如果客户端的GUID是持久的(并标识用户的个人资料),则可以使用此模式

# 13.1.7. MaxGroupCount 属性

property MaxGroupCount: Cardinal;
1

定义服务器上允许的最大群组数。

值0表示“无限制”。

建议限制组的数量,因为否则恶意客户端可能会创建新的组导致服务器内存不足。

# 13.1.8. SenderConnectionProperties, ReceiverConnectionProperties 属性

property SenderConnectionProperties: TRVConnectionProperties;
property ReceiverConnectionProperties: TRVConnectionProperties;
1
2

定义连接属性(超时时间和套接字类型)。

SenderConnectionProperties包含连接的发件人的属性(从客户端到服务器的数据)。

ReceiverConnectionProperties包含连接的接收者的属性(从服务器到客户端的数据)。

# 13.1.9. SessionKey 属性(只读)

property SessionKey: TRVSessionKey;
1

返回当前会话的标识符。

每次HTTPActive变为True时,此属性的值都会更改(增加1)。 当HTTPActive = False时,此属性返回0。

# 13.1.10. UDPActive, UDPPort 属性

property UDPActive: Boolean;
property UDPPort: Word;
1
2

UDPActive打开/关闭UDP服务器,UDPPort定义服务器端口。

HTTPPort和UDPPort必须不同。

# 13.2. 事件

事件 何时触发
OnDataRead 接收新数据时触发事件
OnPacketProcessing, OnConnectionCountChanged 这些事件允许显示有关服务器状态的信息
OnServerCmd 在从客户端接收命令时触发该事件
OnStart, OnStop, OnError 服务器启动或停止时发生的事件
OnUserConnect, OnUserDisconnect 在创建/关闭与客户端的连接时发生该事件

# 13.2.1. OnDataRead 事件

接收新数据时触发该事件,

这是一个低级别的事件。 它很少需要处理。

  • AData –收到的数据。

  • ADataType –数据类型; 它可以是*** _ DATA常量之一,也可以是其他值,这些值标识服务器用来维护连接的数据。

  • ASocket –从中读取数据的套接字。

所有GUID参数仅可用于TCP连接。 对于UDP连接,它们等于0。

  • GUIDFrom –数据发送者的标识符(如果有)

  • GUIDTo –数据接收器的标识符(如果有)

  • GUIDGroup –组的标识符(如果有)

在线程上下文中调用此事件。 在这种情况下,请勿更新用户界面(或进行需要主进程上下文的任何其他操作)。

# 13.2.2. OnPacketProcessing, OnConnectionCountChanged 事件

当接收或处理新数据包时,将发生OnPacketProcessing事件。 计数是累积的数据包数。

当连接计数更改时,将发生OnConnectionCountChanged。 计数是连接数(连接是TRVCamReceiver的通道)

这些事件对于显示有关服务器状态的信息很有用。 您可以指定显示服务器的繁忙程度。

# 13.2.3. OnServerCmd 事件

服务器接收到TRVCamSender.SendCmd(或某些其他发送方方法)发送的命令时,将发生此事件。

默认情况下,此事件仅由专门寻址到服务器的命令调用。这些命令的名称以“ RVS_”或“ RVSU_”为前缀。您可以设置FilterUserCmd = False来为所有命令调用此事件。

  • 参数:

    • GUIDUser 是发送方的客户端标识符(TRVCamSender.GUIDFrom)

    • GUIDToUser 是收件人的客户端标识符(TRVCamReceiver.GUIDFrom),此参数仅对从客户端寻址到客户端的命令有效。

    如果将命令发送到组,则GUIDGroup是组的标识符。

    ServerCmd包含命令数据。

在线程上下文中调用此事件。在这种情况下,请勿更新用户界面(或进行需要主进程上下文的任何其他操作)。

如果在事件内执行耗时的操作,则会检查SessionKey属性是否未更改(以确保未关闭或重新打开连接)。

# 13.2.4. OnStart, OnStop, OnError 事件

服务器成功启动其工作时,将发生OnStart事件。

如果服务器无法启动,则会发生OnError事件。

服务器结束工作时会发生OnStop事件。

# 13.2.5. OnUserConnect, OnUserDisconnect 事件

当创建/关闭客户端的TRVCamReceiver的通道时,将发生事件。

GUIDUser标识客户端,它等于TRVCamReceiver.GUIDMy。

MediaType是通道的数据类型。

这些事件在线程上下文中调用。 在这些事件中,请勿更新用户界面(或进行需要主进程上下文的任何其他操作)。

# 13.3. 方法

# 13.3.1. SendCommandToGUID 方法

function SendCommandToGUID(Cmd: TRVCmd; AGUIDFrom, AGUIDTo, AGUIDGroup: TGUID): Boolean;
1

将命令发送到AGUIDTo参数中指定的客户端。

  • 参数

    • Cmd是要发送的命令。 调用此方法后,请自己释放该对象。
    • AGUIDFrom必须等于服务器的GUIDMy属性(除非您要模拟来自另一个客户端的命令)。
    • AGUIDTo标识收件人(客户端接收方的GUIDMy属性)
    • AGUIDGroup可用于模拟发送给一组用户的命令。
  • 返回值 如果无法发送命令(例如,未连接此用户),则为False,否则为True。

# 14. TRVTrafficMeter 组件

TRVTrafficMeter显示摄像机,接收器和发送器的流量,该组件可用于调试或查找最佳设置。

该组件显示相机、发送器、接收器的图标和摘要。

  • 例子

    1. 发件人从摄像机获取数据并将其发送到网络; 您可以比较从摄像机接收并由发送方发送的数据量。 流量差异可能是由于以下原因:压缩,减小的帧尺寸,丢失的帧(如果发送方太忙,发送方可能会跳过帧)。
    2. 发送方将数据发送到网络,接收方接收数据; UDP或TRVMediaServer连接。 您可以查看已接收(丢失)了多少数据,并估算了带宽。

# 14.1. 属性

属性 属性说明
Camera 指定要显示其网络流量的摄像机
Language 指定用户界面的语言
Receiver 指定要显示其网络流量的接收者
Sender 指定发送方以显示其网络流量

# 15. TFSPlayer组件

  该组件用作播放控制,需要使用TPanel等组件来作为屏幕播放展示。

# 15.1. 属性

属性 属性说明
AspectRatio 设置视频的宽高比
AudioDriver 设置视频播放所使用的音频驱动
AudioHook 设置音频钩子
AudioVolume 设置音频音量,取值范围为0-128
Brightness 设置视频亮度
DisableAudio 禁用音频
DisableVideo 禁用视频
ExternalSubtitle 是否启用外挂字幕
FrameHook 是否设置帧钩子
FullScreen 是否设置全屏
Hue 设置色相
Mute 是否开启静音
Saturation 设置饱和度
VideoDriver 设置视频播放所使用的视频驱动
VideoHook 是否设置视频钩子
VideoPanel 设置视频显示画面使用的控件,通常可使用TPanel作为播放视频使用的背景
VerticalFlip 设置是否对视频进行垂直翻转操作
WaterMark 设置水印

# 15.1.1. AspectRatio

property AspectRatio:Double;
1

  设置视频的宽高比。

取值 说明
=0 保持源视频的宽高比
<0 视频会进行拉伸以适应播放控件的宽高比
>0 自定义的宽高比值,比如4/3,16/9,1.85/1,2.35/1

# 15.2. 方法

# 15.2.1. InitSDL

function InitSDL: Boolean;
1

  该方法用于检查播放控件是否已进行初始化操作。

  if FThis.FSPlayer1.InitSDL then
  begin
      // 在InitSDL后获取音频设备列表
     FThis.cboAudioDevice.Items.Assign(FThis.FSPlayer1.AudioDevices);
     if FThis.cboAudioDevice.Items.Count > 0 then
     FThis.cboAudioDevice.ItemIndex := 0;
  end;
1
2
3
4
5
6
7

# 15.2.2. Open

procedure Open(QUrl: UniCodeString; QPaused: Boolean);
1

  用于打开指定文件地址的视频。该地址可以是网络地址也可以是本地的目录地址。支持的类型包括RTSP、RTMP、HTTP、FTP以及本地地址。

//播放本地视频文件,使用打开文件对话框来获取视频文件地址
  if FThis.OpenDialog1.Execute(0) then
  begin
     FThis.FSPlayer1.Open(FThis.OpenDialog1.FileName,false);
  end;

//播放网络地址文件
  FThis.FSPlayer1.Open('http://example.com/sample.mp4',false);

//播放网络串流视频
  FThis.FSPlayer1.Open('http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8',false);
1
2
3
4
5
6
7
8
9
10
11

# 15.2.3. TogglePause

procedure TogglePause;
1

  暂停视频的播放。

# 15.2.4. StepToNextFrame

procedure StepToNextFrame;
1

  在视频暂停的情况下,使用该方法可使视频显示下一帧的画面。

# 15.2.5. Stop

procedure Stop(AwaitForStop: Boolean);
1

  调用该方法后,播放器将停止视频的播放,其中可指定是否等待控件进行停止播放的操作。

  FThis.FSPlayer1.Stop(true);
1

# 15.2.6. Capture

procedure Capture;
1

  调用该方法后,进行视频截图操作。截图后将打开资源管理器选择截图的地址。

# 15.2.7. ShowMsgLog

procedure ShowMsgLog(AShow: Boolean);
1

  调用该方法后,显示日志对话框,该方法通常用于调试。

FThis.FsPlayer1.ShowMsgLog(FThis.chkMsgLog.Checked);
1

# 16. TFSEnCoder组件

  该组件是视频编码组件,通过该组件可实现视频的编码,可用作视频的转码,流媒体视频的录制。

# 16.1. 属性

属性 属性说明
AudioDevice 设置视频录制所使用的音频设备名称,在设计阶段自动生成
DeviceType 设置录制视频的来源
InFileName 输入的文件的名称
InputOptions 设置输入选项
OutFileName 设置输出文件的地址
OutputOptions 设置输出的相关选项
PreviewAudio 是否设置预览音频
PreviewBitmap 是否设置预览图片
PreviewInterval 设置预览点的时间间隔
PreviewVideo 是否设置预览视频
ProgressInterval 设置进度条的时间间隔
PushFlow 是否进行推流操作
ThreadPriority 设置线程的优先级
TriggerEventInMainThread 是否设置主线程的触发器事件
VideoDevice 设置视频设备的名称

# 16.1.1. DeviceType

property DeviceType: TDeviceType;
1

  设置录制视频的来源。

名称 说明
dtCamera 相机作为视频来源
dtDesktop 将桌面作为视频来源
dtFile 将视频文件作为视频来源
dtWeb 将网络视频地址作为视频来源

# 16.1.2. InFileName

property InFileName: String;
1

  设置输入的文件、流的地址。

# 16.1.3. InputOptions

property InputOptions: TStrings;
1

  设置输入选项,该选项已随DeviceType属性进行默认配置,通常不需要进行更改。

# 16.1.4. OutFileName

property OutFileName: String;
1

  设置输出的文件或者流的地址,如果PushFlow选项为True,则该项中填写直播流的地址。

# 16.1.5. OutputOptions

property OutputOptions: TStrings;
1

  设置输出选项,该选项已随DeviceType属性进行默认配置,通常不需要进行更改。

  双击该控件,打开输出选项设置界面,可以自行选择输出的视频编码类型以及格式信息,点击确定后在OutputOptions属性中生成对应的样式参数文本。

# 16.2. 方法

# 16.2.1. Load

procedure Load;
1

  调用该方法加载视频文件,加载日志会提供在Log属性中。加载完成后,会有提示是否加载成功。

# 16.2.2. Start

procedure Start(AThreadCount: Integer);
1

  指定视频编码时程序使用的线程数量,开始进行视频编码。

# 16.2.3. Pause

procedure Pause;
1

  调用该方法,暂停视频编码。

# 16.2.4. Resume

procedure Resume;
1

  调用该方法,恢复视频编码。

# 16.2.5. Stop

procedure Stop;
1

  调用该方法,停止视频编码。

# 17. TChrome 组件

  此控件为一个不带UI界面的浏览器,可通过脚本向其中输入URL地址信息来进行页面载入。

# 17.1. 方法

# 17.1.1. CreateBrowswer

function CreateBrowser: Boolean;
1

  此方法用于在界面中创建一个浏览器实例。

# 17.1.2. Init

procedure Init;
1

  初始化浏览器。

# 17.1.3. URL

procedure URL(AUrl: String);
1

  此方法可用于打开指定URL的网页界面。

仪表采集控件
数据图表控件

← 仪表采集控件 数据图表控件→

Copyright © 2021-2025 爱招飞IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式