rtmp、rtsp、hls流媒体直播服务器搭建的六种方案

rtmp、rtsp、hls流媒体直播服务器搭建的六种方案

rtmp、rtsp、hls流媒体直播服务器搭建的六种方案

流媒体直播视频随着自媒体直播的到来,变得越来越欢迎,从短视频营销到直播电商的崛起,直播让每个人都在传播知识和文化,带动电商的发展,今天我们来讲讲流媒体的一些知识及如何搭建流媒体直播服务器rtmp、rstp

一、协议解释

流媒体直播的协议主要有以下几种:

1. AMF

  AMF(是Action Message Format的缩写)是在flash和flex中与远程服务端交换数据的一种格式.它是二进制格式,Flash应用与服务端或数据库通过RPC交换数据时,通常都采用这种格式。AMF 1 诞生于Flash Player6,发展到现在已经变成了了AMF3

2. RTMP

  RTMP是Real-Time Messaging Protocol(实时消息传送协议)的缩写,它是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的协议。这是一个标准的,未加密的实时消息传递协议,默认端口是1935,如果未指定连接端口,那么flash客户端会尝试连接其他端口,其尝试连接顺序按照下列顺序依次连接:1935、443、80(RTMP), 80(RTMPT).RTMP协议是被Flash用于对象,视频,音频的传输.该协议建立在TCP协议或者轮询HTTP协议之上。  

3. RTMPT

RTMP的变种,此协建立在HTTP协议之上,是通过HTTP封装后的RTMP协议,默认端口80.

4. RTMPS

  RTMP的另一个变种,此协议是通过SSL加密的RTMP协议,为数据通讯提供安全支持。SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议。SSL在传输层对网络连接进行加密。默认端口443。

5. RTMPE

RTMP的变种,RTMPE是一个加密版本的RTMP,和RTMPS不同的是RTMPE不采用SSL加密,RTMPE加密快于SSL,并且不需要认证管理。如果没有指定RTMPE端口,Flash播放器将像RTMP协议一样依次扫描下列端口:1935(RTMPE) 443(RTMPE) 80(RTMPE) 80(RTMPTE)

6. RTMPTE

  RTMPTE 这个协议是一个通过加密通道连接的RTMPE,默认端口80.

7. RTMFP

  RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。此方案提升了目前Flash Player在网络交互方面的体验。RTMFP将减少直播、实时聊天方案的带宽消耗,例如音视频聊天和多人游戏。因为RTMFP的数据在终端用户之间流动,而不是和服务器,所以此方案很适合于大范围的部署。RTMFP因为采用了UDP也提升了传送的速度。UDP是Internet上一种更有效传送音频视频的方法,虽然会有一些丢包,错包。RTMFP有两个特性可以帮助解决一些连接错误。   快速连接恢复:连接在以外情况下将快速恢复。例如,一个无线连接掉线了,一旦重连,他将迅速拥有所有的传送能力。   IP动态化:一个活动的网络会话将以PEER来标识,即使他变了一个IP,也可以保持原来的会话。例如,一个笔记本在一个无线网络获得了一个新IP地址,他将立刻继续刚才的会话。   RTMP和RTMFP之间的不同,最根本的是他们在网络上采用的协议。RTMFP是基于UDP的,RTMP是基于TCP的。UDP在传送直播数据方面比TCP还是有较多优势的,比如减少延时,对丢包的容忍,虽然在可靠性上有所损失。RTMFP支持Flash Player直接发送数据给另一个,而不经过Server,服务端连接将被用来初始化并交互一些客户端之间的信息,也可用来进行服务端调用或者作为进入其他系统的网关。

8、RTSP

RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。

一、搭建流媒体直播服务器器的六种方案

1、Adobe media server搭建

Adobe Media Server也叫Adobe Flash Media Server(FMS),是Adobe出品的一款流媒体服务器,它使用Adobe传统的流媒体协议RTMP(实时消息协议)提供视频的点播和直播服务。

下载地址:http://www.adobe.com/support/flashmediaserver/downloads_updaters.html

windows环境下安装很简单,一直点下一步就完成了

运行也简单,直接点开始菜单中start Adobe media server就行了

2、nginx+rtmp模块编译

第一步、git拉取nginx-rtmp插件

mkdir -p /server/tools
cd /server/tools
git clone https://github.com/arut/nginx-rtmp-module.git

第二步、编译安装nginx

useradd -s /sbin/nologin -M nginx
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar xf nginx-1.14.0.tar.gz
ls
cd nginx-1.14.0/
yum install pcre-devel -y
yum install openssl-devel.x86_64 -y
./configure --user=nginx --group=nginx --with-http_ssl_module --prefix=/application/nginx --add-module=../nginx-rtmp-module
make
make install

第三部、配置启动nginx

cd /application/nginx/conf/

grep -Ev '^$|#' nginx.conf.default >nginx.conf
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
hls on;
hls_path /application/nginx/html/live;
hls_fragment 5s;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /live {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /application/nginx/html/live;
expires -1;
add_header Cache-Control no-cache;
}
location / {
root html;
index index.html index.htm;
}
}
}
#测试nginx语法
../sbin/nginx –t
启动nginx
../sbin/nginx

3、nodejs开源项目node-rtsp-rtmp-server

node-rtsp-rtmp-server就是一个nodejs开源rstp和rtmp服务器搭建开源项目,具体几步就能搭

第一步、安装

$ git clone https://github.com/iizukanao/node-rtsp-rtmp-server.git
$ cd node-rtsp-rtmp-server
$ npm install -d

第二步、安装coffeescript

npm install --global coffeescript

第三步、启动服务器

$ cd node-rtsp-rtmp-server
$ sudo coffee server.coffee

或者用nodejs执行,命令如下

$ cd node-rtsp-rtmp-server
$ coffee -c *.coffee
$ sudo node server.js

4、go语言项目livego

livego是用golang语言编写的一款rtmp服务软件

第一步、下载

git clone https://github.com/gwuhaolin/livego.git

第二步、编译

cd livego

go build

第三步、执行

livego

5、Red5 Media Server

Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正常运行。

开源地址:https://github.com/Red5/red5-server/releases

第一步、安装JDK

首先red5是基于java,所以安装之前请先安装jdk,我这里已经安装了jdk1.8

第二步、下载RED5

我们可以直接从github官网下载最新版本的Red5-server,因为我们是在Linux系统搭建的环境,这里选择red5-server-1.0.10-M8.tar.gz。

地址:https://github.com/Red5/red5-server/releases

下载完成之后,上传至/use/local路径下,然后就可以开始解压安装了。

第三部、解压安装


tar -zxvf red5-server-1.0.9-RELEASE.tar.gz 

修改解压缩后的名字为red5

rm red5-server-1.0.9-RELEASE red5

进入目录之后我们可以看到red5的目录结构,顾名思义conf为配置文件存放地址,red5.sh为red5的启动文件,我们进入conf文件夹,修改red5的配置文件。

vi conf/red5.properties

我们需要修改http.host和rtmp.host为电脑实际的IP地址,修改完成之后保存退出。

修改完成之后我们可以直接通过命令启动red5服务。

./red5.sh

好的。我们可以看到控制台已经开始飙起了日志,如果没有打开防火墙,需要添加防火墙规则,放开1935端口

6、第三方云服务

如果不愿自己安装环境,可以直接使用第三方的云服务,阿里云、腾讯云都有提供,直接接入、非常方便。

{{collectdata}}

网友评论0