七牛目前已服务超过15万家用户,这些用户的应用场景也各有不同,最典型的应用场景可以分为三大类:音视频应用场景、图片应用场景及App分发类应用场景。我们希望通过对这些场景的全面解析的系列文章,可以帮助开发者们减少在云服务使用过程中的弯路。
这个系列先以音视频作为开篇的原因是,从七牛平台,我们看到了这个场景的巨大潜力。同时也相信,视频元年即将到来。
音视频类场景有个通用特点:对播放的流畅度要求高,对音视频处理的需求也比较旺盛。并且音视频的处理参数远多于图片,所以应用场景复杂度也是很高的。在本文中将从两种类型去总结。
一、音视频点播类应用
音视频点播资源来源主要有UGC的数据和客户服务端直接上传的数据,这类应用一般会关注下面几点。
1) 音视频支持转码的格式以及转码处理的触发场景
七牛用于音视频处理使用的库是FFMPEG,基本上常见的音视频格式七牛都支持。触发的场景可以是音视频上传后立即进行转码操作,也可以是通过七牛的pfop接口对已有的资源进行处理。
2) 针对UGC的数据上传的框架以及上传的速度
与图片类应用不同,音视频的文件通常比较大,所以建议使用七牛提供的断点续上传接口来保证上传的速度和稳定性。
3) 是否支持对音视频的直接播放
对音视频播放的支持依赖于播放器,包括网页端播放器和移动端播放器,原则上,只要播放器支持,那么存储在七牛的音视频资源就能直接播放。虽然播放器并不是七牛的业务,但是我们还是推荐两款优秀的在线播放器JW Player和Sewise Player。
4) 音视频在线播放是否流畅
流媒体文件的播放流畅程度主要依赖于CDN的缓存机制,七牛的CDN节点可以提供流媒体类型的文件缓存,保证视频流、音频流在播放时的稳定和流畅。不过还是建议对相同的源音视频转码成多码率的音视频,以保证不同网络状况下的用户都能无障碍访问音视频。针对视频而言,对视频进行HLS切片处理是我们推荐的。
5) 音视频私密性和安全性怎么保证
首先,针对所有的资源,用户都可以将资源的空间设置为私有,来保护资源的私密性,保证资源需要带下载凭证去访问资源。而对于私有的HLS文件,七牛提供pm3u8接口让m3u8索引文件和切片文件保持下载凭证的一致性。另外七牛提供HLS加密接口,可以满足用户对音视频的加密需求。还有https通道支持防窃听。
下面用七牛的两个客户案例来具体说明下:
1、美拍
美拍这样的短视频分享类APP,对七牛的需求就是上传稳定性要有保证,下载播放体验也要有保证。美拍目前对七牛的使用以及诉求可以概括为:
上传。需要保证上传的稳定性,由于七牛不限制任何用户的上传带宽,所以上传的限制会出现在七牛的客户这边,所以在正常情况下,美拍长时间持续大量并发上传并不降低美拍的服务体验。
视频播放的流畅性。在多终端、多网络情况下,经过七牛CDN加速的美拍视频播放体验依然是他的强项,当然视频比较短小也是播放流畅的重要因素,所以建议视频播放站能够考虑七牛提供的HLS切片服务。
2、唱吧
唱吧是七牛平台上非常典型的音频案例。七牛为其提供了一整套的多媒体解决方案,从音频的编解码到流媒体分发,从大规模文件的低成本、高可靠性存储到用户端的上传、下载双向加速。
点播类应用还有一个非常特殊的群体,那就是:在线视频监控。这类群体对实时上传,海量存储,以及方便的空间回收都有非常严格的要求。因为更为复杂,之后我们将用专门的技术结合案例来讲述。
二、音视频直播类应用
直播服务是随着用户量的增加应运而生的,点播服务的稳步发展,必然会催生直播的需求。直播服务包含交互与无交互两种需求,这两种有不同的延时需求。比如足球直播属于无交互的,延时可以在10s左右,而有交互的比如秀场,10s延迟就不能满足。而视频会议这种交互更是需要支持双向通信方式。七牛的直播服务已经在一些客户的生产环境中得到了应用。经过实践,这类产品一般初期会关注下面几点。
1) 直播服务需要用户自己提供硬件还是七牛提供硬件。
七牛支持RTMP推流, RTMP和HLS取流,有camera-sdk和player-sdk,也就是说,七牛既可以使用客户提供的摄像头,并将sdk烧录到摄像头中,那就不用关心推流协议,播放出来的可以是RTMP或者HLS;如果不修改摄像头,那可以直接搭建一台中转服务器接入七牛的API,直接推RTMP。
2) 直播流最多可以支持多少人同时在线
我们会根据客户的需求去调整并发支持的数量,一万路并发和十万路并发都是可以实现的。