使用Linux创建自己的视频流服务器
实时视频流非常受欢迎,并且仍在增长。 亚马逊的Twitch和Google的YouTube等平台吸引了数百万用户,这些用户流式传输并消耗了数小时的现场和录制媒体。 这些服务通常是免费使用的,但需要您拥有一个帐户,并且通常会将您的内容保留在广告的后面。 有些人不需要将视频发布给大众,或者只是想要对其内容进行更多控制。 幸运的是,借助开源软件的强大功能,任何人都可以设置实时流服务器。
入门
在本教程中,我将说明如何使用Linux或BSD操作系统设置基本的实时流服务器。
这导致了不可避免的系统需求问题。 这些内容可能会有所不同,因为实时流媒体涉及很多变量,例如:
- 串流质量:您想以高清流式传输还是标准清晰度满足您的需求?
- 观众人数:您希望视频获得多少观众?
- 存储:您打算保留已保存的视频流副本吗?
- 访问权限:您的信息流是私有的还是向世界公开的?
该项目使用实时消息协议(RTMP)来处理音频和视频流。 还有其他协议可用,但我选择RTMP是因为它具有广泛的支持。 随着像WebRTC这样的开放标准变得更加兼容,我建议您使用该路由。
知道“实时”并不总是意味着即时,这一点也很重要。 视频流必须经过编码,传输,缓冲和显示,这通常会增加延迟。 根据创建的流的类型及其属性,可以缩短或延长延迟。
设置Linux服务器
您可以使用许多不同的Linux发行版,但我更喜欢Ubuntu,因此我为我的操作系统下载了Ubuntu Server版本。 如果您希望服务器具有图形用户界面(GUI),请随时使用Ubuntu Desktop或其多种功能之一。 然后,我在计算机或虚拟机上启动了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来编辑配置文件。 在Nano中,您可以通过按Ctrl + X , Y ,然后按Enter保存配置。
这是一个非常小的配置,它将创建一个正常工作的流服务器。 您稍后将添加到此配置,但这是一个很好的起点。
但是,在开始第一个流之前,您需要使用其新配置重新启动Nginx:
sudo systemctl restart nginx
设置BSD服务器
如果您具有“野兽”的说服力,那么启动和运行流服务器也非常容易。
转到FreeBSD网站并下载最新版本。 启动计算机或虚拟机上的FreeBSD安装程序,并执行初始步骤,然后选择最适合您的环境的设置。 由于这是服务器,因此您可能需要设置一些静态网络设置。
安装程序完成并重新启动系统后,您应该有了一个闪亮的新FreeBSD系统。 与其他任何新安装的系统一样,您可能需要更新所有内容(从此步骤开始,请确保您以root用户身份登录):
pkg update
pkg upgrade
我安装了Nano用于编辑配置文件:
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
设置您的流媒体软件
用OBS广播
现在,您的服务器已准备就绪,可以接受视频流了,该设置流媒体软件了。 本教程使用功能强大且开源的Open Broadcast Studio(OBS)。
转到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媒体播放器 。
安装并启动VLC之后,通过单击媒体 > 打开网络流来打开流 。 输入流的路径,添加您在OBS中设置的流密钥,然后点击播放 。 例如, rtmp:// IP-ADDRESS / live / SECRET-KEY 。
您现在应该在观看自己的实时视频流!
接下来要去哪里?
这是一个非常简单的设置,可以帮助您起步。 这是您可能要使用的其他两个功能。
限制访问:您可能要采取的下一步是限制对服务器的访问,因为默认设置允许任何人流向服务器和从服务器进行流传输。 有多种设置方法,例如操作系统防火墙, .htaccess文件 ,甚至使用RTMP模块中的内置访问控制 。
录制流:这种简单的Nginx配置将仅流化并且不会保存您的视频,但这很容易添加。 在Nginx配置中的“ RTMP”部分下,设置录制选项以及您想要保存视频的位置。 确保您设置的路径存在并且Nginx能够写入它。
application live {
live on;
record all;
record_path /var/www/html/recordings;
record_unique on;
}
实时流媒体的世界在不断发展,如果您对更高级的使用感兴趣,则可以在互联网上找到很多其他很棒的资源。 祝你好运,直播愉快!
翻译自: https://opensource.com/article/19/1/basic-live-video-streaming-server
使用Linux创建自己的视频流服务器相关推荐
- 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- 阿里云ECS服务器Linux创建新用户
需求: 让别人下载一个文件,通过国外服务器下载到了他自己的服务器上,就推送到的阿里云上,从阿里云上下载到本地,root用户权限太高需要创建新用户,推到这个新用户上 具体步骤: 已经用root账户登录了 ...
- Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)
文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...
- Linux下各类TCP网络服务器的实现源代码
http://www.linuxeden.com/forum/t146870.html 大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务.这里附上源代码来个小结 ...
- Linux下简单的邮件服务器搭建
Linux下简单的邮件服务器搭建 电子邮件服务简介 电子邮件是因特网上最为流行的应用之一,而邮件服务器是一种用来负责电子邮件收发管理的设备,它构成了电子邮件系统的核心. 电子邮件系统的组成 MUA( ...
- linux suse 共享目录_SUSE Linux 创建NFS共享文件夹
SUSE Linux 创建NFS共享文件夹 服务端的配置: 1.编辑nfs服务的配置文件 /software/suse11 *(rw,sync,no_root_squash,no_all_squash ...
- 在Linux中搭建一个FTP服务器
在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...
- php开发ftp服务器搭建教程,在Linux中搭建一个FTP服务器
在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...
- linux 创建/删除 swap交换分区
linux 创建/删除 swap交换分区 阿牛太帅 2019-02-20 15:16:02 2409 收藏 2 文章标签: swap交换分区 版权 linux 创建swap交换分区 swap 作为 ...
最新文章
- Dubbo 在maven项目中的应用
- TCP/IP协议各层首部汇总
- 有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
- [转载]工作面试时最难的25个问题
- qmake生成vs2013工程文件
- 进入顶层社会的顺序是什么?
- Python概率编程库PyMC应用案例二则
- html页面跨域提交数据,前端跨域的整理
- pip安装第三方库以及版本
- JavaScript中函数的上下文——this
- c#过滤字符串中相同的字符串只保留一个
- 如何往一个指定的地址写入一个值呢
- 服装行业RFID智能管理系统方案详解
- Linux vi命令详解与使用教程
- 架构师之路 — 分布式系统 — 分布式网络分区难题
- 龙格库塔方法在实际生活中的应用(数值计算Java)
- el-select和el-tree结合的下拉树
- 数量关系--容斥原理
- Unity 3D作业七:人物模型
- 通过定义函数,来实现判断1-100之间奇数的目的