我正在尝试为在本地网络上运行的本地学校设置流媒体服务器。我在虚拟机上设置了 Ubuntu 18.04,并在服务器上为其提供了自己的专用 1 Gigabit 连接。它有 4 个处理核心和 8GB 内存。学校所有的交换机都是1G的。我使用 GoPro 通过 RTMP 向服务器发送 480p 视频(运行 NGINX 和 rtmp 模块)。在同一台服务器上,我将 video.js 配置为查看流。
当我们运行 5 到 10 个浏览器时,它看起来还不错。今天他们开了 50-60,这大约是我们将看到的最大值。当我们这样做时,慢慢地一些浏览器开始“缓冲”并且会一遍又一遍地做。它几乎看起来每 2 秒执行一次非常快。
我检查了服务器,发现 CPU、内存、磁盘甚至网络都没有受到限制。尽管 VMware 确实显示服务器达到约 120mbps 并达到峰值。
这就是我的 nginx.conf 的样子。我该怎么做才能让它发挥作用。我无法弄清楚这是否只是带宽过多,或者是否是新玩家正在尝试从播放列表播放并阻止 RTMP 到 HLS 转换的过程。希望这种思路是有道理的。
server {
listen 8080;
location / {
# Disable cache
add_header 'Cache-Control' 'no-cache';
# 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/dash+xml mpd;
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /var/stream;
}
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
record off;
live on;
# Turn on HLS
hls on;
hls_path /var/stream/hls/;
hls_fragment 3;
hls_playlist_length 60;
# disable consuming the stream from nginx as rtmp
deny play all;
}
}
}
这是播放器的html:
<video-js id="live_stream" class="video-js vjs-fluid vjs-default-skin vjs-big-play-centered" controls preload="auto" autoplay="true" width="auto" height="auto" poster="http://192.168.5.8/poster.jpg">
<source src="http://192.168.5.8:8080/hls/.m3u8" type="application/x-mpegURL">
<p class='vjs-no-js'>
To view this video please enable JavaScript, and consider upgrading to a web browser that
<a href='https://videojs.com/html5-video-support/' target='_blank'>supports HTML5 video</a>
</p>
</video-js>