本文共 4539 字,大约阅读时间需要 15 分钟。
实时视频流非常受欢迎,并且仍在增长。 亚马逊的Twitch和Google的YouTube等平台吸引了数百万用户,这些用户流式传输并消耗了数小时的现场和录制媒体。 这些服务通常是免费使用的,但需要您拥有一个帐户,并且通常会将您的内容保留在广告的后面。 有些人不需要将视频发布给大众,或者只是想要对其内容进行更多控制。 幸运的是,借助开源软件的强大功能,任何人都可以设置实时流服务器。
在本教程中,我将说明如何使用Linux或BSD操作系统设置基本的实时流服务器。
这导致了不可避免的系统需求问题。 这些内容可能会有所不同,因为实时流媒体涉及很多变量,例如:
该项目使用实时消息协议(RTMP)来处理音频和视频流。 还有其他协议可用,但我选择RTMP是因为它具有广泛的支持。 随着像WebRTC这样的开放标准变得更加兼容,我建议您使用该路由。
知道“实时”并不总是意味着即时,这一点也很重要。 视频流必须经过编码,传输,缓冲和显示,这通常会增加延迟。 根据创建的流的类型及其属性,可以缩短或延长延迟。
您可以使用许多不同的Linux发行版,但我更喜欢Ubuntu,因此我为我的操作系统下载了版本。 如果您希望服务器具有图形用户界面(GUI),请随时使用或其多种功能之一。 然后,我在计算机或虚拟机上启动了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中,您可以通过按Ctrl + X , Y ,然后按Enter保存配置。
这是一个非常小的配置,它将创建一个正常工作的流服务器。 您稍后将添加到此配置,但这是一个很好的起点。
但是,在开始第一个流之前,您需要使用其新配置重新启动Nginx:
sudo systemctl restart nginx
如果您具有“野兽”的说服力,那么启动和运行流服务器也非常容易。
转到网站并下载最新版本。 启动计算机或虚拟机上的FreeBSD安装程序,并执行初始步骤,然后选择最适合您的环境的设置。 由于这是服务器,因此您可能需要设置一些静态网络设置。
安装程序完成并重新启动系统后,您应该有了一个闪亮的新FreeBSD系统。 与其他任何新安装的系统一样,您可能需要更新所有内容(从此步骤开始,请确保您以root用户身份登录):
pkg update pkg upgrade
我安装了用于编辑配置文件:
pkg install nano
该流服务器将使用功能强大且用途广泛的Nginx Web服务器。 您可以使用FreeBSD拥有的出色的端口系统来构建Nginx。
首先,更新您的端口树:
portsnap fetch portsnap extract
浏览到Nginx ports目录:
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"
接下来,创建一个Webroot目录,Nginx将在该目录中提供其内容。 我称我的流为 :
cd /usr/local/www/ mkdir stream chmod -R 755 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;
在“ 服务器”部分下,更改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
现在,您的服务器已准备就绪,可以接受视频流了,该设置流媒体软件了。 本教程使用功能强大且开源的Open Broadcast Studio(OBS)。
转到 ,找到适合您的操作系统的版本并进行安装。 OBS启动后,您应该会看到一个首次运行的向导,它将帮助您使用最适合您的硬件的设置来配置OBS。
OBS没有捕获任何内容,因为您没有提供任何源。 对于本教程,您只需要捕获流的桌面即可。 只需单击Source下的+按钮,选择Screen Capture ,然后选择要捕获的桌面。
单击“确定”,您应该看到OBS镜像了您的桌面。
现在是时候将新配置的视频流发送到服务器了。 在OBS中,单击文件 > 设置 。 单击“ 流”部分,然后将“ 流类型”设置为“ 自定义流服务器” 。
在URL框中,输入前缀rtmp://,然后输入流服务器的IP地址,然后输入/ live 。 例如, rtmp:// IP-ADDRESS / live 。
接下来,您可能需要输入Stream键-查看流所需的特殊标识符。 在“ 流密钥”框中输入您想要(并且可以记住)的任何密钥。
单击“ 应用” ,然后单击“确定” 。
现在,OBS已配置为将流发送到服务器,您可以启动第一个流。 单击开始流 。
如果一切正常,您应该看到按钮更改为Stop Streaming,并且某些带宽指标将出现在OBS的底部。
如果收到错误,请仔细检查OBS中的“流设置”以检查拼写错误。 如果一切看起来不错,可能还有另一个问题使其无法正常工作。
如果没有人观看实况视频,效果不是很好,所以请成为第一个观众!
有许多支持RTMP的开源媒体播放器,但最著名的可能是 。
安装并启动VLC之后,通过单击媒体 > 打开网络流来打开流 。 输入流的路径,添加您在OBS中设置的流密钥,然后点击播放 。 例如, rtmp:// IP-ADDRESS / live / SECRET-KEY 。
您现在应该在观看自己的实时视频流!
这是一个非常简单的设置,可以帮助您起步。 这是您可能要使用的其他两个功能。
限制访问:您可能要采取的下一步是限制对服务器的访问,因为默认设置允许任何人流向服务器和从服务器进行流传输。 有多种设置方法,例如操作系统防火墙, ,甚至使用的 。
录制流:这种简单的Nginx配置将仅流化并且不会保存您的视频,但这很容易添加。 在Nginx配置中的“ RTMP”部分下,设置录制选项以及您想要保存视频的位置。 确保您设置的路径存在并且Nginx能够写入它。
application live { live on; record all; record_path /var/www/html/recordings; record_unique on; }
实时流媒体的世界在不断发展,如果您对更高级的使用感兴趣,则可以在互联网上找到很多其他很棒的资源。 祝你好运,直播愉快!
翻译自:
转载地址:http://feczd.baihongyu.com/