本节主要罗列了一些系统层面的常见问题,具体模块的常见问题还可以参考以下页面:
有两种方式可以得到视频的直播地址和点播地址,一是主动调用直播云的API来获取直播列表(参见获取任务列表),也可以开发一个简单的HTTP服务,接受直播云在直播开始/停止/存档事件发生时发来的HTTP POST回调请求,参见API文档中的通知回调。关于这个问题在编程模型中也详细的做了说明。 ..
在决定输出哪些格式时,首先需要回答以下问题:
针对以上问题查询下面的表格,就可以得出结论
视频格式/协议 | 直播延迟 | 延迟是否有累积 | 支持的播放器 | 并发 | 存档 |
---|---|---|---|---|---|
HTTP+FLV | 2秒左右 | 是 | wmp, sdk-player | 200以内 | 可边直播边存档,配置为边直播边存档时直播时间有限制(8小时内) |
HTTP+M3U8 | 5~10秒 | 是 | wmp, sdk-player, system-player | 无限制 | 可以边直播边存档 |
RTMP 拉流 | 1秒 | 否 | wmp, sdk-player | 无限制 | 不支持存档 |
RTSP | 2~5秒 | tcp有累积 udp无累积 | sdk-player | 200以内 | 不支持存档 |
MP4 | 不支持直播 | 不支持直播 | sdk-player, system-player | 点播无限制 | 专用于存档 |
上表中 system-player指的是android, ios设备上自带的播放器,sdk-player是指沃安提供的ios,android平台开发包中带的播放器,wmp指的是沃安提供的用于网页播放的flash插件
支持系统播放器播放有以下好处:可以用于微信分享,因为在微信中不允许调用外部播放器; 另外系统播放器一般都使用了硬件加速,播放高清视频更流畅,更稳定。
降低延迟是一个系统性工程,需要从采集端、播放端,网络几方面来考虑。下图是一个用手机SDK直播的场景,图中1,2,3分别为延迟产生的地方。
如图中所示SDK中的采集线程从摄像头采集数据并编码后写入到客户端的缓冲区, 发送线程从缓冲区读取数据并通过网络发送,当网络不好时发送数据速度慢于编码产生数据的速度,发送缓冲区就会增大,这时播放端接收不到数据就会卡顿,当网络恢复正常时客户端很快将缓冲区的数据全部发送出去,播放客户端将数据全部接收下来,但由于播放时顺序播放,虽然前面缓冲的数据全部接收下来了,但还是要按正常速度播放,这时延迟的时间就是前面卡顿时累积的时间。
要解决延迟累积,必须选择实时直播的协议如RTMP,FLV,RTSP这三种输出协议。参见输出格式的选择, 并在播放时丢弃过期的数据,需要降低延迟,需要通过以下方法减小图中三个地方的缓冲。
-live
参数, 参考Android平台 Player 和 iOS平台 Player这样在flv或rtmp的直播流时,播放器就会丢弃接收缓冲区中的数据,总是播放最新的数据。如果是浏览器则使用直播云网页播放插件见资源下载任何支持rtmp推流的终端/设备都可以向直播云推流,也可以使用我们提供的网页插件在PC浏览器中向直播云推流。 使用设备或其他软件向直播云推流时,必须填写完整的推流地址,推流地址的格式如下:
rtmp://xvs-tcp-input.zhiboyun.com/live?user_name=用户名字串&password=用户密码字串&service_code=服务码字串&output_tags=输出格式标签列表&opaque=
解释一下以上的推流地址格式:
rtmp://xvs-tcp-input.zhiboyun.com/live
为推流固定地址,不管是什么客户什么服务码都是向此地址推流。user_name
推流认证用户名,此参数必须有password
推流认证用户密码, 此参数必须有service_code
服务码,此参数必须有,有关服务码的概念见这里 output_tag
可选参数, 输出格式标签, 格式标签的概念见这里,如果服务码对应的应用配置了三种输出格式例如标签分别为output_rtmp, output_flv, output_m3u8,则如果此处不填写,则匹配全部,即同时输出三种格式,如果填写output_rtmp,output_flv
, 表示同时输出output_rtmp,output_flv对应的两种格式。注意有多个输出格式标签时,必须用逗号分隔,且不能带有空格opaque
当前推流任务的透传参数,透传参数的概念见这里, 注意,透传参数中有特殊字符时,一定要做url转义。点这里有一个在线urlencode的网站一般情况下,直播云上的输出地址是随机生成的,如果应用需要固定输出地址,则可以参考以下说明:
如果是直播,以上输出配置都需要使用 live-only 配置项。不使用此配置项,则会存档,而在固定输出地址情况下,存档是无意义的,因为下次直播会覆盖上次的存档视频。如果需要存档则再使用一个output配置项。
固定直播地址,有以下几个注意点:
分辨率 | 码流(低)/对应所占带宽 | 码流(中)/对应所占带宽 | 码流(高)/对应所占带宽 |
---|---|---|---|
320x240 | 224/240~288 | 320/296~400 | 425/448~496 |
480x360 | 336/400~480 | 480/528~616 | 624/624~824 |
640x480 | 448/352~480 | 640/624~760 | 832/753~982 |
720x480 | 504/464~616 | 720/672~840 | 936/880~1088 |
1024x768 | 716/616~816 | 1024/672~1096 | 1331/1200~1696 |
1280x720 | 896/704~992 | 1280/1120~1440 | 1664/1560~1840 |
1600x1200 | 1120/1032~1680 | 1600/1352~2048 | 2080/2000~2576 |
1920x1080 | 1344/1384~1616 | 1920/1712~2080 | 2496/2720~2880 |