实时视频流非常受欢迎,并且仍在增长。 亚马逊的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 + XY ,然后按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 + XY ,然后按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创建自己的视频流服务器相关推荐

  1. 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)

    1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...

  2. 阿里云ECS服务器Linux创建新用户

    需求: 让别人下载一个文件,通过国外服务器下载到了他自己的服务器上,就推送到的阿里云上,从阿里云上下载到本地,root用户权限太高需要创建新用户,推到这个新用户上 具体步骤: 已经用root账户登录了 ...

  3. Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)

    文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...

  4. Linux下各类TCP网络服务器的实现源代码

    http://www.linuxeden.com/forum/t146870.html 大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务.这里附上源代码来个小结 ...

  5. Linux下简单的邮件服务器搭建

    Linux下简单的邮件服务器搭建 电子邮件服务简介 电子邮件是因特网上最为流行的应用之一,而邮件服务器是一种用来负责电子邮件收发管理的设备,它构成了电子邮件系统的核心. 电子邮件系统的组成  MUA( ...

  6. linux suse 共享目录_SUSE Linux 创建NFS共享文件夹

    SUSE Linux 创建NFS共享文件夹 服务端的配置: 1.编辑nfs服务的配置文件 /software/suse11 *(rw,sync,no_root_squash,no_all_squash ...

  7. 在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  8. php开发ftp服务器搭建教程,在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  9. linux 创建/删除 swap交换分区

    linux 创建/删除 swap交换分区 阿牛太帅 2019-02-20 15:16:02  2409  收藏 2 文章标签: swap交换分区 版权 linux 创建swap交换分区 swap 作为 ...

最新文章

  1. Dubbo 在maven项目中的应用
  2. TCP/IP协议各层首部汇总
  3. 有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
  4. [转载]工作面试时最难的25个问题
  5. qmake生成vs2013工程文件
  6. 进入顶层社会的顺序是什么?
  7. Python概率编程库PyMC应用案例二则
  8. html页面跨域提交数据,前端跨域的整理
  9. pip安装第三方库以及版本
  10. JavaScript中函数的上下文——this
  11. c#过滤字符串中相同的字符串只保留一个
  12. 如何往一个指定的地址写入一个值呢
  13. 服装行业RFID智能管理系统方案详解
  14. Linux vi命令详解与使用教程
  15. 架构师之路 — 分布式系统 — 分布式网络分区难题
  16. 龙格库塔方法在实际生活中的应用(数值计算Java)
  17. el-select和el-tree结合的下拉树
  18. 数量关系--容斥原理
  19. Unity 3D作业七:人物模型
  20. 通过定义函数,来实现判断1-100之间奇数的目的

热门文章

  1. 希尔排序(分而治之)
  2. 字节JAVA研发面试
  3. springboot 整合hbase
  4. jdbc连接mysql问题
  5. Mac中使用svn进行项目管理
  6. 关于Linux服务器改变为普通用户进行运维的操作手记
  7. Lily have a dog
  8. 【医院综合管理专题】医院服务质量管理制度与规范
  9. 远程桌面超出最大连接数问题
  10. 山东理工oj答案java_众数问题(山东理工OJ)