流媒体之老黄谈流媒体服务与视频网站研发

今天应公司领导的要求做完了来公司的第三个项目流媒体服务与视频网站开发,接近年终,博客停更了好久,心里一直不甘,上周六和北理工的好兄弟安老板定下誓言,每天保证五篇技术博客的更新量,年终上线三大社区。作为第一篇我来和大家分享下我做流媒体搭建和视频网站研发的一些心得体会。

流媒体之老黄谈流媒体服务与视频网站研发_第1张图片

流媒体服务器

流媒体之老黄谈流媒体服务与视频网站研发_第2张图片
流媒体服务器我们首先要明白他的本质是什么,还是回到我之前说的,服务器,单纯的服务器就是一台机器,就像我上边的这张图片,大家可以把它看做就是一台电脑主机,寡而无味。但在我们“耳闻”中听到的往往是什么应用服务器,数据库服务器,文件服务器,流媒体服务器,Web服务器等等,区别是什么呢?就是在该服务器装了拥有哪些特殊功能的应用,譬如你在这台机器上搭建了FTP,那么他就可以叫做FTP文件服务器,你在上边安装了流媒体相关的软件那他就可以叫流媒体服务器,当然为什么可以安装这些呢?就是我在之前的博客提到的虚拟化和容器技术(感兴趣的可以去翻看我的老黄谈容器的博客),服务器机房我每天都接触而且也多次参与过机房服务器的搭建扩展工作,所有这些东西汇集起来我们就称之为云计算,所以流媒体服务器也是云计算的一种只不过功能用于处理流媒体文件。作为视频流技术的核心,无论是我们接触的各大直播网站像Bilibili,虎牙直播,斗鱼直播,还是现在流行的移动终端APP像抖音,快手,流媒体服务器都扮演着至关重要的角色,市面上我们大多接触的是第三方的流媒体服务,像我之前开发过的基于环信SDK的直播类APP,原理便是通过第三方接口进行主播推流和用户拉流的技术。但我在这边博文中要说的是如何搭建我们自己的流媒体服务器在下边的模块概述中我将详细介绍具体步骤。

直播和点播的原理

直播和点播是完全不同的两种视频技术,直播讲究实时性,我们需要实时的处理视频流数据,根据支持显示的格式,甚至需要实时的进行视频流的转码和解码,对服务器而言直播不会占用存储,当主播推流结束的时候整个直播也就宣告结束了。点播则不同,点播处理的是固定格式的视频文件,我们往往是自己手中拥有一个某种格式的譬如MP4,FLV,M3U8的固定大小的视频文件,然后在具体的应用中由UP主上传到流媒体服务器,我们在网站或者APP中点播完成的。所以我们可以这样理解直播是网红主播的技术,比如你昨天看到的LPL赛区的AllStar,点播则是UP主上传视频的技术例如B站某位定时上传VLog的女装大佬。在流媒体数据传输方面直播需要终端实时进行视频推流,在推流的过程中实现视频转码,同时生成拉流的URL,点播则不同,我们只需要将视频文件放到固定位置,然后通过配置静态服务器进行访问就可以了。

强大的转码工具和前端组件实现

在用Nginx搭建流媒体服务器的过程中主要用到的是包含rtmp模块的软件,首先需要下载nginx。在nginx官网上下载的nginx是不带rtmp模块的,所以在http://nginx-win.ecsds.eu/download/中下载nginx 1.7.11.3 Gryphon.zip,该版本的nginx包含rtmp组件,通过rtmp组件,才能提供流媒体服务,使nginx成为rtmp流媒体服务器。具体安装配置我不在多说比较简单,大家也可以百度。这里重点说下ffmpeg,这一个功能强大的视频流转换工具,你可要将固定格式的视频文件进行转换,也可以将终端摄像头的实时画面进行转换(亲测可用),但在转换之前必须将Nginx启动,因为我们在转换命令中会生成基于本地IP的URL。当然Nginx只是其中的一种你也可以用微软的IIS或者Apache进行搭建,详细流程不在概述。前端实现因为我搭建的是RTMP流媒体服务所以用到了Video.js这个组件,当然国产的CKPlayer也不错(API比较齐全),作为有过Android开发经验的我前端开发不要太简单,其实配合关系型数据库进行界面设计,我们完全可以做出可以媲美任何一个我们熟知的视频网站的效果,后续我也将在我的柯小胖二次元社区网站进行实践,感兴趣的可以关注我的博客动态。

聊聊Nginx

流媒体之老黄谈流媒体服务与视频网站研发_第3张图片
Nginx这里引用百度百科的一段话:“Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。”总结来说就是小而强大,其采用的异步单进程方式远胜过老牌Web服务器Apache同步多进程的并发处理能力。在当下的分布式集群中Nginx主要有以下几点核心功能:1、动静分离。动静分离往往是动态文件以及业务逻辑代码交由应用服务器,Nginx负责处理静态文件。 2、负载均衡指的是动态文件静态文件都在应用服务器,Nginx通过反向代理接受客户请求,然后根据算法或者配置好的权重进行请求的转发(Hash算法)。3、 针对不同的应用提供不同映射的URL。

你可能感兴趣的:(项目研发,前端开发)