直播视频流媒体非常流行,并且仍在增长。像亚马逊的 Twitch 和谷歌的 YouTube 这样的平台拥有数百万用户,他们流式传输和观看无数小时的直播和录制媒体。这些服务通常可以免费使用,但需要您拥有一个帐户,并且通常会将您的内容放在广告之后。有些人不需要他们的视频向大众开放,或者只是想要更多地控制他们的内容。值得庆幸的是,借助开源软件的力量,任何人都可以设置直播流媒体服务器。
开始入门
在本教程中,我将解释如何使用 Linux 或 BSD 操作系统设置一个基本的直播流媒体服务器。
这引出了一个不可避免的系统要求问题。这些要求可能会有所不同,因为直播流媒体涉及很多变量,例如
- 流媒体质量:您想以高清流式传输还是标清就能满足您的需求?
- 观看人数:您预计您的视频有多少观众?
- 存储:您是否计划保留视频流的已保存副本?
- 访问:您的流媒体是私有的还是向全世界开放?
关于系统要求没有固定的规则,所以我建议您进行实验,找到最适合您需求的方案。我将我的服务器安装在一台虚拟机上,配备 4GB 内存、20GB 硬盘和一个 Intel i7 处理器核心。
本项目使用实时消息协议 (RTMP) 来处理音频和视频流。还有其他协议可用,但我选择 RTMP 是因为它具有广泛的支持。随着像 WebRTC 这样的开放标准变得更加兼容,我将推荐这条路线。
同样非常重要的是要知道,“直播” 并不总是意味着即时。视频流必须经过编码、传输、缓冲和显示,这通常会增加延迟。延迟可以根据您创建的流类型及其属性来缩短或延长。
设置 Linux 服务器
您可以使用许多不同的 Linux 发行版,但我更喜欢 Ubuntu,所以我下载了 Ubuntu Server 版本作为我的操作系统。如果您希望您的服务器具有图形用户界面 (GUI),请随意使用 Ubuntu Desktop 或其众多变体之一。然后,我在我的计算机或虚拟机上启动了 Ubuntu 安装程序,并选择了最适合我的环境的设置。以下是我采取的步骤。
注意:因为这是一个服务器,您可能需要设置一些静态网络设置。

安装程序完成后,您的系统重新启动,您将看到一个全新的 Ubuntu 系统。与任何新安装的操作系统一样,安装任何可用的更新
sudo apt update
sudo apt upgrade
此流媒体服务器将使用非常强大且通用的 Nginx Web 服务器,因此您需要安装它
sudo apt install nginx
然后您需要获取 RTMP 模块,以便 Nginx 可以处理您的媒体流
sudo add-apt-repository universe
sudo apt install libnginx-mod-rtmp
调整您的 Web 服务器配置,使其可以接受和传递您的媒体流。
sudo nano /etc/nginx/nginx.conf
滚动到配置文件底部并添加以下代码
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}

保存配置。因为我是一个异端,所以我使用 Nano 来编辑配置文件。在 Nano 中,您可以通过按 Ctrl+X、Y,然后按 Enter 来保存您的配置。
这是一个非常简单的配置,它将创建一个可用的流媒体服务器。您稍后会添加到此配置中,但这是一个很好的起点。
但是,在您可以开始您的第一个流之前,您需要使用其新配置重新启动 Nginx
sudo systemctl restart nginx
设置 BSD 服务器
如果您是 “beastie” 阵营的,那么启动并运行流媒体服务器也非常容易。
前往 FreeBSD 网站并下载最新版本。在您的计算机或虚拟机上启动 FreeBSD 安装程序,完成初始步骤并选择最适合您的环境的设置。由于这是一个服务器,您可能需要设置一些静态网络设置。
安装程序完成后,您的系统重新启动,您应该会有一个全新的 FreeBSD 系统。与任何其他新安装的系统一样,您可能需要更新所有内容(从这一步开始,请确保您以 root 用户身份登录)
pkg update
pkg upgrade
我安装了 Nano 来编辑配置文件
pkg install nano
此流媒体服务器将使用非常强大且通用的 Nginx Web 服务器。您可以使用 FreeBSD 拥有的出色端口系统来构建 Nginx。
首先,更新您的端口树
portsnap fetch
portsnap extract
浏览到 Nginx 端口目录
cd /usr/ports/www/nginx
并通过运行以下命令开始构建 Nginx
make install
您将看到一个屏幕,询问要在 Nginx 构建中包含哪些模块。对于本项目,您需要添加 RTMP 模块。向下滚动直到 RTMP 模块被选中,然后按 空格键。然后按 Enter 键 继续构建和安装的其余部分。
一旦 Nginx 完成安装,就该配置它以用于流媒体目的了。
首先,在 /etc/rc.conf 中添加一个条目,以确保 Nginx 服务器在系统启动时启动
nano /etc/rc.conf
将此文本添加到文件中
nginx_enable="YES"

接下来,创建一个 Web 根目录,Nginx 将从该目录提供其内容。我称我的目录为 stream
cd /usr/local/www/
mkdir stream
chmod -R 755 stream/
现在您已经创建了您的 stream 目录,通过编辑其配置文件来配置 Nginx
nano /usr/local/etc/nginx/nginx.conf
在文件顶部加载您的流媒体模块
load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;

在 Server 部分下,更改 Web 根位置以匹配您之前创建的位置
Location / {
root /usr/local/www/stream
}

最后,添加您的 RTMP 设置,以便 Nginx 知道如何处理您的媒体流
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
保存配置。在 Nano 中,您可以通过按 Ctrl+X、Y,然后按 Enter 键 来完成此操作。
如您所见,这是一个非常简单的配置,它将创建一个可用的流媒体服务器。稍后,您会添加到此配置中,但这将为您提供一个很好的起点。
但是,在您可以开始您的第一个流之前,您需要使用其新配置重新启动 Nginx
service nginx restart
设置您的流媒体软件
使用 OBS 进行广播
现在您的服务器已准备好接受您的视频流,现在是时候设置您的流媒体软件了。本教程使用功能强大且开源的 Open Broadcast Studio (OBS)。
前往 OBS 网站 并找到适合您操作系统的版本并安装它。一旦 OBS 启动,您应该会看到一个首次运行向导,它将帮助您使用最适合您硬件的设置来配置 OBS。

OBS 没有捕获任何内容,因为您没有为其提供源。在本教程中,您只需捕获您的桌面以进行流式传输。只需单击 源 下面的 + 按钮,选择 屏幕捕获,然后选择您要捕获的桌面。
单击确定,您应该会看到 OBS 镜像您的桌面。
现在是时候将您新配置的视频流发送到您的服务器了。在 OBS 中,单击 文件 > 设置。单击 流 部分,并将 流类型 设置为 自定义流媒体服务器。
在 URL 框中,输入前缀 rtmp://,后跟您的流媒体服务器的 IP 地址,再后跟 /live。例如,rtmp://IP-ADDRESS/live。
接下来,您可能需要输入一个流密钥 — 观看您的流所需的特殊标识符。在 流密钥 框中输入您想要的任何密钥(并且可以记住)。

单击 应用,然后单击 确定。
现在 OBS 已配置为将您的流发送到您的服务器,您可以开始您的第一个流了。单击 开始推流。
如果一切正常,您应该会看到按钮变为 停止推流,并且一些带宽指标将出现在 OBS 底部。

如果您收到错误,请仔细检查 OBS 中的流设置,看看是否有拼写错误。如果一切看起来都很好,则可能存在阻止其工作的其他问题。
观看您的流
如果没有人观看,直播视频就没有多大用处,所以成为您的第一个观众!
有许多开源媒体播放器支持 RTMP,但最著名的可能是 VLC 媒体播放器。
在您安装并启动 VLC 后,单击 媒体 > 打开网络流 来打开您的流。输入您的流的路径,添加您在 OBS 中设置的流密钥,然后单击 播放。例如,rtmp://IP-ADDRESS/live/SECRET-KEY。
您现在应该正在观看您自己的直播视频流!

下一步去哪里?
这是一个非常简单的设置,可以让您入门。以下是您可能想要使用的另外两个功能。
-
限制访问:您可能要采取的下一步是限制对您的服务器的访问,因为默认设置允许任何人向服务器流式传输和从服务器流式传输。有很多方法可以设置此功能,例如操作系统防火墙、.htaccess 文件,甚至可以使用 RTMP 模块中的内置访问控制。
-
录制流:这个简单的 Nginx 配置只会流式传输,而不会保存您的视频,但这很容易添加。在 Nginx 配置中,在 RTMP 部分下,设置录制选项和您要保存视频的位置。确保您设置的路径存在并且 Nginx 能够写入它。
application live {
live on;
record all;
record_path /var/www/html/recordings;
record_unique on;
}
直播流媒体的世界在不断发展,如果您对更高级的用途感兴趣,您可以在互联网上找到许多其他很棒的资源。祝您好运,直播愉快!
17 条评论