当前位置: 首页 > 科技观察

使用OBS构建视频流媒体服务器

时间:2023-03-13 16:47:32 科技观察

在Linux或BSD操作系统上设置基本的直播流媒体服务器。实时视频流变得越来越流行。亚马逊的Twitch和谷歌的YouTube等平台拥有数以百万计的用户,他们花费无数时间观看直播和录制的视频。这些视频服务通常可以免费使用,但需要您拥有一个帐户,并且通常会用广告隐藏您的视频内容。有些人不希望他们的视频可供公众观看,或者希望对其视频内容有更多控制权。幸运的是,借助强大的开源软件,任何人都可以架设直播服务器。入门在本教程中,我将解释如何使用Linux或BSD操作系统设置基本的实时流媒体服务器。构建直播服务器不可避免地涉及系统需求。这些需求是多种多样的,因为流媒体直播涉及许多因素,例如:流媒体质量:您想要高清流媒体还是标清视频满足您的需求?收视率:您的视频预计有多少观众?存储:您打算保留已保存视频流的副本吗?访问:您的流是私有的还是向世界开放的?在硬件要求方面没有硬性规定,因此我建议您进行测试以找到满足您需求的最佳配置。对于这个项目,我将服务器安装在一个具有4GB内存、20GB硬盘空间和单个Inteli7处理器内核的虚拟机上。该项目使用实时消息协议(RTMP)来处理音频和视频流。当然还有其他可用的协议,但我选择RTMP是因为它的广泛支持。鉴于像WebRTC这样的开放标准变得更加兼容,我会推荐这条路线。了解“实时”并不总是意味着即时也很重要。视频流必须经过编码、传输、缓冲和显示,这通常会增加延迟。延迟可以缩短或延长,具体取决于您创建的流类型及其属性。设置Linux服务器您可以使用许多不同的Linux发行版,但我更喜欢Ubuntu,因此我下载了Ubuntu服务器版作为我的操作系统。如果您希望您的服务器具有图形用户界面(GUI),请随意使用UbuntuDesktop或其众多版本中的一种。然后,我在我的计算机或虚拟机上启动了Ubuntu安装程序,并选择了最适合我的环境的设置。以下是我采取的步骤。注意:由于这是服务器,您可能需要设置静态网络。安装程序完成并重新启动系统后,您将看到一个可爱的新Ubuntu系统。与任何新的操作系统安装一样,安装任何可用的更新:sudoaptupdatesudoaptupgrade这个流媒体服务器将使用非常强大和通用的Nginx网络服务器,所以你需要安装它:sudoaptinstallnginx然后你需要获得RTMPmodule,以便Nginx可以处理您的媒体流:sudoadd-apt-repositoryuniversesudoaptinstalllibnginx-mod-rtmp修改您的网络服务器配置,以便它可以接受和传送您的媒体流。sudonano/etc/nginx/nginx.conf滚动到配置文件的底部并添加以下代码:rtmp{server{listen1935;块大小4096;应用程序直播{直播;录音;}}}保存配置。我是使用Nano编辑配置文件的异教徒。在Nano中,您可以使用快捷键Ctrl+X、Y并按Enter来保存您的配置。这样一个非常小的配置可以创建一个工作的流媒体服务器。稍后您将向此配置添加更多内容,但这是一个很好的起点。在开始第一个流之前,您需要使用新配置重新启动Nginx:sudosystemctlrestartnginxsetupBSDserver信徒们,设置和运行流服务器也很容易。前往FreeBSD网站并下载最新版本。在您的计算机或虚拟机上启动FreeBSD安装程序,然后执行初始步骤并选择最适合您的环境的设置。由于这是一台服务器,您可能需要设置一个静态网络。安装程序完成并且系统重新启动后,您应该拥有一个闪亮的新FreeBSD系统。与任何其他新安装的系统一样,您可能想要更新所有内容(从这一步开始,确保您以根用户身份登录):pkgupdatepkgupgrade安装Nano以编辑配置文件:pkginstallnano此流媒体服务器将使用非常强大和通用的NginxWeb服务器。您可以使用FreeBSD拥有的出色的端口系统构建Nginx。首先,更新您的端口树:portsnapfetchportsnapextract转到Nginx端口目录:cd/usr/ports/www/nginx运行以下命令开始构建Nginx:makeinstall您将看到一个屏幕,询问您的Nginx中要包含什么构建模块。对于这个项目,您需要添加RTMP模块。向下滚动直到选择RTMP模块并按空格键。然后按enter继续构建和安装的其余部分。安装Nginx后,就可以配置它进行流式传输了。首先,在/etc/rc.conf中添加一个条目以确保Nginx服务器在系统启动时启动:nano/etc/rc.conf将此文本添加到文件中:nginx_enable="YES"接下来,从创建网站根目录Nginx将提供其内容。我自己的目录叫做stream:cd/usr/local/www/mkdirstreamchmod-R755stream/现在你已经创建了你的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部分下,更改根位置以匹配您之前创建的目录位置:Location/{root/usr/local/www/stream}最后,添加您的RTMP设置,以便Nginx知道如何处理您的媒体流:rtmp{server{听1935;块大小4096;应用程序直播{直播;录音;}}}保存配置。在Nano中,您可以使用快捷键Ctrl+X、Y,然后按Enter来执行此操作。如您所见,这样一个非常小的配置将创建一个工作流服务器。稍后您将向此配置添加更多内容,但这将为您提供一个良好的起点。然而,在你开始你的第一个流之前,你需要用新的配置重启Nginx:servicenginxrestart流媒体软件。本教程使用功能强大的开源OpenBroadcastStudio(OBS)。转到OBS网站,找到适用于您的操作系统的版本并进行安装。OBS启动后,您应该会看到一个首次运行向导,它将帮助您使用最适合您的硬件的设置来配置OBS。OBS没有捕获任何东西,因为你没有提供它的来源。对于本教程,您只需捕获用于流式处理的桌面。单击“源”下的“+”按钮,选择“屏幕捕获”并选择要捕获的桌面。单击“确定”,您应该会看到OBS镜像您的桌面。现在是时候将您新配置的视频流发送到您的服务器了。在OBS中,单击“文件”>“设置文件”>“设置”。单击Stream部分并将StreamType设置为CustomStreamingServer。在URL框中,输入前缀rtmp://后跟流媒体服务器的IP地址,再后跟/live。例如,rtmp://IP-ADDRESS/live。接下来,您可能需要输入“流密钥”,这是观看流媒体所需的特殊标识符。在“Streamkey”框中输入您想要(并且可以记住)的任何关键字。单击“应用”,然后单击“确定”。现在OBS已配置为将您的流发送到您的服务器,您可以开始您的第一个视频流。单击“开始流式传输”。如果一切顺利,您应该会看到按钮变为“停止流式传输”,并且一些带宽指标应该出现在OBS的底部。如果您收到错误消息,请仔细检查OBS中的流式传输设置是否有拼写错误。如果一切正常,则另一个问题可能会阻止它工作。观看您的流如果没有人观看,直播视频就不是很好,所以成为您的第一个观众吧!有许多支持RTMP的开源媒体播放器,但最著名的可能是VLC媒体播放器。安装并启动VLC后,通过单击“媒体”>“打开网络流媒体”>“打开网络流”打开您的流。输入你的推流路径,添加你在OBS中设置的推流密钥,然后点击播放。例如,rtmp://IP-ADDRESS/live/SECRET-KEY。您现在应该可以看到您的实时视频流了!下一步是什么?这个项目是一个非常简单的设置,可以帮助您入门。以下是您可能想要使用的另外两个功能。限制访问:您可能想要做的下一件事是限制对您的服务器的访问,因为默认设置允许流式传输到任何人或从任何人流式传输。有多种设置方法,例如操作系统防火墙、.htaccess文件,甚至使用STMP模块中的内置访问控制。RecordStream:这个简单的Nginx配置只会流式传输而不保存您的视频,但这很容易修改。在RTMP部分下的Nginx配置文件中,设置录制选项和要保存视频的位置。确保您设置的路径存在并且Nginx可以写入它。应用程序直播{直播;全部记录;记录路径/var/www/html/recordings;record_uniqueon;}实时流媒体的世界在不断发展,如果您对更高级的用途感兴趣,可以在Internet上找到许多其他很好的示例。很棒的资源。祝你好运,流媒体愉快!