Створення блогу Jekyll в Ubuntu 16.04
Використання іншої системи? Jekyll — чудова альтернатива WordPress для ведення блогів або обміну вмістом. Для цього не потрібні ніякі бази даних, і це дуже легко i
HTTP Live Streaming (HLS) — це дуже надійний протокол потокового відео, реалізований Apple Inc. HLS використовує HTTP-транзакції, які обходять брандмауери, проксі та можуть легко розповсюджуватися через CDN. Таким чином, ця технологія здатна охопити набагато більшу аудиторію перегляду, ніж RTP або інші протоколи на основі UDP. Велика частина потокового відео в прямому ефірі сьогодні розміщується в дорогих системах, які використовують HLS, але вони, як правило, дорогі та вимагають багато ресурсів сервера. Цей підручник покаже вам, як налаштувати дуже доступний VPS Ubuntu 14.04 VULTR для проведення подій у прямому ефірі HLS, використовуючи лише програмне забезпечення з відкритим кодом.
Першим кроком є прочитання та налаштування сервера відповідно до Vultr Doc « Налаштування Nginx-RTMP на Ubuntu 14.04 ». Інструкції в цьому документі були найбільш вичерпними для етапу налаштування на момент написання. Я хотів би зазначити, що ви можете замінити «nginx-1.7.5» на «nginx-1.9.4» або будь-яку останню версію Nginx. Інша пропозиція — компілювати Nginx з модулем статусу заглушки HTTP, щоб дати собі можливість відстежувати, скільки глядачів 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 вимагає значно відмінної конфігурації Nginx від конфігурації RTMP у першій статті. Відредагуйте свій 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». Я використовую nginx-rtmp з HLS вже кілька років, не використовуючи директиви «дозволити публікувати» та «заборонити публікацію», і я не бачив жодного випадку, щоб люди використовували/вторглися на мої відеосервери. Тому я не включив ці директиви сюди. Прочитайте та додайте ці директиви, якщо хочете.
Після зміни nginx.conf
файлу ви повинні перезапустити Nginx, щоб використовувати нову конфігурацію:
sudo service nginx restart
Уважно стежте за будь-якими повідомленнями про помилки Nginx і вирішуйте будь-які помилки, які могли бути спричинені неправильним написанням, правом власності на папку або проблемами з дозволами. Якщо у вас немає повідомлень про помилки, ви готові створити свій потік кодування.
Щоб створити потік, потрібно мати відеокодер. Я використовую OBS (Open Broadcaster Software) – програмне забезпечення з відкритим кодом і для мене добре працює. Є й інші рішення на вибір, які виходять за рамки цього підручника. Я не буду описувати все про налаштування відеокодера RTMP. Проте всі вони вимагають приблизно однакових вхідних змінних. Основні налаштування, які вам потрібно буде ввести, щоб використовувати мою точну nginx.conf
конфігурацію та добре функціонувати на більшості програвачів/браузерів/платформ, є такими:
Я рекомендую спробувати різні кодери та поекспериментувати з ними. Ви можете побажати широке співвідношення сторін, або ваша камера (або інші трансляційні) матеріали можуть вимагати цього. Якщо так, не забудьте змінити цю інформацію у своєму кодері, а також співвідношення сторін, зазначене в розділі exec-ffmpeg nginx.conf
файлу, який я надав; інакше ви отримаєте кілька дурних відеоканалів.
Коли ваш кодер налаштовано, ви можете все це перевірити. Запустіть кодер за допомогою вашої веб-камери або якогось тестового корму, що працює на ній. На цьому етапі ви можете переглянути свою трансляцію за допомогою програвача VLC, використовуючи такі URL-адреси:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Вони призначені для основного та мобільного відеопотоків відповідно. Замініть свою IP-адресу та ключ потоку відповідно.
Після того, як ви успішно транслювали свою першу перевірку потоку (через ssh або ftp), ваша пряма трансляція була записана в /video_recordings
папку на вашому Vultr VPS. Ви також можете спробувати відтворити цей записаний файл у VLC з URL-адресою:
rtmp://my-ip/vod/filename.flv
Статистика Nginx також доступна (з Nginx stub_status). Щоб переглянути статистику відвідувачів/глядачів, перейдіть до:
http://my-ip/stats
Щоб переглянути відео на веб-сторінці, вам знадобиться вбудований програвач. Доступно багато вбудовуваних програвачів, які відтворюють відео HLS. Я використовую JW Player вже кілька років, але безкоштовна версія не підтримує HLS. Flowplayer і Bitdash від Bitmovin (серед інших рішень) досить щедрі, щоб безкоштовно запропонувати некомерційну версію своїх програвачів, яка дозволить зробити ваш потік HLS вбудованим у веб-сторінку. У цій статті я спробував обидва і виявив, що вони добре працюють з моїм відеосервером на базі Vultr/Nginx. Я коротко покажу, як я запустив Flowplayer з моєю тестовою машиною.
Якщо ви збираєтеся використовувати пряму трансляцію HLS будь-яким звичайним, постійним або комерційним способом, я б радив вам придбати ліцензію у Flowplayer або будь-якого іншого програвача, який ви вирішите використовувати. Ви отримаєте програвач, який має менше обмежень, більше функцій і може бути брендованим для вашої організації. Ви також отримаєте підтримку, що може бути дуже важливим. Крім Vultr VPS, це насправді єдина вартість, пов’язана з проектом.
Перш ніж робити що-небудь інше, важливо подбати про те, що називаються «междоменними» обмеженнями, які в іншому випадку вимкнули б вашу можливість потокової передачі на веб-сторінку/веб-сайт. Створіть crossdomain.xml
файл у своїй nginx/html
папці та додайте в нього інструкції, щоб дозволити передачу даних між доменами:
sudo nano /usr/local/nginx/html/crossdomain.xml
Спочатку скопіюйте (з цієї сторінки), а потім вставте (клацніть правою кнопкою миші) у поле редактора nano такі дані 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>
Натисніть Ctrl + O, щоб записати, потім Ctrl + X, щоб зберегти файл на диск і вийти.
Я взяв HTML5 (версія 6.0.3) Flowplayer, який дав мені ряд файлів і папку під час розархівування. Я завантажив усі файли та папку до підпапки кореневої папки Nginx/HTML, яку я назвав «flowplayer». Точний шлях був /usr/local/nginx/html/flowplayer
.
Щоб перевірити наше відео, яке вбудовано у веб-сторінку, створіть пару файлів HTML у корені папки Nginx/HTML за допомогою nano та заповніть їх таким вмістом.
Файл:
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="#"
. Програмне забезпечення підручника розбирає шлях. Ви повинні заповнити URL-адресу в 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
файл, що входить до комплекту Flowplayer.
Запустіть кодер за допомогою вашої веб-камери або якогось тестового корму, що працює на ній. Ви можете переглянути свою трансляцію у веб-переглядачі, використовуючи такі URL-адреси:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
На першій сторінці просто показано кожен з ваших потоків - основний і мобільний платформний. Ви зможете запустити їх обидва та переглянути. Ви помітите, що потік мобільної платформи менший за розміром. Ці дії призначені лише для того, щоб переконатися, що все працює.
На другій сторінці показано один потік. Але він налаштований способом, який називається «прогресивним потоком». Це означає, що коли глядач відтворює відео, як сервер, так і програвач намагаються надати глядачеві високоякісний потік із високим бітрейтом, якщо з’єднання глядачів може його підтримувати. Якщо їхнє з’єднання погане і воно не може підтримувати з’єднання, воно згортається до показу потоку з нижчим бітрейтом (мобільний), який на 200 кбіт/с нижчий за пропускною здатністю. Якщо ви бажаєте, ви можете створити більш плавні, прогресивні потоки за допомогою ffmpeg і налаштувати їх за допомогою мого прикладу.
Я перевірив цю конфігурацію на одному ядрі, 1 ГБ Vultr VPS, і я виявив, що з одним прямим потоком, а також мобільним потоком із транс-рейтингом, який він створює за допомогою ffmpeg, використання процесора було менше 35% і він споживав лише 100 МБ мій 1 ГБ оперативної пам'яті. Тепер це дуже ефективне налаштування.
Якщо ви плануєте транслювати відео, розмір якого в пікселях набагато більше, ніж SD, ви можете виявити, що вам доведеться використовувати потужніший VPS. Мені це було цікаво, і я запустив свій основний потік до 1280x960 пікселів і 2 Мбіт/с, що створило додаткове навантаження на речі. Але VPS все ще використовував лише 50% ЦП, а використання пам’яті залишилося на рівні 100 МБ. Я додав дюжину глядачів/браузерів, і це майже не змінило навантаження на VPS — збільшилася лише пропускна здатність. Я впевнений, що створення додаткових транс-потоків за допомогою ffmpeg і надалі створюватиме додаткове навантаження на систему.
Я використовував цей тип серверів у виробничих середовищах із від 50 до 100 одночасних користувачів і виявив, що використання ресурсів дуже мало зросло із збільшенням підключень глядача. Експериментуйте з ним. Але я думаю, що більшість користувачів із задоволенням використовують одноядерний VPS на 1 Гб. Насолоджуйтесь своїм новим потоковим сервером HLS!
Використання іншої системи? Jekyll — чудова альтернатива WordPress для ведення блогів або обміну вмістом. Для цього не потрібні ніякі бази даних, і це дуже легко i
Memcached — це високопродуктивна система баз даних, яка може допомогти розширити вашу програму. Це дуже швидко, оскільки він не записує на диск, а замість цього t
Вступ InfluxDB — це розподілена база даних часових рядів з відкритим вихідним кодом без зовнішніх залежностей. Так, ви читаєте параграф про відсутність зовнішніх залежностей
Fail2ban — це програма, яка відстежує активність входу на ваш сервер і блокує невірні IP-адреси. За замовчуванням він блокує IP-адреси на 10 хвилин
Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд
Використання іншої системи? Вступ Kanboard — це безкоштовна програма з відкритим вихідним кодом для управління проектами, яка призначена для полегшення та візуалізації
Використання іншої системи? Вступ Kanboard — це безкоштовна програма з відкритим вихідним кодом для управління проектами, яка призначена для полегшення та візуалізації
Використання іншої системи? Tiny Tiny RSS Reader — це безкоштовний зчитувач і агрегатор новин (RSS/Atom) із відкритим вихідним кодом, що розміщується на власному веб-сторінці.
Використання іншої системи? Gitea — це альтернативна система контролю версій із відкритим вихідним кодом на базі Git. Gitea написана на Голанг і є
Використання іншої системи? Wiki.js — це безкоштовний сучасний вікі-додаток з відкритим вихідним кодом, побудований на Node.js, MongoDB, Git і Markdown. Вихідний код Wiki.js є публічним
Використання іншої системи? Gitea — це альтернативна система контролю версій із відкритим вихідним кодом, яка працює на базі git. Gitea написана на Голанг і є
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.
Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд
Використання іншої системи? DotCMS — це система керування вмістом корпоративного рівня з відкритим вихідним кодом, написана на Java. Він містить майже всі необхідні функції
Використання іншої системи? Pagekit 1.0 CMS – це красива, модульна, розширювана та легка, безкоштовна система керування вмістом (CMS) з відкритим вихідним кодом.
Використання іншої системи? BigTree CMS 4.2 — це швидка та легка, безкоштовна система управління вмістом (CMS) корпоративного рівня з відкритим вихідним кодом з широким
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована система управління вмістом (CMS) корпоративного рівня з відкритим кодом, написана на PHP. Це я
Використання іншої системи? Concrete5 — це CMS з відкритим вихідним кодом, яка пропонує багато відмінних і корисних функцій, які допомагають редакторам легко створювати вміст.
Adminer — це легка альтернатива phpMyAdmin. Для порівняння, його загальний розмір пакета становить 400 КБ проти 4,2 МБ phpMyAdmin. На відміну від phpMyAdmin, який
У цьому посібнику ви навчитеся інсталювати програмне забезпечення NextCloud. Ми будемо використовувати Caddy для потреб нашого веб-сервера, оскільки це спрощує налаштування
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше