Nginx RTMP 流媒体服务器
安装
多数的文章都是从头编译安装的,但是自Nginx 1.9(具体不知道)后,插件可以热加载,不再需要一开始就要编译入Nginx中,使用我们可以使用包管理器来快速安装:
(Debian/Nginx) sudo apt-get install nginx-full libnginx-mod-rtmp -y
配置
打开/etc/nginx/nginx.conf
的配置文件,在末尾加入:
rtmp {
server {
listen 1926;
chunk_size 4096;
application live {
#开启直播
live on;
#开启HLS
#hls on;
#HLS视频流目录
#hls_path /var/www/html/live;
#每个视频片段长度
#hls_fragment 5s;
#播放列表长度
#hls_playlist_length 15s;
#连续模式
#hls_continuous on;
#删除多余流片段
#hls_cleanup on;
#嵌套模式
#hls_nested on;
}
}
}
若需要HLS,则需要在HTTP配置文件中添加:
#root /var/www/html/;
#这里的路径应与上方视频流目录一致
location /live {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /var/www/html/live;
}
推流
可以使用FFmpeg
,但我这里使OBS
:
rtmp://<your_device_ip>:1926/live
HLS
将以下HTML保存到服务器,可通过游览器查看推流效果:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" name="viewport" content="width=device-width,initial-scale=1" />
<title>HLS Live Test</title>
<script src="https://cdn.bootcdn.net/ajax/libs/hls.js/8.0.0-beta.3/hls.min.js"></script>
</head>
<body>
<video id="video" controls width="100%"></video>
<script>
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource('http://<your_device_ip>/live/index.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
video.play();
});
</script>
</body>
</html>