本文档中会经常提到如下几个角色。
开发者是直播云服务的使用者,因此直播云服务的客户等同于开发者。 用户是开发者所推出产品的直接使用者,也是云直播云服务的间接使用者。 一个客户可以在其账号下创建一个或多个直播类应用,这些直播类应用互相独立,产生的费用由这个客户统一付账。
如上所述每个客户在直播云上都有一个登录账号,这个账号可以在直播云上创建多个独立的直播应用,直播云会给每个应用分配一个字符串作为这个应用的服务码,这个服务码唯一标识了相应的应用,同时直播云对应这个服务码会生成一个共享密钥,在访问直播云API时需要通过服务码和共密钥进行签名。详细见安全机制
直播云是一个视频处理平台,完成视频数据的接收、处理、转发、存储、分发等核心功能。
在本文档中提及的视频是一个统称,当文档中没有特别说明时,提及的视频即包含视频(图像)数据,也包含音频数据。如果只包含数据数据则会称作“仅视频”,如果只包含音频数据时会称作“仅音频”
流一般指通过网络传输的有序数据序列。如直播流,点播流。
一般来说容器格式表示视频数据的打包或者存储格式,如mp4文件,mp3文件,rtp包等。
编码格式一般指音频、视频数据的压缩方式,如h264, mpeg4, mp3, mpeg2,aac, amr等。
流传输协议一般有http, rtsp, rtmp等。
例如,我们说现在比较常见的m3u8视频,其视频单元的容器格式是mpeg2ts, 视频编码一般为h264, 音频编码一般为aac, 传输协议为HTTP.
如果请求发起的方向与音视频流的方向一致,我们称之为推。 如果请求发起的方向与音视频流的方向相反,我们称之为拉。
上图为拉流输入模式。由直播云向视频源发起请求,音视频流的方向是由视频源流向直播云。支持拉流输入的协议有 RTMP, RTSP, HTTP。
这种应用模式一般有:
将外部RTMP服务器上的直播源接入到直播云
通过创建任务API接口可以创建拉流输入任务
上图为直播源向直播云推流输入的模型示意图, 直播云建立服务并监听端口,直播源主动发起连接请求,音视频流的由直播源流向直播云,支持推流输入的协议有rtmp, xvs-tcp(直播云私有协议)
这种应用模式一般有:
上图为直播云向其他视频服务器流推流输出的示意图, 其他服务器建立服务监听端口等待连接,直播云主动发起连接请求,并将输出直播音视频流推向其他服务器。推流输出的协议有 RTMP, RTSP
这种应用场景比较少见,推流输出一般是用于将直播流输出到其他视频服务器,如Red5.
上图为拉流输出模型示意图,播放器播放直播云的输出音视频流都是以拉流输出的形式完成的。直播云建立服务,监听端口,播放器在获取直播地址后主动建立连接,直播音视频流由直播云流向播放器。支持拉流输出的协议有:. RTMP, HTTP(包括HTTP+FLV和HTTP+M3U8), RTSP
直播云管理的核心单元是任务,一个任务又包含以下几个关键元素:
通过API对任务的操作有:
正如前面任务概念中所说,一个直播或转码任务可以同时以多种格式或协议输出,而且每个客户的输出可能都是不一样的,因此直播云可以给每个客户定义一组输出格式,客户可以选择同时输出的所有格式,也可以选择其中的某一个或几个格式输出,每一个输出格式都有一个标签来标识,在选择输出格式时即以标签名称来匹配。
举例来说,下面是某个客户在直播云的输出格式定义:
<root>
<output tag="flv_output">
<extension>flv</extension>
<codec-a>aac</codec-a>
<codec-v>h264</codec-v>
<size>vga</size>
</output>
<output tag="flv_output">
<extension>flv</extension>
<codec-a>aac</codec-a>
<codec-v>h264</codec-v>
<size>qvga</size>
</output>
<output tag="m3u8_output">
<extension>m3u8</extension>
<codec-a>aac</codec-a>
<codec-v>h264</codec-v>
</output>
</root>
上面的xml字串,定义了三种输出,分别为
序号 | 格式标签 | 格式 | 音频编码 | 视频编码 | 其他 |
---|---|---|---|---|---|
1 | flv_output | flv | aac | h264 | 画面大小vga |
2 | flv_output | flv | aac | h264 | 画面大小qvga |
3 | m3u8_output | m3u8 | aac | h264 | 画面大小与视频源一致 |
在创建直播任务时,应用则可以根据需要选择输出那种格式,如果不指定或指定flv_output,m3u8_output
,则同时输出1,2,3这三种格式,如果指定flv_output
则同时输出1,2两种格式,如果指定m3u8_output
,则输出格式3
输出格式的配置即以上xml中内容不需要应用关心,只需要向直播云的客服说明需求,由直播云管理人员为应用创建,并建立相应的输出标签。应用只需要根据情况使用标签文本即可。