直播视频流非常流行,并且仍在增长。亚马逊的 Twitch 和谷歌的 YouTube 等平台拥有数百万用户,他们流式传输和观看无数小时的直播和录制媒体。这些服务通常可以免费使用,但需要您拥有帐户,并且通常会将您的内容置于广告之后。有些人不需要他们的视频向大众公开,或者只是想要更多地控制他们的内容。值得庆幸的是,借助开源软件的力量,任何人都可以设置直播流服务器。
开始入门
在本教程中,我将解释如何在 Linux 或 BSD 操作系统上设置基本直播流服务器。
这引出了一个不可避免的系统要求问题。这些要求可能会有所不同,因为直播流涉及很多变量,例如
- 流质量:您想要高清流式传输还是标清适合您的需求?
- 观看人数:您预计您的视频有多少观众?
- 存储:您是否计划保留视频流的保存副本?
- 访问:您的流是私有的还是向全世界开放?
关于系统要求没有固定的规则,所以我建议您进行实验并找到最适合您需求的方法。我将我的服务器安装在具有 4GB RAM、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"
接下来,创建一个 webroot 目录,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 部分下,更改 webroot 位置以匹配您之前创建的位置
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 条评论