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

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

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

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

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

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

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 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. 说明
          • 2. 设计明细
          • 3. 程序设计
            • 3.1. 程序初始设置
            • 3.2. 事件设置
          • 4. 运行结果
        • 语音播报
      • 数据存取

      • 远程监控

    • 人工智慧

    • 实例运用

目录

视频推流

# Smart之视频推流

# 1. 说明

  范例通过视频解码的相关组件实现视频直播推流的操作。

  通过范例学习,可以掌握FSEnCoder进行直播推流的方式,并将其用作视频直播推流工具。

# 2. 设计明细

  开启Smart智慧控制平台,分别加入下插图之控件。或者通过点击菜单栏[文件]-[打开项目]选择项目打开该范例。

  ①:TButton组件,控件名称为btnLoad。

  ②:TButton组件,控件名称为btnStart。

  ③:TButton组件,控件名称为btnPause。

  ④:TButton组件,控件名称为btnResume。

  ⑤:TButton组件,控件名称为btnStop。

  ⑥:TCheckBox组件,控件名称为ckbPreview。

  ⑦:TEdit组件,控件名称为edtInputOptions。

  ⑧:TEdit组件,控件名称为edtInFileName。

  ⑨:TComboBox组件,控件名称为cbDeviceType。

  ⑩:TButton组件,控件名称为btnInputFile。

  (11):TButton组件,控件名称为FileInfo。

  (12):TEdit组件,控件名称为edtOutputOptions。

  (13):TEdit组件,控件名称为edtOutFileName。

  (14):TSaveDialog组件,控件名称为SaveDialog1。

  (15):TOpenDialog组件,控件名称为OpenDialog1。

  (16):TFSEnCoder组件,控件名称为FSEnCoder1。

  (17):TTimer组件,控件名称为Timer1。

  (18):TMemo组件,控件名称为memoLog。

  (19):TButton组件,控件名称为btnOutputFile。

  • Main窗体属性设置

    • ClientHeight:窗体客户区高度=427。
    • ClientWidth:窗体客户区宽度=627。
  • ①btnLoad属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=73。
    • Name:设置控件名称=btnLoad。
    • Caption:设置按钮显示的文字内容=加载。
  • ②btnStart属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=63。
    • Name:设置控件名称=btnStart。
    • Caption:设置按钮显示的文字内容=开始。
  • ③btnPause属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=53。
    • Name:设置控件名称=btnPause。
    • Caption:设置按钮显示的文字内容=暂停。
  • ④btnResume属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=51。
    • Name:设置控件名称=btnResume。
    • Caption:设置按钮显示的文字内容=恢复。
  • ⑤btnStop属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=59。
    • Name:设置控件名称=btnStop。
    • Caption:设置按钮显示的文字内容=结束。
  • ⑥ckbPreview属性设置

    • Caption:设置选择框显示的文字内容=预览。
    • Name:设置控件名称=ckbPreview。
    • Checked:设置是否显示勾选,设置为True。
  • ⑦edtInputOptions属性设置

    • Height:设置控件高度=21。
    • Width:设置控件宽度=316。
    • Name:设置控件名称=edtInputOptions。
  • ⑧edtInFileName属性设置

    • Height:设置控件高度=21。
    • Width:设置控件宽度=393。
    • Name:设置控件名称=edtInFileName。
  • ⑨cbDeviceType属性设置

    • Name:设置控件名称=cbDeviceType。
    • Height:设置控件高度=21。
    • Width:设置控件宽度=151。
    • Items:设置下拉框的选项,双击该属性或者点击属性右侧的[...]打开编辑器,输入选项。
  • ⑩btnInputFile属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=75。
    • Name:设置控件名称=btnInputFile。
    • Caption:设置按钮显示的文字内容=Browse...。
  • (11)FileInfo属性设置

    • Height:设置控件高度=25。
    • Width:设置控件宽度=75。
    • Name:设置控件名称=FileInfo。
    • Caption:设置按钮显示的文字内容=FileInfo。
  • (12)edtOutputOptions属性设置

    • Height:设置控件高度=21。
    • Width:设置控件宽度=547。
    • Name:设置控件名称=edtOutputOptions。
  • (13)edtOutFileName属性设置

    • Height:设置控件高度=21。
    • Width:设置控件宽度=467。
    • Name:设置控件名称=edtOutFileName。
  • (14)SaveDialog1属性设置

    • Filter:设置文件过滤选项=全部文件|*.*。
  • (16)FSEnCoder1属性设置

    • PushFlow:是否开启推流模式,设置为True。
  • (18)memoLog属性设置

    • Height:设置图片高度=251。
    • Width:设置图片宽度=618。
  • (19)btnOutputFile属性设置

    • Height:设置图片高度=25。
    • Width:设置图片宽度=75。
    • Name:设置控件名称=btnOutputFile。
    • Caption:设置按钮显示的文字内容=Browse...。

# 3. 程序设计

# 3.1. 程序初始设置

  设置解码器的初始模式。

constructor TMyHandler.Create(AOwner: TComponent);
begin
  FThis :=TBaseForm(AOwner);
  FThis.FSEncoder1.DeviceType := dtCamera;
  FThis.edtInputOptions.Text := FThis.FSEncoder1.InputOptions.Text;
  FThis.edtOutputOptions.Text := FThis.FSEncoder1.OutPutOptions.Text;
end;
1
2
3
4
5
6
7

# 3.2. 事件设置

  • ①btnLoad-OnClick事件

  点击[加载]按钮,设置输入输出选项,并加载视频。

procedure TMyHandler.btnLoadClick;
begin
  FThis.FSEncoder1.PreviewVideo := FThis.ckbPreview.Checked;
  FThis.FSEncoder1.InFileName := FThis.edtInFileName.Text;
  FThis.FSEncoder1.OutFileName := FThis.edtOutFileName.Text;
  FThis.FSEncoder1.InPutOptions.Text := FThis.edtInPutOptions.Text;
  FThis.FSEncoder1.OutPutOptions.Text := FThis.edtOutPutOptions.Text;
  FThis.FSEncoder1.Load;
end;
1
2
3
4
5
6
7
8
9
  • ②btnStart-OnClick事件

  点击[开始]按钮,开始进行视频播放并进行推流操作。

procedure TMyHandler.btnStartClick;
begin
  FThis.FSEncoder1.Start(1);
end;
1
2
3
4
  • ③btnPause-OnClick事件

  点击[暂停]按钮,暂停视频的推流操作。

procedure TMyHandler.btnPauseClick;
begin
  FThis.FSEncoder1.Pause;
end;
1
2
3
4
  • ④btnResume-OnClick事件

  点击[恢复]按钮,恢复视频的推流操作。

procedure TMyHandler.btnResumeClick;
begin
  FThis.FSEncoder1.Resume;
end;
1
2
3
4
  • ⑤btnStop-OnClick事件

  点击[停止]按钮,停止视频的推流。

procedure TMyHandler.btnStopClick;
begin
  FThis.FSEncoder1.Stop;
end;
1
2
3
4
  • ⑨cbDeviceType-OnChange事件

  点击切换设备类型时,将默认的参数传递至编辑框中。

procedure TMyHandler.cbDeviceTypeChange;
begin
   if FThis.cbDeviceType.Text = 'dtCamera' then
   begin
      FThis.FSEncoder1.DeviceType := dtCamera;
      FThis.edtInputOptions.Text := FThis.FSEncoder1.InputOptions.Text;
      FThis.edtOutputOptions.Text := FThis.FSEncoder1.OutPutOptions.Text;
   end
   else if FThis.cbDeviceType.Text = 'dtDesktop' then
   begin
      FThis.FSEncoder1.DeviceType := dtdesktop;
      FThis.edtInputOptions.Text := FThis.FSEncoder1.InputOptions.Text;
      FThis.edtOutputOptions.Text := FThis.FSEncoder1.OutPutOptions.Text;
   end
   else if FThis.cbDeviceType.Text = 'dtFile' then
   begin
      FThis.FSEncoder1.DeviceType := dtFile;
      FThis.edtInputOptions.Text := FThis.FSEncoder1.InputOptions.Text;
      FThis.edtOutputOptions.Text := FThis.FSEncoder1.OutPutOptions.Text;
   end
   else if FThis.cbDeviceType.Text = 'dtWeb' then
   begin
      FThis.FSEncoder1.DeviceType := dtWeb;
      FThis.edtInputOptions.Text := FThis.FSEncoder1.InputOptions.Text;
      FThis.edtOutputOptions.Text := FThis.FSEncoder1.OutPutOptions.Text;
   end;
end;
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
  • ⑩btnInputFile-OnClick事件

  点击[Browse...]按钮,打开浏览界面,选择输入的文件目录。

procedure TMyHandler.btnInputFileClick;
begin
 if FThis.OpenDialog1.Execute(0) then
 begin
   FThis.edtInFileName.Text := FThis.OpenDialog1.FileName;
   FThis.FSEncoder1.InFileName := FThis.edtInFileName.Text;
 end;
end;
1
2
3
4
5
6
7
8
  • (17)Timer1-OnTimer事件

  计时器触发事件,定时更新日志信息。

procedure TMyHandler.Timer1Timer;
begin
  FThis.memoLog.Lines.Assign(FThis.FSEncoder1.Log);
end;
1
2
3
4
  • (19)btnOutputFile-OnClick事件

  点击[Browse..]按钮,打开浏览界面,选择输出的文件目录。

procedure TMyHandler.btnOutputFileClick;
begin
 if FThis.SaveDialog1.Execute(0) then
 begin
   FThis.edtOutFileName.Text := FThis.SaveDialog1.FileName;
   FThis.FSEncoder1.OutFileName := FThis.edtOutFileName.Text;
 end;
end;
1
2
3
4
5
6
7
8

# 4. 运行结果

  通过工具栏保存,将程序保存为 sdb 项目文件。

  使用鼠标点击工具栏运行(Run),测试运行结果。

  程序运行后,在Device Types处选择输入视频源的类型,如果是本地视频则选择dtFile,并点击Input file/URL处的[Browse...]按钮以选择视频文件;如果是网络视频则选择dtWeb,并在Input file/URL文本框中输入地址。

dtCamera表示视频源来自于相机,dtDesktop表示视频源来自于桌面。选择完成后,点击[加载]按钮,在日志栏中如果出现Can do convert说明视频加载成功,可以进行编解码操作。点击[开始]按钮进行编解码操作,并将解码的视频按钮格式输出推流至指定地址。如果预览被勾选则会显示视频预览界面。在编解码的过程中可以选择[暂停]、[恢复]、[结束]按钮进行对应操作。

视频录影
语音播报

← 视频录影 语音播报→

Copyright © 2021-2025 爱招飞IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式