【环境搭建】在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
- 安装ffmpeg
从源码编译安装ffmpeg的方法在【环境搭建】在ubuntu16.04上编译安装ffmpeg和opencv中 - 更改nginx配置文件
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 stop
使用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端设置的串流密钥一致
结语
如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
如果我的文章对您有帮助,转载请注明出处。