Подесите Нгинк на Убунту за стриминг ХЛС видеа уживо

ХТТП Ливе Стреаминг (ХЛС) је веома робустан стриминг видео протокол који имплементира Аппле Инц. ХЛС користи ХТТП трансакције које пролазе кроз заштитне зидове, проксије и могу се са лакоћом дистрибуирати преко ЦДН-ова. Стога је ова технологија у стању да допре до много веће публике него РТП или други УДП протоколи. Већи део видео стриминга уживо на мрежи данас је домаћин скупим системима који користе ХЛС, али су генерално скупи и захтевају много серверских ресурса. Овај водич ће вам показати како да подесите веома приступачан Убунту 14.04 ВУЛТР ВПС за ХЛС догађаје за стриминг уживо користећи само софтвер отвореног кода.

Први корак је да прочитате и подесите свој сервер у складу са Вултр Доц-ом „ Подешавање Нгинк -РТМП-а на Убунту 14.04 “. Упутства у том документу су била најсвеобухватнија за фазу подешавања, у време писања. Напоменуо бих да бисте можда желели да замените „нгинк-1.7.5“ са „нгинк-1.9.4“ или било којом најновијом верзијом Нгинк-а која је доступна. Други предлог је да компајлирате Нгинк са статусним модулом ХТТП стуба како бисте себи дали могућност да пратите колико живих ХЛС гледалаца имате касније.

Уместо компајлирања са:

./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

Пример у овом туторијалу ће креирати и „живи“ и „мобилни“ (оптимизовани) токови и користиће ффмпег (инсталиран у претходном водичу) за генерисање ХЛС стрима прилагођене брзине преноса, оптимизованог за мобилне уређаје. Пример ће такође показати како да натерате сервер да аутоматски снима ваше стримове уживо и да вам омогући да репродукујете снимке као услугу репродукције видеа на захтев (ВОД).

Прво, креирајте структуре фолдера неопходне за држање живих и мобилних ХЛС манифеста и видео фрагмената:

sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings

Вероватно је добра идеја да укључите заштитни зид ако то већ нисте учинили. Ако је тако, морате дозволити саобраћај на портове које користе Нгинк и ХЛС. Ако за сада желите да радите без заштитног зида, занемарите уфв одељак испод.

sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable

ХЛС стриминг захтева значајно другачију Нгинк конфигурацију од РТМП конфигурације у првом чланку. Уредите своју nginx.confдатотеку тако да користите следеће, замењујући „ми-ип“ и „ми-стреам-кеи“ својим подацима. Можете користити било шта што желите за „ми-стреам-кеи“ то је само реч која је јединствена и корисна за вас. Можда ћете желети да прво направите резервну копију оригиналне конфигурационе датотеке, а затим да налепите моје информације о конфигурацији у уређивач, замењујући све што је било тамо:

sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/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;
}   
}
}

Притисните Цтрл + Кс да бисте изашли. Реците „да“ да бисте сачували промене.

Можете пронаћи јасна упутства и примере могућих променљивих у овој nginx.confдатотеци ако упитате свој омиљени претраживач за „нгинк-ртмп директиве“. Користим нгинк-ртмп са ХЛС-ом већ неколико година, без коришћења директива „дозволи објављивање“ и „забрани објављивање“ и видео сам нула случајева да људи користе/нападају моје видео сервере. Дакле, нисам укључио те директиве овде. Прочитајте и додајте ове директиве ако желите.

Након промене nginx.confдатотеке, морате поново покренути Нгинк да бисте користили нову конфигурацију:

sudo service nginx restart

Пажљиво пратите било какве поруке о грешци Нгинк-а и адресирајте све грешке које су можда узроковане грешком у писању, власништвом фасцикле или проблемима са дозволама. Ако немате поруке о грешци, онда сте спремни да креирате свој ток кодирања.

Морате имати видео кодер да бисте креирали стрим. Користим ОБС (Опен Броадцастер Софтваре) - који је отвореног кода и добро ради за мене. Постоје и друга решења која су ван оквира овог упутства. Нећу покривати све о конфигурисању РТМП видео кодера. Сви они захтевају отприлике исте улазне варијабле. Кључна подешавања која ћете морати да унесете да бисте користили моју тачну nginx.confконфигурацију и да би добро функционисали на већини играча/прегледача/платформа су следећа:

  1. Енцодер-к264
  2. Променљива брзина преноса (не ЦБР или константна брзина преноса), највиши квалитет
  3. Максимална брзина преноса - 600 кбпс
  4. Аудио-кодек-ААЦ
  5. Аудио-формат-44,1 кХз
  6. Аудио-битрате-64кбпс
  7. ФМС УРЛ-"ртмп://ми-ип:1935/ливе"
  8. Кључ за стрим-„ми-стреам-кеи“
  9. Ресолутион-640к480
  10. ФПС (фрејмова у секунди) -30
  11. ЦФР (константна брзина кадрова) - Да
  12. Интервал кључног кадра-2 секунде (један кључни кадар сваке 2 секунде)
  13. к264 кодирање Профил-основна линија (може да ради са главним - зависи од плејера који се користи)
  14. к264 ЦПУ Присутан-веома брз

Препоручујем да испробате различите енкодере и експериментишете са њима. Можда ћете желети широки однос ширине и висине - или ће то можда захтевати ваша камера (или други материјали за емитовање). Ако је тако, обавезно промените ове информације у свом кодеру, као и однос ширине и висине наведен у одељку екец-ффмпег nginx.confдатотеке коју сам доставио; у супротном ћете добити неке глупе видео феедове.

Када је ваш кодер подешен, можете све да тестирате. Покрените енкодер помоћу ваше веб камере или неке врсте тест-фодера који ради на њој. У овом тренутку можете погледати своје емитовање помоћу ВЛЦ плејера користећи УРЛ адресе као што су:

http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8

These are for your main and your mobile video streams, respectively. Substitute your IP and stream key accordingly.

After you've successfully broadcasted your first stream check (via ssh or ftp) that your live broadcast was recorded in the /video_recordings folder on your Vultr VPS. You can also try playing this recorded file in VLC with a URL like:

rtmp://my-ip/vod/filename.flv

Nginx stats are also available (with Nginx stub_status). To view visitor/viewer stats, access:

http://my-ip/stats

Да бисте видели свој видео на веб страници, биће вам потребан плејер који се може уградити. Доступни су многи плејери за уградњу који ће репродуковати ХЛС видео. Користим ЈВ Плаиер већ неколико година, али бесплатна верзија неће играти ХЛС. Фловплаиер и Битдасх од Битмовин-а (између осталих решења) довољно су великодушни да бесплатно понуде некомерцијалну верзију својих плејера који ће ваш ХЛС стреам учинити уграђеним у веб страницу. За овај чланак, испробао сам их оба и открио да оба прилично добро раде са мојим видео сервером заснованим на Вултр/Нгинк-у. Укратко ћу показати како сам покренуо Фловплаиер са својом машином за тестирање.

Ако ћете користити ХЛС стриминг уживо на било који редован, одржив или комерцијалан начин, охрабрујем вас да купите лиценцу од Фловплаиер-а или било ког играча који одлучите да користите. Добићете играча који има мање ограничења, више функција и који може бити брендиран за вашу организацију. Такође ћете добити подршку - што може бити веома важно. Осим Вултр ВПС-а, ово је заиста једини трошак повезан са пројектом.

Пре него што урадите било шта друго, важно је да водите рачуна о оним што се назива ограничењима „унакрсних домена“, која би иначе искључила вашу могућност стримовања на веб страницу/веб локацију. Направите crossdomain.xmlдатотеку у nginx/htmlфасцикли и ставите упутства у њу да бисте омогућили проток података између домена:

sudo nano /usr/local/nginx/html/crossdomain.xml

Прво копирајте (са ове странице), а затим налепите (десни клик) у поље нано едитора следеће КСМЛ податке:

<?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>

Притисните Цтрл + О да запишете, затим Цтрл + Кс да сачувате датотеку на диск и изађете.

Узео сам ХТМЛ5 (верзија 6.0.3) Фловплаиер-а који ми је дао бројне датотеке и фасциклу када сам распаковао. Отпремио сам све датотеке и фасциклу у поддиректоријум Нгинк/ХТМЛ основног фолдера који сам назвао „фловплаиер“. Тачан пут је био /usr/local/nginx/html/flowplayer.

Да бисте тестирали наш видео када је уграђен у веб страницу, направите неколико ХТМЛ датотека у корену фасцикле Нгинк/ХТМЛ користећи нано и попуните их следећим садржајем.

Фајл:

sudo nano /usr/local/nginx/html/hls.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

ХТМЛ код:

<!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>

Обавезно замените „ми-ип“ и „ми-стреам-кеи“ својим подацима.

Морате да замените путању flowplayer/skin/functional.cssза знак „#“ у табели стилова href="#". Софтвер за туторијал уклања путању. Морате да попуните УРЛ у src=""делу - уклања га софтвер за упутства, користите 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датотеку укључену у Фловплаиер комплет.

Покрените енкодер помоћу ваше веб камере или неке врсте тест-фодера који ради на њој. Своје емитовање можете да видите у прегледачу користећи следеће УРЛ адресе:

http://my-ip/hls.html
http://my-ip/hls_progressive.html

Прва страница једноставно приказује сваки од ваших стримова – главни и онај на мобилној платформи. Моћи ћете да их покренете и погледате. Приметићете да је ток мобилне платформе мањи по величини. Ови кораци су само да би били сигурни да све ради.

Друга страница приказује један ток. Али је постављен на начин који се зове „прогресивно стриминг“. То значи да када гледалац пушта видео, и сервер и плејер покушавају да пруже гледаоцу стрим високе брзине у битовима и високог квалитета ако га веза гледалаца може да издржи. Ако је њихова веза лоша и не може да одржи везу, она се спушта на приказ нижег битрате (мобилног) тока који је 200 кбпс нижи у пропусном опсегу. Ако желите, можете креирати постепеније, прогресивне токове са ффмпег-ом и конфигурисати их користећи мој пример.

Тестирао сам ову конфигурацију на једном језгру, 1ГБ Вултр ВПС-а и открио сам да је са једним стримом уживо, плус транс-оценираним мобилним стримом који ствара помоћу ффмпег-а, употреба процесора била мања од 35% и да је потрошио само 100МБ мој 1ГБ рам меморије. Сада је то веома ефикасно подешавање.

Ако планирате да стримујете видео који је много већи у пикселима од СД-а, можда ћете открити да морате да користите моћнији ВПС. Био сам радознао у вези са овим и покренуо сам свој главни ток до 1280к960 пиксела и 2Мбпс - што додатно оптерећује ствари. Али ВПС је и даље користио само 50% ЦПУ-а, а употреба меморије је остала на 100МБ. Додао сам десетак прегледача/претраживача и скоро да није било разлике у оптерећењу ВПС-а – само се повећао пропусни опсег. Сигуран сам да би креирање додатних транс оцењених стримова са ффмпег-ом наставило да додатно оптерећује систем.

Користио сам ову врсту сервера у производним окружењима са између 50 и 100 истовремених корисника и открио сам да је коришћење ресурса веома мало порасло са повећањем конекција гледалаца. Експериментишите са тим. Али мислим да би већина корисника била срећна да користи једнојезгарни ВПС од 1 ГБ. Уживајте у свом новом ХЛС серверу за стриминг!


Leave a Comment

Креирање Јекилл блога на Убунту 16.04

Креирање Јекилл блога на Убунту 16.04

Користите другачији систем? Јекилл је одлична алтернатива ВордПресс-у за блоговање или дељење садржаја. Не захтева никакве базе података и веома је лако и

Како инсталирати Скуид проки на ЦентОС

Како инсталирати Скуид проки на ЦентОС

Скуид је популаран, бесплатни Линук програм који вам омогућава да креирате веб проки за прослеђивање. У овом водичу ћете видети како да инсталирате Скуид на ЦентОС да вас преокрене

Како инсталирати Мемцацхед на Убунту 14.04

Како инсталирати Мемцацхед на Убунту 14.04

Мемцацхед је систем базе података високих перформанси који може помоћи да се напуни ваша апликација. Веома је брз јер не уписује на диск, већ т

Инсталирање ИнфлукДБ-а на Убунту 14

Инсталирање ИнфлукДБ-а на Убунту 14

Увод ИнфлукДБ је отворена, дистрибуирана база података временских серија без спољних зависности. Да, прочитали сте параграф без спољних зависности

Подешавање Фаил2бан Убунту к64

Подешавање Фаил2бан Убунту к64

Фаил2бан је програм који прати активност пријављивања на ваш сервер и блокира увредљиве ИП адресе. Подразумевано ће блокирати ИП адресе на 10 минута

Подесите Ред5 Медиа Сервер на Убунту 16.04

Подесите Ред5 Медиа Сервер на Убунту 16.04

Користите другачији систем? Ред5 је медијски сервер отвореног кода имплементиран у Јави који вам омогућава да покренете Фласх вишекорисничке апликације као што је ливе стреамин

Како инсталирати Ванилла Форум на Убунту 16.04

Како инсталирати Ванилла Форум на Убунту 16.04

Користите другачији систем? Ванилла форум је апликација отвореног кода написана у ПХП-у. Потпуно је прилагодљив, једноставан за коришћење и подржава екстерне

Како инсталирати Канбоард на Убунту 18.04 ЛТС

Како инсталирати Канбоард на Убунту 18.04 ЛТС

Користите другачији систем? Увод Канбоард је бесплатни софтвер за управљање пројектима отвореног кода који је дизајниран да олакша и визуализује

Како инсталирати Канбоард на Дебиан 9

Како инсталирати Канбоард на Дебиан 9

Користите другачији систем? Увод Канбоард је бесплатни софтвер за управљање пројектима отвореног кода који је дизајниран да олакша и визуализује

Како инсталирати Тини Тини РСС Реадер на ФрееБСД 11 ФАМП ВПС

Како инсталирати Тини Тини РСС Реадер на ФрееБСД 11 ФАМП ВПС

Користите другачији систем? Тини Тини РСС Реадер је бесплатан читач и агрегатор вести (РСС/Атом) са сопственим хостовањем отвореног кода, дизајниран за

Како инсталирати Гитеа на Дебиан 9

Како инсталирати Гитеа на Дебиан 9

Користите другачији систем? Гитеа је алтернативни систем за контролу верзија отвореног кода који се самостално хостује и покреће Гит. Гитеа је написана на Голангу и јесте

Како инсталирати Вики.јс на ФрееБСД 11

Како инсталирати Вики.јс на ФрееБСД 11

Користите другачији систем? Вики.јс је бесплатна модерна вики апликација отвореног кода изграђена на Ноде.јс, МонгоДБ, Гит и Маркдовн. Вики.јс изворни код је јавни

Како инсталирати Гитеа на Убунту 18.04

Како инсталирати Гитеа на Убунту 18.04

Користите другачији систем? Гитеа је алтернативни систем за контролу верзија отвореног кода који сам хостује и покреће гит. Гитеа је написана на Голангу и јесте

Како инсталирати Тхелиа 2.3 на Дебиан 9

Како инсталирати Тхелиа 2.3 на Дебиан 9

Користите другачији систем? Тхелиа је алатка отвореног кода за креирање веб локација за е-пословање и управљање онлајн садржајем написаним у ПХП-у. Тхелиа изворни код и

Како инсталирати Мицровебер на ЦентОС 7

Како инсталирати Мицровебер на ЦентОС 7

Користите другачији систем? Мицровебер је ЦМС и онлајн продавница отвореног кода. Мицровебер изворни код се налази на ГитХуб-у. Овај водич ће вам показати

Инсталирање Мицровебер-а на Убунту 16.04

Инсталирање Мицровебер-а на Убунту 16.04

Користите другачији систем? Мицровебер је ЦМС и онлајн продавница отвореног кода. Мицровебер изворни код се налази на ГитХуб-у. Овај водич ће вам показати

Како инсталирати МОДКС Револутион на Убунту 16.04 ЛАМП ВПС

Како инсталирати МОДКС Револутион на Убунту 16.04 ЛАМП ВПС

Користите другачији систем? МОДКС Револутион је брз, флексибилан, скалабилан, бесплатан и отвореног кода, систем за управљање садржајем (ЦМС) за предузећа написан и

Како инсталирати Маттермост 4.1 на ЦентОС 7

Како инсталирати Маттермост 4.1 на ЦентОС 7

Користите другачији систем? Маттермост је опен соурце алтернатива Слацк СААС сервису за размену порука. Другим речима, са Маттермостом, ца

Како инсталирати дотЦМС на Убунту 16.04

Како инсталирати дотЦМС на Убунту 16.04

Користите другачији систем? ДотЦМС је систем за управљање садржајем отвореног кода за предузећа написан на Јави. Садржи скоро све потребне карактеристике т

Како инсталирати Пагекит 1.0 ЦМС на ФрееБСД 11 ФАМП ВПС

Како инсталирати Пагекит 1.0 ЦМС на ФрееБСД 11 ФАМП ВПС

Користите другачији систем? Пагекит 1.0 ЦМС је прелеп, модуларан, проширив и лаган, бесплатан систем за управљање садржајем отвореног кода (ЦМС) са

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више