CDN加速

文档中心 推流SDK 推流SDK 移动推流器产品说明书

移动推流器产品说明书

更新时间:2021-07-23 10:59:37

产品概述

1. 产品名称

网宿移动端推流器SDK

2. 业务和范围

  为移动端(包含iOS、Android)的互动直播提供数据采集、编码、传输等功能服务,并提供包括美颜、混音等在内的辅助功能。

3. 术语和缩写

术语/缩写 英文全称 含义
RTMP Real Time Messaging Protocol 用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间进行音视频和数据通信。
码率 Bit Rate 码率又叫做比特率,是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快。码率直接影响直播过程所消耗的流量和发送时所需的带宽,与码率成正相关:码率越大,需要的带宽越大,同等时长产生的流量越多。
分辨率 Resolution 图像分辨率是单位英寸中所包含的像素点数,分辨率影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
帧率 Frame Rate 用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数 (Frames per Second,简称:FPS) 或“赫兹”(Hz)。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。帧率建议在 20-30 FPS 。

框架

  这样“修炼”的智能云WAF,防护值蹭蹭涨
  我们提供的网宿移动端推流器 SDK 压缩包里主要包含两大部分,一部分是核心的 SDK 层代码,作为黑盒代码部分是不可见的,另一部分是 Demo 层代码,作为白盒是可参考的。我们在 Demo 层展示了 SDK 层内部各个功能的调用逻辑,客户只需要在外层封装一层 UI 界面,并根据自身需要进行功能的设置,即可快速拥有一个高质量的推流器。

产品功能说明

数据采集

1. 摄像头
  SDK能获取到当前可用摄像头相关信息,妥善完成摄像数据采集工作。这些信息包括但不限于摄像头数量、像素、状态和权限情况。当未获取到摄像头权限时,依然可进行音频推流。当应用切换到后台时,由于系统的限制,摄像头将不再采集画面。

2. 麦克风
  SDK能获取到当前麦克风相关信息,完成音频采集工作。这些信息包括但不限于麦克风状态、权限。当未获取到麦克风权限时,依然可以进行单视频推流。当应用切换到后台时,可控制是否后台继续纯音频推流。

编码方式

  移动端推流器双平台均支持硬件编码和软件编码,可由 App 厂商自定义需要选择何种编码方式。一般当手机硬件不支持硬编时,会自动切换到软编。
硬编具备更好的编码效率,但兼容性不够优良,软编具备更好的兼容性,但同时也会更耗费性能。

软件编码

项目 描述
系统要求 Android 4.4 +(API 19+)
iOS 8 +
设备要求 Android:2013年及以后机型
iOS:iPhone 4s 及其以上
系统要求 Android 4.4 +(API 19+)
视频编码格式 H264
音频编码格式 AAC
底层 ffmpeg

  由于软编的画质和性能消耗有较大关系,客户可能对功耗和画面清晰度的权重有不同的权衡,鉴于此种情况的考虑,我们针对软编开发了质量优先和码率优先两种不同的编码策略。两种策略对比如下。

软编策略 优势 缺点
质量优先 画面运动时编码视频画质更清晰 1.Cpu消耗较码率优先略高、2.网络带宽消耗较码率优先略高
码率优先 码率稳定,性能好 画面运动时编码画质略差于质量优先

硬件编码

项目 描述
系统要求 Android 4.4 +(API 19+)
iOS 8 +
设备要求 Android:2013年及以后机型
iOS:iPhone 4s 及其以上
视频编码格式 H264
音频编码格式 AAC
底层 Android:MediaCodec
iOS:VideoToolbox

推流传输

  SDK 在完成采集和编码工作后,根据传入的参数,将直播流推到服务器端。该部分功能作为推流器工作的最后一环,针对不同网络环境进行了优化,并且通过底层队列实现了对直播流数据的管理。

帧率
  帧率范围 iOS 支持10 - 30 帧,Android 支持15 - 30 帧。App 可根据需要设置初始的预览帧率值,没有绝对的最优值,较高的帧率画面越流畅,同时对机器性能和带宽要求也会同步提高。Android 同时支持可变帧率,当环境光线弱时,可通过增加曝光时间,降低帧率,保证预览效果。

码率
  在开启码率自适应的情况下,码率会存在自适应上下限,如下表。在码率自适应关闭的情况下,码率会以用户设置的为准,建议在300 - 1500 kbps 区间。

分辨率 自适应下限 自适应上限
360P 400k 700k
480P 500k 800k
540P 600k 1000k
720P 800k 1500k

分辨率
  视频分辨率提供360P、480P、540P、720P,同时分辨率的比例提高16:9、4:3,在推流期间不支持改变采集的分辨率。

后台推流
  SDK切后台支持继续推流,此时摄像头将被释放不再采集视频,音频可继续采集推流。如若音频也被其它程序占用,例如打电话等,则 Android 将不再推流,iOS 的处理机制是推空包以继续维持推流,但也只能坚持 10 分钟左右即被系统回收。

扩展功能

美颜
  支持原图、磨皮、美白、红润、全屏美白、美肤平滑共6种美颜模式,同时各模式支持美颜等级调节。

滤镜
  当前滤镜提供了20种效果,分别是

这样“修炼”的智能云WAF,防护值蹭蹭涨

水印
  客户端支持添加水印功能,水印主要有图片和文字两种格式,Android 端还增加了 GIF 水印等扩展功能。

镜像
  镜像的定义先解释一下:照镜子时可以在镜子里看到另外一个“你”,镜子里的“人”就是你的“像”,在镜面成像中,你的左手你看到的还是在左边,你的右边你看到的还是在右边。举例,当用 iPhone 手机使用前置摄像头拍照时,拍出的照片是非镜像的。
明确镜像的概念后,再说明下当前 SDK 支持的镜像模式。支持预览画面镜像 开/关,和 编码推流画面镜像 开/关,并且没有限制前后摄像头。

混音
  支持从本地获取音频文件,包括但不限 于MP3/WAV 格式,为直播的用户实现音乐伴奏的混音效果。并且提供音乐播放中的各种状态回调。

混响
  支持混响等级调整,使直播音效呈现录音棚、演唱会、KTV、小舞台、大礼堂等等音响效果。

耳返
  在插耳机的情况下,将主播的声音从耳机再播放给主播的功能,不插入耳机,耳返将不生效。目前只提供了有线耳机和蓝牙耳机的耳返功能。

录制
  视频录制是录制的主播流,因此无法录制到客户自己加的特效评论等内容,对应支持格式、时间长度等如下:
• 支持 MP4/FLV/GIF 格式
• 录制时间:

  1. MP4/FLV 格式:SDK 提供录制短视频时间范围 [3s,60s]
  2. MP4/FLV 格式:SDK 提供录制长视频的最大文件大小
  3. GIF 格式:SDK 提供录制 GIF 时间范围 [100ms,5s]
• 录制结束,视频保存到本地文件夹

截图
截图格式为 JPG 。iOS 截图内容为全屏,Android 截图内容为全屏或视图截图。

代理
对于需要使用代理服务器的客户,SDK 可提供 IP、端口、用户名及密码的设置,来连接代理。目前代理协议支持 SOCKS5。

自定义 SEI 扩展字段
目前仅软编支持,推送 json 字段,可自定义内容,与网宿播放器配套使用即可实现答题等需求场景。

模块分层
为了满足客户对于直播推流的需求个性化,如客户可能想使用第三方的美颜方案,或只使用网宿推流等。我们支持采集、预处理、编码、推流进行自由耦合, 但需注意,当使用自定义视频源后部分功能可能会失效。

注意事项

移动端推流器 SDK 基于 ID 和 AuthKey 进行鉴权,不具备相应 SDK 权限的客户无法使用该服务。若使用我司多款 SDK,需要分别进行鉴权。鉴权操作在每个自然日内只需成功联网校验一次,之后将在本地执行校验,减少对网络的依赖性。

鉴权KEY获取地址