在Linux或BSD操作系统上设置一个基本的实时流媒体服务器。
实时视频流变得越来越流行。亚马逊Twitch和谷歌YouTube等平台拥有数百万用户,他们花费无数时间观看直播和录制视频。这些视频服务通常可以免费使用,但你需要有一个账户,你的视频内容通常隐藏在广告中。有些人不希望他们的视频对公众开放,或者希望对他们的视频内容有更多的控制权。幸运的是,在强大的开源软件的帮助下,任何人都可以设置直播服务器。
初级课程
在本教程中,我将解释如何使用Linux或BSD操作系统设置一个基本的实时流媒体服务器。
构建实时流媒体服务器不可避免地涉及到系统需求。这些要求是多种多样的,因为实时流媒体涉及许多因素,例如:
在硬件要求方面没有固定的规则,所以我建议你测试一下,找到最适合你需求的配置。在这个项目中,我将服务器安装在一台虚拟机上,该虚拟机具有4GB内存、20GB硬盘空空间和一个英特尔i7处理器内核。
这个项目使用实时消息协议(RTMP)来处理音频和视频流。当然,还有其他可用的协议,但是我选择了RTMP,因为它得到了广泛的支持。随着像WebRTC这样的开放标准变得更加兼容,我推荐这条路线。
理解“实时”并不总是意味着即时也很重要。视频流必须被编码、传输、缓冲和显示,这通常会增加延迟。延迟可以缩短或延长,这取决于您创建的流的类型及其属性。
设置Linux服务器
你可以使用许多不同的Linux发行版,但我更喜欢Ubuntu,所以我下载了Ubuntu Server Edition作为我的操作系统。如果你希望你的服务器有一个图形用户界面(GUI ),请随意使用Ubuntu桌面版或它的各种版本。然后,我在我的电脑或虚拟机上启动Ubuntu安装程序,选择最适合我的环境的设置。以下是我采取的步骤。
注意:因为这是一个服务器,您可能需要设置一个静态网络。
安装程序完成,系统重启后,你会看到一个可爱的新Ubuntu系统。与任何新安装的操作系统一样,安装任何可用的更新:
Sudapt更新 sudo apt升级 这个流媒体服务器会使用非常强大且通用的Nginx网络服务器,所以你需要安装它:
Sudapt安装Nginx 然后你需要获得RTMP模块,以便Nginx可以处理你的媒体流:
sudo add-apt-repository university sudo apt install libnginx-mod-rtmp 修改你的web服务器配置,让它可以接收和传输你的媒体流。
sudano/etc/nginx/nginx . conf 滚动到配置文件的底部,添加以下代码:
rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; } } }
rtmp {
服务器{
监听1935;
chunk _ size 4096;
应用程序live {
live on;
记录关闭;
}
}
}
保存配置。我用Nano编辑配置文件是异端。在Nano中,您可以使用快捷键Ctrl+X和y按Enter保存配置。
这样一个非常小的配置可以创建一个工作的流服务器。稍后您将向该配置添加更多内容,但这是一个很好的起点。
在启动第一个流之前,您需要使用新的配置重新启动nginx:
sudo systemctl重新启动nginx
设置BSD服务器
如果你是“小恶魔”(LCTT译者注:FreeBSD是一个带叉子的红色小恶魔)的信徒,设置和运行流媒体服务器也是非常容易的。
去FreeBSD网站下载最新版本。在您的计算机或虚拟机上启动FreeBSD安装程序,然后执行初始步骤并选择最适合您的环境的设置。由于这是一台服务器,您可能需要设置一个静态网络。
安装程序完成后,系统重新启动,您应该有一个全新的FreeBSD系统。像任何其他新安装的系统一样,您可能希望更新所有内容(从这一步开始,请确保您以root用户身份登录):
Pkg更新 pkg升级 安装Nano以编辑配置文件:
Pkinstallnano 这个流媒体服务器将使用一个非常强大和通用的Nginx网络服务器。可以使用FreeBSD优秀的ports系统来构建Nginx。
首先,更新您的端口树:
port snap fetch port snap 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"
nginx _ enable = " YES "
接下来,创建一个网站根目录,Nginx将从中提供内容。我的目录叫做stream:
CD/usr/local/www/ mkdirstream 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;
load _ module/usr/local/lib exec/nginx/ngx _ stream _ module . so;
load _ module/usr/local/lib exec/nginx/ngx _ rtmp _ module . so;
在“服务器”部分下,更改根位置以匹配您之前创建的目录位置:
Location / { root /usr/local/www/stream }
location/{
root/usr/local/www/stream
}
最后,添加您的RTMP设置,以便Nginx知道如何处理您的媒体流:
rtmp { 服务器{ 监听1935; chunk _ size 4096; 应用程序live { live on; 记录关闭; } } } 保存配置。在Nano中,您可以通过按快捷键Ctrl+X,Y,然后按回车键来完成此操作。
正如您所看到的,这样一个非常小的配置将创建一个工作流服务器。稍后,您将向该配置添加更多内容,但这将为您提供一个良好的起点。
但是,在启动第一个流之前,您需要使用新的配置重新启动Nginx:
服务nginx重新启动
设置您的流媒体软件
使用OBS广播
现在,您的服务器已经准备好接受您的视频流,是时候设置您的流媒体软件了。本教程使用强大的开源开放广播工作室(OBS)。
去OBS网站,找到适合你操作系统的版本并安装。OBS启动后,您应该第一次看到一个向导,它将帮助您用最适合您的硬件的设置来配置OBS。
OBS没有捕捉到任何东西,因为你没有提供它的来源。在本教程中,您只需要捕获流的桌面。点击“来源”下的“+”按钮,选择“显示捕获屏幕捕获”,然后选择要捕获的桌面。
单击OK,您应该看到OBS镜像了您的桌面。
现在,您可以将新配置的视频流发送到您的服务器。在OBS中,单击文件>:设置文件>设置.单击“串流”部分,并将“串流类型”设置为“自定义串流服务器”。
在URL框中,输入前缀rtmp://,后跟流媒体服务器的IP地址,然后是/live。比如rtmp://IP-ADDRESS/live。
接下来,您可能需要输入“流密钥”,这是观看您的流所需的特殊标识符。在“流密钥流密钥”框中输入您想要(并且能够记住)的任何关键字。
单击应用,然后单击确定。
现在OBS已经被配置为将您的流发送到您的服务器,您可以开始您的第一个视频流了。单击“开始流式播放”。
如果一切顺利的话,你应该会看到按钮改成了“停止推送停止流”,OBS底部会出现一些带宽指示器。
如果您收到错误消息,请仔细检查OBS中的流设置是否有拼写错误。如果一切看起来都很好,可能是另一个问题阻止了它的工作。
观看您的视频流
如果没人看,说明视频直播不太好,所以请做你的第一批观众!
有许多开源媒体播放器支持RTMP,但最著名的可能是VLC媒体播放器。
并启动VLC,点击“媒体>:打开网络流媒体>打开网络流”打开你的流。输入您的流的路径,添加您在OBS中设置的流密钥,然后单击播放。例如rtmp://IP地址/实时/秘密密钥。
现在你应该可以看到自己的实时视频流了!
下一步是什么?
这个项目是一个非常简单的设置,让你开始工作。这里有另外两个你可能想用的函数。
应用程序直播{直播;全部记录;record _ path/var/www/html/recordings;上的record _ unique}
实时流媒体的世界在不断发展。如果您对更高级的用途感兴趣,您可以在互联网上找到许多其他很棒的资源。祝你好运,直播愉快!
via:https://open source . com/article/19/1/basic-live-video-streaming-server
作者:Aaron J.Prisk题目:lujun9972译者:Starryi校对:wxy
本文由LCTT原创,Linux中国有幸推出。