基于Nginx的RTMP流媒体服务器的搭建与配置

基于Nginx的RTMP流媒体服务器的搭建与配置

基于Nginx的RTMP流媒体服务器的搭建与配置

摘要:随着信息化社会的持续转变和成长,由此如今网络技术亦是一日千里。 早期的计算机只是出于军事需要而研发的,谁又能想到现在几乎每个家庭都能拥有一台或者多台计算机了呢? 也正因为计算机的普及人们对计算机的要求也就不只限于能够简单的交互信息,传输文件等了,人们开始研发出了新的功能,希望让计算机变得更加丰富和多元化起来。本文搭建的流媒体服务器本质就是借助流媒体传输协议如:RTMP、RTP/RTSP等流式协议,将本地的视频文件发送给客户端的播放器上,使得用户可以接收观看;除此之外流媒体服务器也可以向客户端传输实时直播的视频流。而在本次的论文设计中,我将使用国内的Ubuntu16.04长期支持版本作为本流媒体服务器的操作系统,在搭建该流媒体服务器的过程中我将配置Nginx模块从而搭建服务器、选取RTMP流式传输协议传输本地视频文件以及选用FFmpeg技术来做推流,最后就是安装VLC播放器播放被推流到本地流媒体服务器上的视频,另外为了便于操作和演示我所有的操作都将借助虚拟机VMware12完成的。

关键词: Nginx服务器;流媒体技术; RTMP协议;FFmpeg推流

Construction and configuration of RTMP streaming media server based on Nginx

Abstract: With the continuous transformation and growth of the information society, the network technology is also a thousand li. Early computers were developed for military purposes only, and who would have thought that almost every home now has one or more computers? Is because of the popularity of computer, people to the requirements of the computer is not only able to simple interactive information, transfer files and so on, people began to develop the new functions, hope to let the computer become more rich and diversified. This paper set up the essence of streaming media server is using streaming media transport protocol, such as: RTMP, RTP/RTSP streaming protocol, such as the local video files sent to the client's player, allowing users to receive watch; In addition, the streaming media server can also transmit live streaming video stream to the client. And designed in this paper, I will use the domestic Ubuntu16.04 long-term support version as the streaming media server operating system, in the process of building the streaming media server I will configure Nginx module so as to set up the server, select local video files and choose RTMP streaming transmission protocol transmission FFmpeg technology to do push flow, the last is to install VLC player play pushed flow to local video streaming media server, in addition to facilitate the operation and presentation I all operation will be done with the help of a virtual machine VMware12.

 Keywords:Nginx server; Streaming media technology; The RTMP protocol; FFmpeg push flow

目录

一、绪论 1

1.1  课题研究的背景 1

1.2、课题研究的意义 2

1.3、相关技术特点 3

1.4、课题研究的内容和实现的功能 6

二、核心技术 7

2.1、优麒麟简介 7

2.2、流媒体技术分析 7

2.3、 Nginx服务器架构 9

2.4、 FFmpeg 9

2.5、rtmp协议 10

三、基于Nginx的RTMP流媒体服务器的总体设计 11

3.1、基于Nginx的RTMP流媒体服务器总体设计方案 11

3.2、搭建基于Nginx的RTMP流媒体服务器 11

四、基于Nginx的RTMP流媒体服务器的配置命令 20

4.1、配置Nginx服务器 20

4.2、FFmpeg推流命令 21

4.3、VLC播放器实现 21

五、总结与展望 22

六、小结与致谢 23

七、参考文献 25

一、绪论

1.1课题研究的背景

互联网是从1969年开始逐步成型的,从最初的美国几所学校的4台电脑发展至全球都能通过互联网互联互通。由于现今社会生活质量的提高,目前市面上被广泛使用的计算机网络技术早已不是过去流传的技术可比拟的了,这一现象也就恰恰印证了因特尔公司创始人之一的戈登•摩尔当时所提出的那个著名的摩尔定律,凭此同时便也能印证其发展速度的可观性了。

我相信在未来我们的网络技术会不断进化发展,有许许多多新的技术会陆续涌现。最紧要的是随着互联网技术星罗棋布一般的遍及世界每一个角落,这也就直接使得计算机网络悄然慢慢转变为继平面、广播和电视媒体三大媒体后的第四大媒体传播体,由于这类新型的媒体效率高,交互强并且能够覆盖许多方面如:商业、金融、政府、医学、科研、教育等等,与我们的生活愈来愈密不可分。也正是因此人们慢慢得不再只是满足于传输和查阅文件资料,而是开始期望通过网络能更进一步的获得音频、视频等内容的多媒体信息,于是人们就遇到了一个不得不去面对的问题,那就是视频、音频传输需要花费大量的时间。换而言之做个假设就是倘若我现在手头上有一个1分多钟的视频文件,而我在一个56kbps的窄带网络上仍然需要花费半个小时才能完全下载好,即使我特别换用512kbps的ADSL最少也要花费超过一分钟以上的时间才能好,另外下载完成以后的播放形式也不一定能实现人们观看直播的愿望,因此人们在网上使用音频、视频交流就大大受到了限制,后来为了解决这个问题便产生了流媒体(Streaning Media)技术。

在这次论文设计中最重要的就是经过创建相应的流媒体服务器,利用对应的推流器将一个本地的视频文件推上去,实现在线观看的功能,而我将选用Nginx服务器,它原先为莫斯科国立鲍曼技术大学的毕业生Igor Sysoev替俄罗斯当时访问量居首位的站点设计开发的,由于它的代码是开源的,汇集了无数的智慧结晶,可想而知Nginx自2004年公开发表到如今的2018年,它技术的成熟性是绝对可以被认可的。在本次设计中选用Nginx也是由于它集合了全球人员的智慧,能够快速修复缺陷,功能更新,优化设计,并且他是开源软件任何人都可以在其官网上获取源码,并对它做进一步的开发和修改。Nginx经历了十多次较大的更新,更新频率非常高,也因此在本次系统设计中我也遇到了很多版本不一致的问题,后期为了解决这个问题我统一成了Nginx1.13.4版本。

配置并启动好Nginx服务器后,我还要解决的就是如何将视频文件传输到客户端,在这里我专门选用了RTMP (Real Time Messaging Protocol)作为传送本地视频的流式协议,一开始听名字我以为RTMP是传送实时信息的协议理所当然的以为它属于实时流式传输,但后来在网上查了许多资料后我才意识到它其实是顺序流式传输,要说具体如何辨别两者的区别,只要从它们的功能上来划分显然是很容易辨明,首先来说实时流式传输说白了也就是实时传送,它传输现场事件是最佳的,另外它存在一个限制条件那就是一定要匹配连接带宽,这代表着每当网络速度低下时传送过来的图像质量也不会高,如此一来便能降低对传输带宽的需求。其中实时的意思代表着在一个应用中数据交付和数据产生必须维系这分毫不差的时间关系,也就意味着必须借助相关协议的支撑了,再来说说顺序流式传输,它属于是顺序下载有别于实时流式传输,当传输时依据使用者连接快慢灵活做出调整。为了使系统更为简单所以我选择了顺序流式传输的方式。

由于FFmpeg作为编辑多媒体视频的自由软件富含多种用途,主要涵盖了录制屏幕、转变视频格式、图像捕捉等方面,所以我选择用它来把本地视频文件推流到客户端。除此之外我还尝试使用FFmpeg的转换视频文件格式的功能,把本地的视频文件MP4格式转化为了flv格式,使用了之前相同的推流命令,成功将flv格式的视频文件推流到了本地流媒体服务器上,也实现了播放功能。

1.2、课题研究的意义

中国宽带网络建设发展迅速,为了满足人们对媒体多种形式的需求,原来以静态图文为主体的网络内容形式已日渐趋向于内容更为丰富的媒体转变,流媒体技术也就由此映入了我们的眼帘,自它出世以来就一直被广泛的应用于新闻出版、广播传媒、金融商业、科教娱乐及其他多种领域里,促使用户可以使用丰富多姿的媒体形式获取以上各个领域的网络影音服务。

虽然目前我国的流媒体技术被应用的十分广泛,现下各大主流媒体都拥有属于自己的直播和点播系统,但至今仍存在的一个问题就是它还没有完全的形成自己完整的流媒体理论体系,并且大多数使用的还都是国外公司的核心技术来搭建自己的系统平台,另外就是这些系统规模也不够大,很多都需要重复建设,安全性也相对较低,如果要开展大规模的业务相对较为困难。所以这也意味着作为第四代媒体的Internet必须要超过另外三种媒体成长为最受人们欢迎的的信息交流平台,同时这也就是要求我们提高对该技术的安全性认识,并且最好是要上升到国家安全的高度来认识。总而言之,我们现在最需要的就是独立自主的开发业务平台并且要提高自主知识产权的认识,这样我们才能有进一步的技术突破和发展。

在我本次的论文设计中选用的就是开源软件Nginx来搭建我的流媒体服务器,我拣选它的缘由是:第一,它在研究服务器性能业务拓展上已然相当成熟了,而且它能最大程度上的使硬件并发运行,另外在软件里面又没有阻塞进程让它睡眠的代码,由此看来从性能上来说,它完全可以挑战任意一种服务器。第二,从开发的效率方面来研究绝对依赖服务器的事件驱动器是相当不可取的,它们关键解决的事件基本都属于细节方面的问题以及一些较低层次的内容,如此就直接造成了每个功能模块都不能全身心的汇集在业务上,从而使得最终呈现出来的功能都相对的较为单一,缺少丰富且可供选择的功能。而这点对于Nginx来说却不一样,因为Nginx在相应的架构上包含相较出挑的理念,所以Nginx可以直接选用众多简易的模块组成所需要的架构,甚至有时无需牵涉底层细微之处,完全可以在事件驱动架构中同时拥有着分阶段、零阻塞的特性,只要集中的实现它的业务功能,因此由于它的这个特性替Nginx吸引来了数不清的官方网站和第三方的功能模块,同时也就促成了具有丰富功能的Nginx以产品核心来看脱颖而出的竞争优势,也表明了它举足轻重的位置很难取代,经得起众多请求的考验和测试。

RTMP作为时下最受人们欢迎的实时消息传输协议之一,我相信再过不久,绝大多数的影像和声音信息都会借助网络传递到世界各地,流媒体网络传输的发展趋势是无可估量,可是要对这些数据信息进行大规模的传输也并不简单,然而RTMP和FFMPEG可以做到这一点,所以我在本次设计中就借助RTMP通信协议创建出了我自己的本地流媒体平台,从而将信息传递上去。

参考文献

[1]  李蔚泽.Ubuntu Linux全方位学习[M].北京:科学出版社,2008.

[2]  庄捷 流媒体原理与应用[M].北京:中国广播电视出版社,2007.

[3]  苗泽.Nginx高性能Web服务器详解[M].北京:电子工业出版社,2013.

[4]  孟庆昌、牛欣源 Linux教程(第4版)[M]北京:电子工业出版社,2016.

[5]  罗剑锋 Nginx完全开发指南:使用C、C++、OpenResty[M]北京:电子工业出版社,2017.

[6]  谭营军、王爱强 Linux网络管理[M]北京:机械工业出版社,2017.

[7]  陶辉.深入理解Nginx模块开发与架构解析[M].北京:机械工业出版社,2013.

[8]  孙超 流媒体服务器 Red5 的扩展设计、测试与优化[D]上海:上海交通大学,2009.

[9]  向华 流媒体服务系统核心技术的研究与实现[D]西安:西安电子科技大学,2014.

[10]  杜星 轻量级Web服务器Nginx的理论与技术研究[D]南京:南京邮电大学,2016.

[11]  张印.基于RTMP协议的流媒体系统的设计实现[D].成都:电子科技大学,2015. 

[12]  张远.视频会议系统中TCP/RTMP/Web Socket协议间转换的研究与实现[D].广州:华南理工大学,2016.


暂时没有评论

真实

多重认证,精挑细选的优质资源 优质老师。

安全

诚实交易,诚信为本。

保密

所有交易信息,都为您保密。

专业

10年专业经验,10年来帮助无数学子。