视频通话录制 方案 教程

一些基本概要

1   市面流行的音视频产品,都包含一对一、一对多、多对多通话,云端录制等这些基本功能,有些厂商支持本地服务录制。

2   本地服务录制,云端录制区别
两个录制区别在于,本地服务端录制的 SDK 要求部署在 Linux 服务器上,需要自己运维。而云端录制无需部署 Linux 服务器,只需调用API即可。

3   单流录制和混流录制模式区别

单流录制模式,一个录制进程下,同时录制多条音频流和视频流,将输出多个录制音频和视频文件;混流录制模式,一个录制进程下,同时录制多条音频流和视频流,仅输出一个录制音频或视频文件。

4 app增量大小

意为安装SDK后导出的app包体积增量,计算方式跟系统平台有关,如ARM、ARM64、x86、x86_64等。

5 一些视频编码格式

常用的包括h264、h265、vp8,简单区别在于

h264,最常用的视频编码,分辨率最高支持4k;

h265,h265 可以说是 h264 的继任者,效率要高很多,相同画质下 h265 比 h264 节省了大约一倍的带宽;

vp8,是Google开源的一种编码方式。

更多的区别可参考 链接1链接2

6 分辨率越高越好?

较高的分辨率也需要较高的码率来支撑,如果分辨率选择 1280 x 720,但码率却指定为 200kbps,画面就会有大量的马赛克。推荐参考 分辨率码率参照表 进行设置。

7  帧率越高越好?
由于摄像头采集的画面是曝光阶段中所有现实物体的完整映射,所以并不是帧率越高,感官就越流畅,这一点跟游戏里的FPS是不一样的。恰恰相反,帧率过高,会拉低每帧画面的画质,也会减少摄像机的曝光时间,效果可能会更差。

8  码率越高越好?
较高的码率也需要较高的分辨率来匹配,对于 320 x 240 这样分辨率,1000kbps 的码率就很浪费了,推荐参考 分辨率码率参照表 进行设置。

1.音视频方案对比

本次调研分两种方案,一是自研,包括app和后端代码;二是选取了市面上8家流行的产品方案,即腾讯、阿里、网易云信、声网、anyrtc、ZEGO即构、UCCloud、融云,这些厂商对比主要包括功能、价格、开发友好度方面。

1.1  自研

自研主要是利用成熟的开源项目进行二次开发,开源项目音视频通话和视频录制功能是独立的,需要开发人员自行组合开发。其中音视频通话有开源SDK,视频录制相关只能利用系统现有API开发

1.1.1 开源音视频通话SDK

流行的音视频通话开源框架支持server、web、android、iOS。本报告选取了GitHub上star数较多、更新活跃的框架。国外流行框架  jitsi meet,国内为  OpenIM。下表数据截止2023-01-15

服务端开发语言Javagolang
star数19.1k10.1k
GitHub链接GitHub - jitsi/jitsi-meet: Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.GitHub - openimsdk/open-im-server: IM Chat
开发文档Introduction | Jitsi MeetOpenIM Docs
去年更新频率

1.1.2 视频录制

至于录频,不使用第三方收费SDK的话,则需要开发人员利用系统原生API自行开发,涉及到的问题较多,包括录制、压缩、裁剪、导出、视频参数定义、权限定义、数据长链接、音频参数定义、消息广播等,录完后还需要存储在app本地,并上传到服务器,这里会牵涉到文件的断点续传。当涉及多个服务器时,还需要考虑服务器之间的消息同步。

结论:在自研时,由于涉及到多媒体视频的录制、上传、存储、日常运维、安全处理等,开发成本大、后期维护成本高,面临的不可控风险较多,所以不建议自研。

2.1  市面主流音视频通话产品分析对比

本次对比包括8家产品,一些都有的基本功能,如支持水印等,表中不展示。标红内容为需要注意的点。

视频通话和云端录制价格由分辨率决定。产品特点对比

       腾讯云        阿里云        网易云信          声网          anyrtc       ZeGo        UCloud        融云

链接https://www.tencentcloud.com/音视频通信(RTC)-阿里云帮助中心https://netease.imhttps://www.shengwang.cn/实时音视频_实时消息_实时互动_私有化-anyRTCZEGO即构科技 - 帮助全球企业即刻构建语音视频通讯能力UCloud文档中心实时音视频-音视频通话SDK-融云RongCloud
计费方式扣除10000分钟免费时长后,以实际使用分钟数计费以实际使用分钟数计费按月计费,月账单最小结算单位为千分钟,不满 1 千分钟部分按照 1 千分钟计算扣除10000分钟免费时长后,以实际使用分钟数计费扣除10000分钟免费时长后,以实际使用分钟数计费以实际使用分钟数计费扣除10000分钟免费时长后,以实际使用分钟数计费

费用组成有两部分:月功能使用费 + 超量费用,音视频通话和云端录制的月费为980元/月。

音视频通话包含含 200,000 分钟免费时长

视频通话价格

官网价格为美元

HD

3.99(约28元)/1000 分钟


Full HD

8.99(约63元)/1000 分钟


2K

15.99(约112元)/1000 分钟


4K

35.99(约252元)/1000 分钟

480P及以下

12 元/1000 分钟


720P及以下

24 元/1000 分钟


1080P及以下

90 元/1000 分钟

SD

15元/1000 分钟

HD

25元/1000 分钟


HD+

90元/1000 分钟

HD

28 元/1000 分钟


Full HD

63 元/1000分钟


2K

112 元/1000分钟

2K+

252 元/1000分钟

HD

16 元/1000 分钟

Full HD,

32 元/1000分钟

2K

56 元/1000分钟

2K+

128 元/1000分钟

SD

12 元/1000 分钟


HD

25 元/1000 分钟

HD+

98 元/1000 分钟

2K

112 元/1000 分钟

2K+

252 元/1000 分钟

SD

15 元/1000 分钟

HD

25 元/1000 分钟

Full HD

50 元/1000 分钟

标清

16 元/1000 分钟


高清

26 元/1000 分钟


超高清

66 元/1000 分钟


2K

106 元/1000 分钟


2K+

226 元/1000分钟

视频存储方式腾讯的云点播平台阿里云网易云信点播平台

1.声网自有平台

2.支持第三方平台。

Amazon S3

阿里云

腾讯云

七牛云

金山云

Microsoft Azure

谷歌云

华为云

百度智能云

1.私有存储-本地私有存储服务

2.支持部分第三方平台

阿里云

七牛云

1.即构自有平台

2.支持第三方平台。

AWS S3

阿里云

腾讯云

七牛云

阿里云 Vod(仅支持 MP4、FLV)

华为云

UC云自有平台

1.融云自有平台

2.支持部分第三方平台

AWS S3

阿里云

腾讯

七牛云

录频支持方式

云端录制

本地服务录制(暂未完全开放,需要联系客服开通)

云端录制云端录制

云端录制

本地服务录制

云端录制

云端录制

本地服务录制

云端录制云端录制
分辨率档位

高清(HD)

分辨率 ≤ 1280 × 720

全高清(Full HD)

1280 × 720 < 分辨率 ≤ 1920 × 1080

2K

1920 × 1080< 分辨率 ≤ 2560 × 1440

4K

2560 × 1440< 分辨率 ≤ 4096 × 2160

480P

分辨率 ≤640 × 480


720P

640 × 480< 分辨率 ≤ 1280 × 720


1080P

1280 × 720< 分辨率 ≤ 1920 × 1080

SD,480P

分辨率 ≤640 × 480


HD,720P

640 × 480< 分辨率 ≤ 1280 × 720


HD+,1080P

1280 × 720< 分辨率 ≤ 1920 × 1080

高清(HD)

分辨率 ≤ 1280 × 720(带宽:约420k左右)

全高清(Full HD)

1280 × 720 < 分辨率 ≤ 1920 × 1080

2K

1920 × 1080< 分辨率 ≤ 2560 × 1440

2K+

2560 × 1440< 分辨率 ≤ 4096 × 2160

高清(HD)

分辨率 ≤ 1280 × 720

全高清(Full HD)

1280 × 720 < 分辨率 ≤ 1920 × 1080

2K

1920 × 1080< 分辨率 ≤ 2560 × 1440

2K+

2560 × 1440< 分辨率 ≤ 4096 × 2160

标清 SD

分辨率 ≤ 480 x 360

高清HD

480 x 360 < 分辨率 ≤ 1280 × 720

超清HD+

1280 × 720 < 分辨率 ≤ 1920 × 1080

超清2K

1920 × 1080 < 分辨率 ≤2560 × 1440

2K+

2560 × 1440< 分辨率 ≤ 4096 × 2160

标清SD

分辨率 ≤ 640 × 360

高清HD

1280 × 720 <分辨率 ≤ 1280 × 720

超高清Full HD

1280 × 720 < 分辨率 ≤ 1920 × 1080

2K

1920 × 1080< 分辨率 ≤ 2560 × 1440

2K+

2560 × 1440< 分辨率 ≤ 4096 × 2160

标清480P

分辨率 ≤640 × 480


高清720P

640 × 480< 分辨率 ≤ 1280 × 720

超高清1080P

1280 × 720< 分辨率 ≤ 1920 × 1080

2K

1920 × 1080< 分辨率 ≤ 2560 × 1440

2K+

2560 × 1440< 分辨率 ≤ 4096 × 2160

使用该产品厂商好未来、新东方、VIP Kid等优酷来疯、学信网、VIP陪练等有道乐读、途牛旅游、蔚来汽车、西东方、快速问医生、智联招聘、OPPO等小米、众安保险、陌陌等官网未详细给出好未来、花椒直播、映客直播、酷狗KTV、翼卡车联网等爱奇艺、乐心医疗等汽车之家、携程、优酷来疯等
产品特色

1.每月免费10,000分钟时长,扣除时不是按照1:1,此处说明

2. 支持价格计算器,用于缴费预估

------

每月免费10,000分钟时长,按顺序1:1扣除,此处说明

每月免费10,000分钟时长,按顺序1:1扣除,此处说明---

每月免费10,000分钟时长

官网未说明扣除方式,需要咨询客服

1.每月免费200,000分钟时长

2.后台分开发环境、生产环境,开发环境免费使用,限量 1万分钟免费通话时长,免费通话时长可用于测试音视频通话、音视频直播、云端录制。

生产环境付费使用,需要预存月功能使用费,才能开通服务。

此处详解

云端录制价格

官网价格为美元

HD

5.99(约42元)/1000 分钟


Full HD

13.49(约98元)/1000 分钟


2K

23.99(约168元)/1000 分钟


4K

53.99(约378元)/1000 分钟

云端录制价格计算较复杂,可点击此链接查看

SD

15 元 / 1000 分钟


HD

25 元 / 1000 分钟

HD+

90 元 / 1000 分钟

HD

36 元/1000分钟


Full HD

81 元/1000分钟


2K

144 元/1000分钟


2K+

324 元/1000分钟

价格未展示在官网,需要联系客服。

点击此链接查看

云端录制最高支持1080P,以上就需要联系客服

单流录制、混流录制价格不同。
 

单流模式
SD

6 元/1000 分钟


HD

12.5 元/1000 分钟

HD+

49 元/1000 分钟

混流模式
SD

18 元/1000 分钟

HD

38 元/1000 分钟

HD+

148 元/1000 分钟

SD

15 元/1000 分钟


HD

25 元/1000 分钟

Full HD

50 元/1000 分钟


2k

100 元/1000 分钟


2k+

245 元/1000 分钟

标清

16 元/1000 分钟


高清

26 元/1000 分钟


超高清

66 元/1000 分钟


2K

106 元/1000 分钟


2K+

226 元/1000分钟

2.2  开发维度对比

主要聚焦在开发文档的更新频率、有无测试环境等。在查阅资料过程中,只有融云支持区分开发环境和生产环境。

在比较SDK大小时,有的官网未给出SDK的直接大小,只给了app增量大小;由于android端SDK大小跟系统架构有关,所以取中间值。

关于SDK大小,也会跟系统版本和SDK自身版本相关,下表相关数据仅供参考。

SDK支持最低版本

android 4.1

iOS 9

android 4.1

iOS 8

android 4.3

iOS 9

android 4.1

iOS 9

android 4.1

iOS 9

android 4.4

iOS 9

android 4.1

iOS 9

android 4.4

iOS 9

SDK大小

android 30m

iOS 39m

android 18.7m

iOS 21.7m

android 32.8m

iOS 32.8m

官网未给出具体大小,只有app引入后的增量范围,需要实测,此处了解

4.61 ~ 13.94 m

官网未给出具体大小,只有app引入后的增量范围,需要实测,此处了解

4.81 ~ 12.46  m

官网未给出具体大小,只有app引入后的增量范围,需要实测,此处了解

6.37 ~ 7.26  m

官网未直接给出相关信息,需要到GitHub下载demo后对比

官网未给出具体大小,只有app引入后的增量范围,需要实测,此处了解

8.6 ~ 20.1  m

开发文档https://www.tencentcloud.com/zh/document/product/647https://help.aliyun.com/product/61399.htmlhttps://doc.yunxin.163.com/nertc/docs/home-page?platform=linuxhttps://docs.agora.io/cn/video-call-4.x/landing-page?platform=Androidhttps://docs.anyrtc.io/cn/Video/product_videohttps://doc-zh.zego.im/article/5416https://docs.ucloud.cn/urtc/SDK/VideoStarthttps://doc.rongcloud.cn/home/index
传输协议UDP私有协议WebRTCUDP私有协议WebRTC+UDP 私有协议WebRTC+UDP 私有协议WebRTC+UDP 私有协议WebRTC+UDP私有协议WebRTC
视频编码

H264/AVC

H264/AVCH264/AVCH264/AVC
H265
VP8
H264/AVC
VP8
H264/AVC
H265
VP8
H264/AVC
VP8
H264/AVC

简要结论:通过是否有每月免费分钟数、视频分辨率档位、第三方云存储厂商支持度、视频编码格式、开发文档详细程度和更新频率等维度的比较,推荐声网。
##############################################################################################

3. web端 SDK数据补充,主要是声网

3.1 功能支持

支持美颜、屏幕共享,支持自定义摄像头视频源、屏幕共享视频源、文件视频源。
声网web SDK暂不支持修改原始音视频数据,如变声操作。app端支持

详情

3.2 浏览器支持度

支持为主流浏览器,
桌面平台包括macOS、Windows、ChromeOS,不支持linux端


移动端支持情况
android与应用版本和设备硬件有关,iOS只与系统版本有关

3.3 Web SDK视频通话流程

频道是SDK自动创建和删除的,客户端无需处理和维护。当所有客户端都离开一个频道时,频道自动被删除。此处详解

Web SDK 之间通话
①发起方创建一个频道

所需参数为 App ID 、用户 ID、Token、频道名称;
通过麦克风采集的音频创建本地音频轨道对象,摄像头采集的视频创建本地视频轨道对象,将音视频对象发布到频道中,此时一个频道建立成功。
频道定义了视频的编码格式和频道场景mode(有2种,通信和直播)
频道密码可以按需设置。远程用户加入后,可获取到远程用户的音视频对象。

②远端用户加入频道

在网页输入相同的App ID、频道名称和临时token,即可加入频道。

③离开频道

调用leave,该方法为异步,可随时调用。SDK会立刻销毁与当前频道相关的对象,包括订阅的远端用户对象、远端轨道对象、记录连接状态的对象等。

简单总结就是,发起方可以发给远端用户一个链接或二维码来进行视频通话。

app 与 web 之间通话

web SDK与app SDK默认是互通的,无需额外设置,所以视频通话流程与web之间通话类似。只要保证是同一个appid各个端都是可以互通的。

app可以通过调用joinchannel的API进入频道,如果此时对方还没有加入到频道中那么 app 端显示的是本地视频,对方加入之后,双方可以相互之间看到。

可以通过 频道管理 RESTful API 对频道进行设置,使app或web可以控制对方,比如禁用摄像头或麦克风,或将用户踢出频道。方法可参考 此处

关于 app 与 小程序

小程序本质还是web页,所以web的使用条件也适用于小程序。至于 app 唤起 小程序,则属于app 与 微信 SDK通信范畴,app是可以直接唤起的。

3.4 截图

3.4.1 实现方法

目前有三种方式实现截图功能,其余方式都是对以下形式的封装

①云端录制
通过 Agora 云端录制服务实现截图,详情请参考 云录制-进阶功能-视频截图 ,其中介绍了如何通过设置 RESTful API 参数对视频进行截图,并将图片上传至你的第三方云存储。

②本地服务端录制 SDK
可通过本地服务端录制 SDK 的截图功能获取到每一帧原始视频数据流。详情请参考 本地服务端录制-进阶功能-视频截图 ,其中介绍了如何通过命令行的方式获取视频截图,以便分析视频内容,例如对直播内容进行鉴黄以确保合法合规。

③原始视频数据回调
可通过裸数据接口获取到每一帧原始视频帧数据,从而实现截图功能。详情请参考 原始视频数据

3.4.2 触发方式

截图支持仅截图和录制并截图两种,有自动和手动截图两种类型。截图异常不影响视频录制服务。

①服务端

云端录制支持视频截图,属于自动截图,不能手动触发,可设置截图时间间隔,云端自动截取图片并上传至指定的第三方云存储,分辨率和视频一致。自动视频截图会一直监控着直播,中途无法停止,除非终止视频通话。此处详情

②app端

app支持截图,是对原始视频数据回调的封装。可以手动触发,截图会保存在用户客户端本地,需要调用SDK的图片上传功能,将其传到用户指定的第三方云服务中。

视频截图与视频截图上传是两个功能,都收费(收费规则比较复杂,此处详解),声网推荐使用客户端视频截图上传功能,此处了解

图片上传功能收费具体细则得咨询商务

图片分辨率与视频设置一致,与手机硬件无关。

而手机自带截屏与手机硬件有关。比如 1920*1080分辨率的手机播放一个640*480的视频,那么截图是1920*1080的,对视频本身的分辨率不影响。虽然分辨率高了,但还是不清晰。

比如,iOS手动截图的方法为 takeSnapshot,API地址在此处

③web端

目前Web SDK 暂未提供 类似takeSnapshot的客户端截图方法,还是需要利用手机系统自带截屏功能,通过声网视频截图上传服务实现。

3.5 兼容性问题

官网列出了桌面端和移动端浏览器一些常见问题,主要是兼容性,Web SDK问题还是挺多的,有些问题可以解决;有些没法解决,只能在业务层面提示用户。
Web端已知问题

①声网建议使用 VP8 视频编码。

使用 H.264 编码可能会导致开启硬件加速后出现一系列问题,包括帧率、码率、分辨率达不到目标值;视频花屏、黑屏;弱网环境下体验较差等

②桌面端严重问题

一些特定场景下chrome回声消除失效,safari某些版本音频断断续续,Firefox 只支持视频帧率设为 30 fps,与某些设备通信时,看其他端的画面会发生旋转。

③移动端严重问题

iOS浏览器在切换到后台时,音频流会发送中断。音频采集中断、音量极低、戴蓝牙耳机后播放音频有概率明显失真
android chrome上视频可能会花屏、发送码率无法达到Web SDK的预设值、戴蓝牙耳机后无法听到对方音频

④编码格式选择问题

若两端都使用Web SDK,则需设置编码为vp8;
若频道中有发送端使用Native SDK,由于 Native SDK 发送的视频流均为 H.264 编码,在不支持 H.264 的手机上 Web SDK 可以引入 H5 实时直播组件观看视频。

以上是节选出来比较严重的问题,更详细具体的可见FAQWeb端已知问题。截图是部分app端,桌面端未列出。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在FreeSWITCH中进行视频录制的配置需要涉及以下几个方面: 1. 配置录制格式: 你可以配置视频录制的格式,常见的格式包括MP4、WebM、H.264等。你可以在`vars.xml`或其他配置文件中设置`global_codec_prefs`参数来定义首选的视频编解码器。 2. 定义视频录制的Extension: 在配置文件(如dialplan.xml或extensions.conf)中定义一个Extension,用于匹配呼叫并触发视频录制操作。你可以使用`<extension>`或类似的标签来定义Extension,并在其中指定匹配条件和相应的操作。 3. 配置录制操作: 在Extension中,你可以使用`<action>`标签来定义录制操作。常见的录制应用程序包括`record_session`和`record`。你可以指定录制的文件名、路径、格式,以及其他参数,以满足你的需求。 以下是一个示例的FreeSWITCH配置,用于进行视频录制: ```xml <extension name="video_record"> <condition field="destination_number" expression="^(\d{4})$"> <action application="bridge" data="sofia/external/${destination_number}@your-sip-provider" /> <action application="record" data="/path/to/recordings/${strftime(%Y-%m-%d-%H-%M-%S)}.mp4" /> </condition> </extension> ``` 在上述示例中,当呼叫的目标号码为四位数字时,会执行`bridge`应用将呼叫转接到外部SIP提供商,并使用`record`应用以MP4格式录制通话。 请注意,实际的配置可能因系统版本、安装方式和需求而有所不同。你需要根据你的具体环境和需求来进行适当的配置。同时,还可以配置其他参数和应用程序来满足你的视频录制需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值