如何在CentOS 7上安装Oxwall
Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,
HTTP Live Streaming(HLS)是由Apple Inc.实现的非常强大的流视频协议。HLS使用HTTP事务,该事务穿越防火墙,代理,并且可以轻松地通过CDN分发。因此,与RTP或其他基于UDP的协议相比,该技术能够吸引更多的观众。如今,在线上的许多实时流视频都由使用HLS的昂贵系统托管,但它们通常很昂贵,并且需要大量服务器资源。本教程将向您展示如何设置非常实惠的Ubuntu 14.04 VULTR VPS,以仅使用开源软件来进行HLS实时流事件。
第一步是根据Vultr Doc“ 在Ubuntu 14.04上安装Nginx-RTMP ”读取并设置服务器。在撰写本文时,该文档中的说明对于设置阶段是最全面的。我要提到的是,您可能希望将“ nginx-1.7.5”替换为“ nginx-1.9.4”或任何可用的Nginx最新版本。另一个建议是使用HTTP存根状态模块编译Nginx,以便使自己能够监视以后有多少个实时HLS查看器。
而不是编译:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
在必备文档中概述的过程中使用此字符串:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
本教程中的示例将创建“实时”和“移动”(优化)流,并将使用ffmpeg(安装在上一教程中)生成经过比特率调整,针对移动设备优化的HLS流。该示例还将说明如何使服务器自动记录您的实时流,以及如何使您将记录作为视频点播(VOD)回放服务进行回放。
首先,创建保存实时和移动HLS清单和视频片段所需的文件夹结构:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
如果尚未打开防火墙,则可能是个好主意。如果是这样,则必须允许流量进入Nginx和HLS使用的端口。如果您现在想在没有防火墙的情况下运行,请忽略下面的ufw部分。
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
HLS流传输需要与第一篇文章中的RTMP配置明显不同的Nginx配置。编辑nginx.conf
文件以使用以下内容,将“ my-ip”和“ my-stream-key”替换为您的信息。您可以将任何您想使用的东西用作“ my-stream-key”,这只是一个对您有帮助的独特单词。您可能希望先备份原始配置文件,然后将我提供的配置信息粘贴到编辑器中,替换那里的所有内容:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
新的nginx.conf:
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
allow play all;
#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
application live {
allow play all;
live on;
record all;
record_path /video_recordings;
record_unique on;
hls on;
hls_nested on;
hls_path /HLS/live;
hls_fragment 10s;
#creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
exec ffmpeg -i rtmp://192.168.254.178:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.254.178:1935/mobile/$;
}
#creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /HLS/mobile;
hls_fragment 10s;
}
#allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv"
application vod {
play /video_recordings;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name 192.168.254.178;
#creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
location /live {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/live;
add_header Cache-Control no-cache;
}
#creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8"
location /mobile {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/mobile;
add_header Cache-Control no-cache;
}
#allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
location /stats {
stub_status;
}
#allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
location / {
root html;
index index.html index.htm;
}
}
}
按Ctrl + X退出。说“是”以保存更改。
nginx.conf
如果您在自己喜欢的搜索引擎中查询“ nginx-rtmp指令” ,则可以在此文件中找到清晰的指令和变量示例。多年来,我一直在HLS中使用nginx-rtmp,而未使用“ allow publish”和“ deny publish”指令,并且已经看到零个实例使用/入侵我的视频服务器。因此,我没有在此处包括这些指令。阅读并根据需要添加这些指令。
更改nginx.conf
文件后,必须重新启动Nginx才能使用新配置:
sudo service nginx restart
仔细观察是否有Nginx错误消息,并解决由拼写错误,文件夹所有权或权限问题引起的任何错误。如果没有错误消息,则准备创建编码流。
您必须具有视频编码器才能创建流。我使用OBS(开放广播软件)-这是开源的,对我来说效果很好。还有其他解决方案可供选择,这些解决方案不在本教程的讨论范围之内。我不会介绍有关配置RTMP视频编码器的所有内容。它们都需要大致相同的输入变量。要使用我的确切nginx.conf
配置并在大多数播放器/浏览器/平台上正常运行,您需要输入以下关键设置:
我建议尝试使用不同的编码器并进行试验。您可能需要宽高比-或您的相机(或其他广播)材料可能需要它。如果是这样,请确保更改编码器中的此信息以及nginx.conf
我提供的文件的exec-ffmpeg部分中列出的宽高比;否则,您将获得一些看起来很愚蠢的视频供稿。
编码器设置完成后,就可以进行全部测试。使用网络摄像头或在其上运行的某种测试推杆启动编码器。此时,您可以使用VLC播放器使用以下网址查看您的广播:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
这些分别用于您的主要和移动视频流。分别替换您的IP和流密钥。
成功广播/video_recordings
完第一个流检查(通过ssh或ftp)后,您的实时广播已记录在Vultr VPS 的文件夹中。您也可以尝试使用以下网址在VLC中播放此录制的文件:
rtmp://my-ip/vod/filename.flv
Nginx统计信息也可用(带有Nginx stub_status)。要查看访问者/查看者的统计信息,请访问:
http://my-ip/stats
���了在网页上观看视频,您需要一个可嵌入的播放器。有许多可嵌入的播放器可以播放HLS视频。我已经使用JW Player几年了,但是免费版本将无法播放HLS。Bitmovin的Flowplayer和Bitdash(包括其他解决方案)足够慷慨地免费提供其播放器的非商业版本,这将使您的HLS流嵌入到网页中。在本文中,我对它们都进行了尝试,发现它们都可以与基于Vultr / Nginx的视频服务器一起很好地工作。我将简要展示如何让Flowplayer与我的测试台机器一起使用。
如果您打算以任何常规,持续或商业方式使用实时HLS流,我建议您从Flowplayer或决定使用的任何播放器购买许可证。您将获得一个播放器,它具有更少的限制,更多的功能,并且可以被烙印到您的组织中。您还将获得支持-这可能非常重要。除了Vultr VPS,这实际上是与项目相关的唯一成本。
在执行其他任何操作之前,请务必注意所谓的“跨域”限制,否则这些限制将关闭您流式传输到网页/网站的能力。crossdomain.xml
在nginx/html
文件夹中创建一个文件,并在其中放置说明,以允许数据在域之间流动:
sudo nano /usr/local/nginx/html/crossdomain.xml
首先复制(从此页面),然后将以下XML数据粘贴(右键单击)到nano编辑器字段中:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
按Ctrl + O进行写出,然后按Ctrl + X将文件保存到磁盘并退出。
我抓取了Flowplayer的HTML5(版本6.0.3),解压缩后给了我许多文件和文件夹。我将所有文件和文件夹上载到了名为“ flowplayer”的Nginx / HTML根文件夹的子文件夹中。确切的路径是/usr/local/nginx/html/flowplayer
。
为了在嵌入网页时测试我们的视频,请使用nano在Nginx / HTML文件夹的根目录中创建几个HTML文件,并在其中填充以下内容。
文件:
sudo nano /usr/local/nginx/html/hls.html
HTML代码:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
</head>
<body>
640x480 664kbps (live) Desktop Browsers<br>
<div style="width:640px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
<br><br>
480x360 464kbps (mobile) Mobile Browsers <br>
<div style="width:480px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
</body>
文件:
sudo nano /usr/local/nginx/html/hls_progressive.html
HTML代码:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
<style> .flowplayer { width: 640px; } </style>
</head>
<body>
<div class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
<source type="application/x-mpegurl" src="">
</video>
</div>
<br>
</body>
确保用您的数据替换“ my-ip”和“ my-stream-key”。
您必须flowplayer/skin/functional.css
在样式表中用路径替换“#”符号href="#"
。教程软件将清除路径。您必须在该src=""
部分中填写一个URL- 教程软件分别将其剥离,使用http://my-ip/live/my-stream-key/index.m3u8
和http://my-ip/mobile/my-stream-key/index.m3u8
。您还必须添加脚本src
的头部标签都jquery-1.11.2.min.js
和flowplayer.min.js
。标签已被教程软件剥离。您可以通过查看example html
Flowplayer套件随附的文件找到如何设置这些标签的样式。
使用网络摄像头或在其上运行的某种测试推杆启动编码器。您可以使用以下URL在浏览器中查看广播:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
第一页仅显示您的每个流-主流和移动平台。您将能够启动它们并查看它们。您会注意到,移动平台流的大小较小。这些步骤只是为了确保一切都在运行。
第二页显示单个流。但这是以所谓的“渐进式流”进行设置的。这意味着当观看者播放视频时,如果观看者的连接可以维持视频流,则服务器和播放器都将尝试向观看者提供高比特率,高质量的流。如果它们的连接不良并且无法维持连接,则会向下滚动以显示带宽降低200 kbps的较低比特率(移动)流。如果您愿意,可以使用ffmpeg创建更多的渐进式渐进流,并使用我的示例进行配置。
我已经在单核1GB Vultr VPS上测试了此配置,发现使用单个实时流以及使用ffmpeg创建的转换后的移动流,cpu使用率不到35%,并且仅消耗了100MB我的1GB RAM。现在,这是一个非常有效的设置。
如果计划流传输的像素尺寸比SD大得多的视频,则可能会发现您必须使用功能更强大的VPS。我对此感到很好奇,并把主流运行到1280x960像素和2Mbps,这给事情增加了负担。但是VPS仍仅使用50%的CPU,内存使用量仍为100MB。我添加了十几个查看器/浏览器,这对VPS的负载几乎没有影响-仅增加了使用的带宽。我敢肯定,使用ffmpeg创建其他转换速率的流将继续给系统带来额外的负担。
我已经在具有50至100个并发用户的生产环境中使用这种类型的服务器,并且发现资源使用率随着查看器连接的增加而增加很少。尝试一下。但我认为,大多数用户会喜欢使用单核1GB VPS。享受您的新HLS流服务器!
Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,
Spigot是对Minecraft服务器软件CraftBukkit的修改。Spigot优化了服务器资源的使用,确保您的播放器获得最佳体验
使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)
使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具
使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由
使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示
使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量
本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio
使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何
使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有
使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。
FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o
本指南涵盖了针对运行Ubuntu 16.04的Vultr实例的GitBucket的基本安装和设置,并假定您正在以以下方式执行命令:
使用其他系统?简介Attendize是一个基于Laravel PHP框架的开源门票销售和事件管理平台。Attendiz
使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比
使用其他系统?Selfoss RSS Reader是一种免费的开源自托管基于Web的多功能实时流,mashup,新闻提要(RSS / Atom)阅读器
使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是
使用其他系统?Dolibarr是面向企业的开源企业资源计划(ERP)和客户关系管理(CRM)。多利巴尔
使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。