【环境搭建】在Ubuntu16.04上搭建Nginx-rtmp流媒体服务器

关于流媒体

流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。流式传输可传送现场影音或预存于服务器上的影片,当观看者在收看这些影音文件时,影音数据在送达观看者的计算机后立即由特定播放软件播放

搭建Nginx-rtmp流媒体服务器

  • Nginx:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
  • rtmp:RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
  • 安装依赖
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
  • 下载Nginx源码包和Nginx-rtmp源码包
wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
  • 解压两个源码包后,进入到Nginx源码包目录内
./configure --with-http_ssl_module --add-module=解压后的Nginx-rtmp源码包路径
  • 编译、编译安装
make
sudo make install
  • 下载Nginx初始化脚本,并更改权限,设置Nginx开机自启动
sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults

移除开机自启动的方法:
sudo update-rc.d -f nginx remove

sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
sudo rm /usr/local/nginx/conf/nginx.conf
sudo vim /usr/local/nginx/conf/nginx.conf

添加内容如下:

#user  nobody;
worker_processes  1;
error_log  logs/rtmp_error.log debug;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    server {
        listen       80;
        server_name  localhost;
        location /hls {
            # Serve HLS fragments
            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';
            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
        }
    }
}
rtmp {
        server {
                listen 1935;
                chunk_size 8192;
                application hls {
                        live on;
                        meta copy;
                        hls on;
                        hls_path /tmp/hls;
        }
    }
}
  • 添加crossdomain.xml文件
sudo vim /usr/local/nginx/html/crossdomain.xml

添加内容如下:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
  • 启动nginx服务
cd /etc/init.d
./nginx start

在这里插入图片描述

  • 查看nginx运行状态
systemctl status nginx.service

在这里插入图片描述

  • 停止nginx服务
cd /etc/init.d
./nginx start

在这里插入图片描述

使用obs将本地视频推流到Nginx-rtmp流媒体服务器

为了便于测试,在一台windows电脑下载obs客户端
https://obsproject.com/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 服务选择自定义
  • 服务器地址填写为让rtmp://nginx服务器的ip地址:1935/hls/
  • 串流密钥自定义任意值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在Nginx-rtmp流媒体服务器上使用VLC media player测试获取到的视频流

下载VLC media player

sudo apt-get install vlc

在这里插入图片描述
在这里插入图片描述
串流密钥和obs端设置的串流密钥一致
在这里插入图片描述

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。

发布了57 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Zhang_Chen_/article/details/103019247