实时视频流非常受欢迎,而且还在增长。亚马逊的 Twitch 和谷歌的 YouTube 等平台拥有数百万用户,他们流式传输和消费无数小时的直播和录制媒体。这些服务通常可以免费使用,但要求您拥有一个帐户,并且通常将您的内容保存在广告后面。有些人不需要他们的视频可供大众使用,或者只是希望对他们的内容有更多的控制权。值得庆幸的是,借助开源软件的强大功能,任何人都可以设置直播服务器。

入门

在本教程中,我将解释如何使用 Linux 或 BSD 操作系统设置基本的直播服务器。

这就导致了不可避免的系统要求问题。这些可能会有所不同,因为直播涉及很多变量,例如:

  • **流质量:**您想以高清流式传输还是标准清晰度满足您的需求?

  • **收视率:**您希望有多少观众观看您的视频?

  • 存储: 您是否打算保留已保存的视频流副本?

  • 访问: 您的流是私有的还是向世界开放的?

更多 Linux 资源

  • Linux 命令备忘单

  • 高级 Linux 命令备忘单

  • 免费在线课程:RHEL 技术概述

  • Linux 网络备忘单

  • SELinux 备忘单

  • Linux常用命令备忘单

  • 什么是 Linux 容器?

  • 我们最新的 Linux 文章

在系统要求方面没有固定规则,因此我建议您尝试并找到最适合您需求的方法。我将服务器安装在具有 4GB RAM、20GB 硬盘和单个 Intel i7 处理器内核的虚拟机上。

该项目使用实时消息传递协议 (RTMP) 来处理音频和视频流。还有其他可用的协议,但我选择了 RTMP,因为它有广泛的支持。随着像 WebRTC 这样的开放标准变得更加兼容,我会推荐这条路线。

同样重要的是要知道“实时”并不总是意味着即时。视频流必须经过编码、传输、缓冲和显示,这通常会增加延迟。根据您创建的流的类型及其属性,可以缩短或延长延迟。

搭建Linux服务器

您可以使用许多不同的 Linux 发行版,但我更喜欢 Ubuntu,所以我为我的操作系统下载了Ubuntu Server版本。如果您希望您的服务器具有图形用户界面 (GUI),请随意使用Ubuntu 桌面或其多种风格之一。然后,我在我的计算机或虚拟机上启动了 Ubuntu 安装程序,并选择了最适合我的环境的设置。以下是我采取的步骤。

注意:因为这是一台服务器,您可能需要设置一些静态网络设置。

Ubuntu 配置文件设置

安装程序完成并重新启动系统后,您将看到一个可爱的新 Ubuntu 系统。与任何新安装的操作系统一样,安装任何可用的更新:

sudo apt 更新

sudo apt升级

该流媒体服务器将使用功能强大且用途广泛的 Nginx Web 服务器,因此您需要安装它:

sudo apt install nginx

然后您需要获取 RTMP 模块,以便 Nginx 可以处理您的媒体流:

sudo add-apt-repository 宇宙

sudo apt install libnginx-mod-rtmp

调整您的网络服务器的配置,使其能够接受和传送您的媒体流。

sudo nano /etc/nginx/nginx.conf

滚动到配置文件的底部并添加以下代码:

rtmp {

服务器 {

听1935;

块_size 4096;

应用直播{

继续生活;

记录下来;

}

}

}

Nginx 配置

保存配置。因为我是异教徒,所以我使用Nano来编辑配置文件。在 Nano 中,您可以通过按 Ctrl+XYEnter. 来保存您的配置。

这是一个非常小的配置,它将创建一个工作流服务器。您稍后将添加到此配置中,但这是一个很好的起点。

但是,在开始第一个流之前,您需要使用新配置重新启动 Nginx:

sudo systemctl restart nginx

搭建BSD服务器

如果您是“野兽派”的说服者,那么启动并运行流媒体服务器也非常容易。

前往FreeBSD网站并下载最新版本。在您的计算机或虚拟机上启动 FreeBSD 安装程序并完成初始步骤并选择最适合您的环境的设置。由于这是一台服务器,您可能需要设置一些静态网络设置。

安装程序完成并重新启动系统后,您应该拥有一个闪亮的新 FreeBSD 系统。像任何其他新安装的系统一样,您可能希望更新所有内容(从这一步开始,请确保您以 root 身份登录):

包更新

包升级

我安装Nano用于编辑配置文件:

pkg install nano

该流媒体服务器将使用功能强大且用途广泛的 Nginx Web 服务器。您可以使用 FreeBSD 拥有的出色的 ports 系统构建 Nginx。

首先,更新您的端口树:

端口快照获取

端口快照提取物

浏览到 Nginx 端口目录:

cd /usr/ports/www/nginx

并通过运行以下命令开始构建 Nginx:

make install

您将看到一个屏幕,询问您的 Nginx 构建中要包含哪些模块。对于这个项目,您需要添加 RTMP 模块。向下滚动直到选择 RTMP 模块,然后按 Space。然后按 Enter 继续其余的构建和安装。

一旦 Nginx 完成安装,就可以对其进行配置以用于流式传输。

首先,在 /etc/rc.conf 中添加一个条目,以确保 Nginx 服务器在系统启动时启动:

nano /etc/rc.conf

将此文本添加到文件中:

nginx_enable="YES"

Nginx 配置

接下来,创建一个 webroot 目录,Nginx 将从该目录中提供其内容。我称我的:

cd /usr/local/www/

mkdir 流

chmod -R 755 流/

现在您已经创建了流目录,通过编辑其配置文件来配置 Nginx:

nano /usr/local/etc/nginx/nginx.conf

在文件顶部加载您的流媒体模块:

加载_module /usr/local/libexec/nginx/ngx_stream_module.so;

加载_module /usr/local/libexec/nginx/ngx_rtmp_module.so;

加载流模块

Server 部分下,更改 webroot 位置以匹配您之前创建的位置:

地点 / {

根 /usr/local/www/stream

}

更改 webroot 位置

最后,添加您的 RTMP 设置,以便 Nginx 知道如何处理您的媒体流:

rtmp {

服务器 {

听1935;

块_size 4096;

应用直播{

继续生活;

记录下来;

}

}

}

保存配置。在 Nano 中,您可以按 Ctrl+XY,然后按 Enter。

如您所见,这是一个非常小的配置,它将创建一个工作流服务器。稍后,您将添加到此配置中,但这将为您提供一个很好的起点。

但是,在开始第一个流之前,您需要使用新配置重新启动 Nginx:

service nginx restart

设置您的流媒体软件

用OBS广播

现在您的服务器已准备好接受您的视频流,是时候设置您的流媒体软件了。本教程使用功能强大且开源的 Open Broadcast Studio (OBS)。

前往OBS 网站并找到适合您的操作系统的构建并安装它。 OBS 启动后,您应该会看到一个首次运行向导,该向导将帮助您使用最适合您的硬件的设置来配置 OBS。

OBS 自动配置向导

OBS 没有捕获任何内容,因为您没有为其提供源。在本教程中,您只需为直播捕获桌面。只需单击 Source 下的 + 按钮,选择 Screen Capture,然后选择要捕获的桌面。

单击确定,您应该会看到 OBS 镜像您的桌面。

现在是时候将您新配置的视频流发送到您的服务器了。在 OBS 中,单击文件 > 设置。单击 Stream 部分,并将 Stream Type 设置为 Custom Streaming Server

在 URL 框中,输入前缀 rtmp://,然后是流媒体服务器的 IP 地址,然后是 /live。例如,rtmp://IP-ADDRESS/live

接下来,您可能需要输入一个 Stream 键 - 查看您的流所需的特殊标识符。在 Stream key 框中输入您想要(并且可以记住)的任何密钥。

流键设置

单击应用,然后单击确定

现在 OBS 已配置为将您的流发送到您的服务器,您可以开始您的第一个流。单击开始流式传输

如果一切正常,您应该会看到按钮更改为 Stop Streaming,并且 OBS 底部会显示一些带宽指标。

OBS 流指标

如果您收到错误,请仔细检查 OBS 中的流设置是否有拼写错误。如果一切看起来都不错,则可能是另一个问题阻止它工作。

查看您的信息流

如果没有人观看,现场视频就不是很好,所以成为你的第一个观众!

支持 RTMP 的开源媒体播放器有很多,但最著名的可能是VLC 媒体播放器。

安装并启动 VLC 后,通过单击 Media > Open Network Stream 打开您的流。输入流的路径,添加您在 OBS 中设置的 Stream Key,然后单击 Play。例如,rtmp://IP-ADDRESS/live/SECRET-KEY

您现在应该正在观看您自己的实时视频流!

VLC 中的实时视频

下一步去哪里?

这是一个非常简单的设置,可以让您起步。以下是您可能想要使用的另外两个功能。

  • 限制访问: 您可能想要采取的下一步是限制对您的服务器的访问,因为默认设置允许任何人在服务器之间进行流式传输。有多种设置方法,例如操作系统防火墙、.htaccess 文件,甚至使用 RTMP 模块](https://github.com/arut/nginx-rtmp-module/wiki/Directives#access)中的[内置访问控制。

  • 记录流: 这个简单的 Nginx 配置只会流式传输并且不会保存您的视频,但这很容易添加。在 Nginx 配置中的 RTMP 部分下,设置录制选项和要保存视频的位置。确保您设置的路径存在并且 Nginx 能够对其进行写入。

应用直播{

继续生活;

全部记录;

记录_path /var/www/html/recordings;

记录_唯一;

}

实时流媒体世界在不断发展,如果您对更高级的用途感兴趣,您可以在互联网上找到许多其他很棒的资源。祝你好运,快乐流媒体!

Logo

更多推荐