在Linux或BSD操作系统上设置一个基本的实时流媒体服务器。
实时视频流变得越来越流行。亚马逊的Twitch和谷歌的YouTube平台拥有数百万用户,他们花费无数时间观看直播和录制视频。这些视频服务通常是免费使用的,但是你需要有一个账号,你的视频内容一般会隐藏在广告中。有些人不希望他们的视频对公众开放,或者他们希望对他们的视频内容有更多的控制权。幸运的是,在强大的开源软件的帮助下,任何人都可以设置直播服务器。
初级课程
在本教程中,我将解释如何使用Linux或BSD操作系统设置一个基本的实时流服务器。
构建实时流媒体服务器不可避免地会提出系统需求的问题。这些要求各不相同,因为实时流涉及许多因素,例如:
在硬件要求方面没有固定的规则,所以我建议您进行测试,以找到最适合您需求的配置。在这个项目中,我将服务器安装在一个具有4GB内存、20GB硬盘空和一个英特尔i7处理器内核的虚拟机上。
这个项目使用实时消息协议(RTMP)来处理音频和视频流。当然,还有其他可用的协议,但是我选择了RTMP,因为它有广泛的支持。鉴于像WebRTC这样的开放标准已经变得更加兼容,我推荐这条路线。
理解“实时”并不总是指瞬间也很重要。视频流必须被编码、传输、缓冲和显示,这通常会增加延迟。延迟可以缩短或延长,这取决于您创建的流的类型及其属性。
设置Linux服务器
你可以使用许多不同的Linux发行版,但我更喜欢Ubuntu,所以我下载了Ubuntu Server Edition作为我的操作系统。如果你想让你的服务器有一个图形用户界面(GUI ),请随意使用Ubuntu桌面版或其众多版本中的一个。然后,我在电脑或虚拟机上启动Ubuntu installer,选择最适合我环境的设置。以下是我采取的步骤。
注意:因为这是一个服务器,您可能需要设置一个静态网络。
安装完成后,系统重启,你会看到一个可爱的新Ubuntu系统。与任何新安装的操作系统一样,安装任何可用的更新:
Sudo apt更新 sudo apt升级 这个流媒体服务器会使用一个非常强大且通用的Nginx web服务器,所以你需要安装它:
Sudapt安装Nginx 然后你需要获得RTMP模块,以便Nginx可以处理你的媒体流:
sudo add-apt-repository universe sudo apt install libnginx-mod-rtmp 修改您的web服务器配置,以便它可以接收和传送您的媒体流。
sud nano/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以编辑配置文件:
Pkg安装nano 这个流媒体服务器将使用一个非常强大的通用Nginx web服务器。可以使用FreeBSD拥有的优秀的ports系统来构建Nginx。
首先,更新您的端口树:
端口快照提取 端口快照提取 转到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,然后按Enter键来完成此操作。
正如您所看到的,这样一个非常小的配置将创建一个工作流服务器。稍后,您将向该配置添加更多内容,但这将为您提供一个良好的起点。
但是,在启动第一个流之前,您需要使用新的配置重新启动Nginx:
服务nginx重新启动
设置您的流媒体软件
使用OBS进行广播
现在,您的服务器已经准备好接受您的视频流,是时候设置您的流媒体软件了。本教程使用强大的开源开放广播工作室(OBS)。
去OBS网站,找到适合你操作系统的版本并安装。OBS启动后,您应该第一次看到一个向导,它将帮助您用最适合您的硬件的设置来配置OBS。
OBS没有捕捉到任何东西,因为你没有提供它的来源。在本教程中,您只需要捕获流的桌面。单击Source下的+按钮,选择Show Capture Screen Capture,然后选择要捕获的桌面。
单击OK OK,您应该会看到OBS镜像了您的桌面。
现在,您可以将新配置的视频流发送到您的服务器。在OBS中,单击文件>:设置文件>:设置.点击“串流”部分,将“串流类型”设置为“自定义串流服务器”。
在URL框中,输入前缀rtmp://,后跟流媒体服务器的IP地址,然后是/live。比如rtmp://IP-ADDRESS/live。
接下来,您可能需要输入“流密钥”,这是观看您的流所需的特殊标识符。在“流密钥”框中输入您想要的(并且能够记住的)任何关键字。
单击应用,然后单击确定。
现在OBS已经被配置为将您的流发送到您的服务器,您可以开始您的第一个视频流了。单击开始流式传输。
如果一切正常,你应该会看到按钮变成了“停止流”,一些带宽指示器会出现在OBS的底部。
如果您收到错误消息,请仔细检查OBS中的流设置是否有拼写错误。如果一切看起来都很好,另一个问题可能是阻止它工作。
观看您的视频流。
如果没人看,视频直播也不是很好,所以请做你的第一批观众!
有许多开源媒体播放器支持RTMP,但最著名的可能是VLC媒体播放器。
安装VLC后,单击媒体>:打开网络流媒体>:打开流”打开您的流。输入您的流的路径,添加您在OBS中设置的流密钥,然后单击“播放播放”。例如,rtmp://IP-address/live/secret-key。
现在你应该可以看到自己的实时视频流了!
下一步是什么?
这个项目是一个非常简单的设置让你开始。这里有另外两个你可能想用的特性。
应用程序直播{直播;全部记录;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中国有幸推出。