近年来,互联网高速发展,电视等传统媒体加速向媒体融合方向迈进,在三网融合等政策推动以及视频云技术、互动技术、大数据分析等新技术加速应用的背景下,无视频,不网络,短视频成为最重要的信息载体之一。构建高效的短视频平台,是慎之又慎的问题。短视频平台搭建离不开各项技术的支持,从云计算到推荐算法,从图像检测技术到大数据统计,不同的技术都给平台创造了新的发展机会。从架构的角度,本文探讨短视频平台的构建与技术选型问题,从以下几点进行介绍。
短视频平台数据量以PB、EB来计算,未来几年将以ZB和YB来计算。海量的数据存储处理需要搭建云平台。当下最优选择构建独立的云,具有降低成本,可开发性、可扩展性、可维护性较高等优势。目前市面主流的大型短视频平台都是自建云。
关于自建云的选型:考虑到平台面向各自不同需求的人群,选择SAAS平台较为方便,用户不用考虑技术问题,在平台上按需进行操作即可,平台本身提供完善的服务,目前国内的大型主流短视频平台都是自建SAAS平台。
SAAS平台构建要考虑如下内容,网络连接、存储、服务、虚拟化、操作系统、中间件、运行环境、数据、应用程序等。
构建SAAS平台,在OpenStack和Docker选型上,不是超大型SAAS平台,建议选择Docker。Docker维护难度较低。下图是Docker和OpenStack对比。
OpenStack在底层开发上有很大优越性,但OpenStack需要更多的技术投入和强大的底层运维能力,版本差别导致运维有很大差异。不是大投入平台,不推荐使用OpenStack。
Docker相对OpenStack,轻量级很多,门槛较低,使用性和可维护性都很高,提供了更多上层服务。
云平台业务层,采用Kubernetes。k8s已经主导了云业务流程,推动了微服务架构等热门技术在云上的普及和落地。k8s提出了基于容器技术的全新分布式架构方案,在容器技术领域的发展是一个重大突破与创新,具有重要的意义。
云平台是基础,是视频数据的载体。在视频数据背后,存在更多服务数据与应用数据,对数据的应用和分析是短视频平台的重要功能。
Hadoop与Spark是目前主流大数据分析应用平台,云平台基础上,进行大数据生态层的搭建。Haoop负责数据存储,Spark进行内存级数据运算。
Hadoop通过集群式存储,Spark进行内存级计算,K8s进行整体资源调度。三者相互配合,构建三位一体的数据生态层。
通过框架层,设置可靠、安全、可定制的功能服务。实现程序的模块性,加大程序的维护性和扩展性。
框架分类:组件部分、直播部分、计算部分、安全部分、监控运维部分、配置部分等。依据层级关系,分类进行建设。
框架服务包含用户服务和视频服务。主要模块有关系服务、搜索服务、推荐服务、敏感词过滤、存储服务、视频处理服务、AI服务、直播服务、转码服务、推流拉流等。
短视频平台必须拥有前沿流行的娱乐功能玩法,包含视频深度编辑处理、音视频特效等基础重要功能。涉及到的细分功能点高大上百个,比如断点续拍、回删、美颜、滤镜、人脸识别、贴纸等,关于视音频处理及特效技术是技术门槛极高的领域。涉及到音视频编程和人工智能技术。考虑到应用平台可以分为移动端、PC端、web、服务器端。移动端分为IOS及安卓,存在着更多适配和兼容问题,所以开发的工作量大、难度高、一般选用第三方SDK进行实现。
今天,互联互通已经成为现实,未来将有更大发展。每时每刻几十万级的请求。业务层必须保证高并发需求,短视频平台必须是一个高并发平台。
Spring Cloud是一系列框架的有序集合。Spring Boot巧妙地简化了分布式系统的开发,做到一键启动和部署。包含简单易用、易部署、易维护的分布式系统开发工具包。
Nginx是一个轻量级、高性能、稳定性强、并发性好的反向代理服务器。具有反向代理、负载均衡、动静分离的功能。
Kafka是分布式发布-订阅消息系统,是一个可划分、冗余备份的持久性日志服务。处理活跃的流式数据,负责短视频平台数据流消息通讯。
redis纯内存操作,拥有高效数据处理能力,是数据高速访问的利器。采用了非阻塞I/O多路复用机制,保证数据的实时应用。
CDN接入服务,中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
推流拉流是短视频平台必须的功能,通过服务协议进行,包括HTTP + FLV、RTMP、HLS、DASH、RTC协议类型。
短视频平台属于高流量平台,客户端包含电脑端和手机端。电脑端应用层分为Web实现和应用程序实现,手机端应用通过App进行实现。App又可分为Android App和IOS App。
Web层方便电脑用户应用,也为App请求提供服务。Web层功能实现主要靠业务层提供支持。
Web层技术选型主要是动态语言和JS框架。JS框架的选型,没有特别要求。动态语言建议采用PHP,相对灵活,较快上手,目前市场上应用较多。
客户端应用程序通过盒子技术来实现,建议对Chrome进行封装。相比IE,Chrome有更底层操作。
App在整个平台的末端。视频特效的实现,主要通过App客户端完成。程序员调用视频特效SDK,进行各种特效的实现。对应App的开发,技术选型成熟固定,本文不再阐述。
特效功能的实现,往往通过调用第三方SDK来实现。音视频特效功能关系到App开发的成败。
关于第三方SDK的选择有两点建议
1.必须是要有亿级以上用户的APP接入过,或者是对技术指标要求极高的智能手机厂商深度合作过的第三方SDK厂商。稳定性是首选,不能一遇到Corner+Case就分分钟崩溃,也不能有点问题只能接入方自己写补丁。支持硬件较差的设备,同时内存抖动、CPU占用率和帧率一定要满足需求,有详细的开发文档和及时相应的技术服务。
2.功能必须足够完善,不能有太多二次开发工作量。很多人觉得,一个SDK必须要足够灵活,支持足够多的自定义功能——然而实际上这是一种贪多嚼不烂的坏习惯。用第三方的SDK本身就是为了节省时间和人力,花N天去筛选、测试、接入和学习之后,还要再花N天数去做二次开发?那跟从一开始就自己写一个没有区别。SDK跟应用的关系,不是游戏引擎跟游戏的关系,应该拿过来就能用,不需要太多配置就满足需求,不要太多学习门槛就能用。
短视频SDK是一个工具包,对图片、音视频进行处理,可以对流媒体进行编辑,包括视频拍摄、编辑、合成、特效、动画等音视频制作。美摄科技的SDK拥有灵活的技术架构,使用多线程和GPU、CPU协同预处理机制、自然语言处理演算法等技术,帮助程序开发者快速进行音视频、图片渲染处理。快速开发出高性能的音视频程序。符合互联网时代音视频发展应用的需求。
美摄科技SDK以GPU/CPU/Hardware Codec并行计算为基础,在2D/3D、FFMPEG、H.264、H.265、计算机图形学等基础上,对媒体流进行渲染。以C++为处理语言,形成核心类库。核心库为:libNvStreamingSdkCore.so。该类库可以在Android、iOS、macOS、Windows、Linux、Web上应用。功能包括:视频录制、视频编辑、音乐编辑、字幕处理、动画贴纸、转场、特效、合成等。
短视频平台具有大数据、高并发、智能性的特点,系统建设相对复杂,技术选型与平台架构,是短视频平台建设的第一步。
特效让音视频有更好的表现张力,是短视频平台建设的核心技术指标,关系到平台建设的成败。特效开发一直是一个比较专业的领域,相比常规信息应用系统开发,流媒体开发规范多、专业性强,往往通过SDK进行实现。对短视频SDK的选择,稳定性、功能性是一个必须考虑的问题。