Hostwinds Учебники
Результаты поиска для:
Содержание
Теги: VPS
Независимо от того, хотите ли вы, чтобы сервер действовал в качестве реле для вас, чтобы иметь возможность сразу повторно трансмировать в нескольких службах, перенесите свой видео в разные форматы, резолюции или битрейты или для потока от предварительно записанных видео, хороший метод Для этого с сервером работает nginx скомпилирован с Модуль RTMP.
Живая трансляция использует много пропускной способности. Точная пропускная способность использует на количество потоков, а также их битрейт.
Уменьшение битрейта кодирования видео может снизить использование пропускной способности на стоимость качества видео.
RTMP означает Протокол обмена сообщениями в реальном времени и является распространенным стандартизированным способом, которым многие сервисы (такие как YouTube, Twitch и т. д.) используют или, по крайней мере, предлагают транслировать видео в Интернете.
В этом руководстве в качестве операционной системы сервера используется CentOS 7.
NGINX + RTMP можно настроить в других дистрибутивах Linux и следует за теми же инструкциями, используя менеджер по пакету других дистрибутивов и путей файлов по умолчанию.
Обновите вашу систему
yum update -y
Установите инструменты разработки CentOS
yum groupinstall -y 'Development Tools
Установить репозиторий EPEL
yum install -y epel-release
Установить зависимости
yum install -y wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel PCRE-devel GeoIP GeoIP-devel
Добавьте ключ GPG ffmpeg и установите ffmpeg
rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install -y ffmpeg ffmpeg-devel
Создать или перейти в рабочий каталог
cd /usr/local/src/
Загрузите последнюю версию Nginx из Вот
wget https://nginx.org/download/nginx-1.17.0.tar.gz
tar -xzvf nginx-1.17.0.tar.gz
Клонируйте модуль Nginx RTMP из Вот
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
Удалите ненужные файлы tar
rm -f *.tar.gz
Перейдите в загруженную папку Nginx
cd nginx-1.17.0/
Запустите сценарий конфигурации, чтобы добавить SSL и модуль RTMP.
Обновите пункт файла-модуля ADDD по мере необходимости, чтобы указать, где вы клонировали модуль NGINX-RTMP
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
Скомпилируйте Nginx
make
Установить Nginx
make install
Запустите и включите Nginx
systemctl start nginx
systemctl enable nginx
Чтобы настроить службу RTMP, вам необходимо добавить раздел RTMP в свой файл конфигурации NGINX, который должен быть по умолчанию, должен быть /etc/nginx/nginx.conf.
Добавьте раздел RTMP в файл conf следующим образом:
rtmp {
server {
listen 1935; # Listen on standard RTMP port
chunk_size 4096;
# Sample RTMP Application
application live {
live on; # Enable listening for live streams to this application
record off; # Do not record the stream
meta copy; # Copy the incoming metadata for the outgoing metadata
}
}
}
В этой конфигурации мы сказали серверу прослушивать любые запросы на порт 1935 (порт по умолчанию для RTMP) и указал приложение, называемое «Live», чтобы принять наши потоки.
Этой конфигурации достаточно, чтобы сервер принимал поток, но есть и другие конфигурации, которые вы можете установить для дополнительных функций.
Затем, когда вы будете транслироваться, вы устанавливаете пункт назначения в виде RTMP: // Server_address / Application, где Server_address - это IP-адрес домена вашего сервера, и приложение - это имя приложения, которое вы настроили в конфигурации NGINIX («Live» в этом примере в этом примере.).
Пример: rtmp: //127.0.0.1/live
В блоке сервера {} вы можете настроить столько приложений, сколько вы хотите. Единственное ограничение на месте состоит в том, что каждое приложение должно иметь уникальное имя.
Вы можете указать разрешения для того, что IPS может транслироваться на сервере, и что IPS может воспроизводить поток с этого сервера.
Чтобы добавить правило разрешений, добавьте строку в блоке сервера {}, либо блок приложения {} в следующем формате:
Использование «Разрешить» или «deny» указывает, позволяет ли правило или отрицает соединение из указанного источника.
Использование «Публикация» указывает, что местоположение источника может поток на этот сервер.Использование «Play» указывает, что местоположение источника может воспроизводить поток с этого сервера.
Используя «все», поскольку местоположение действует как улов для любого адреса, подключающегося к этому серверу.В противном случае вы можете установить определенный IP-адрес.
Установка правила разрешения на блоке сервера {} делает постановление глобальной во всем приложениям. Установка правила разрешений в блоке Application {} применяет правило только к этому приложению.
Примеры:
Разрешить 127.0.0.1 потоковую передачу на этот сервер, но запретить любые другие источники:
allow publish 127.0.0.1;
deny publish all;
Разрешить воспроизведение для всех источников, кроме 127.0.0.1:
allow play all;
deny play 127.0.0.1;
Вы можете использовать оператор EXEC из блока {} {}, чтобы выполнить команду. Используя этот метод, вы можете пройти полученный поток RTMP в видеопроцессор, такой как FFMPEG, для кодирования.
Пример: Закодируйте полученный поток в формат mp4 и сохраните его как файл
exec ffmpeg -i rtmp://localhost/$app/$name -c copy -f mp4 /path/to/file/$name.mp4;
Вы можете протолкнуть поток из приложения на другой приемник, просто используя кнопку push.
Например, вы можете добавить следующее утверждение на любое блок {}, чтобы протолкнуть полученный поток, используя один из их поглощать адреса (В этом случае адрес Сиэтл). Просто замените {Stream_key} с помощью ключа Twitch Stream.
push rtmp://live-sea.twitch.tv/app/{stream_key};
Вы можете сделать то же самое для любой другой платформы, которая предлагает RTMP Ingest Addrames, которые вы можете транслировать, и может даже перечислить несколько выпускных операторов, чтобы позволить потоковую передачу на несколько платформ сразу.
HLS, или HTTP Live Streaming, является довольно популярным форматом для потокового видео над протоколами HTTP и HTTPS, что делает его значительно легче встроить поток на веб-страницу.
Чтобы включить HLS, просто добавьте следующие операторы в любой из блоков {} вашего приложения.
hls on;
hls_path /mnt/hls/$app;
hls_fragment 2s;
hls_playlist_length 4s;
Затем убедитесь, что каталог HLS_PATH существует, запустив команду:
mkdir -p /mnt/has/live
Вы можете изменить / mnt / hls / $ приложение в любой путь к папке, который вы хотите.$ Приложение будет заменено на имя приложения (в этом случае, «Live»).
Это будет место, где будут сохранены файлы HLS .m3u8.
Вы также можете настроить значения hls_fragement и hls_playlist_length, чтобы удовлетворить ваши потребности.
2s и 4s - это значения, которые мы нашли, чтобы работать лучшее при потоковой передаче с интервалом 2-секундного ключевого кадра.
Затем вам также необходимо добавить блок HTTP {} в конфигурацию Nginx. Этот блок должен быть блоком верхнего уровня, на том же уровне, что и существующий блок RTMP {}. Этот новый блок должен быть следующим:
HTTP {
# Disable server tokens
server_tokens off;
# Include MIME types
include mime.types;
# Set timeout limit
keepalive\_timeout 65;
server {
listen 80; # HTTP IPv4
listen \[::\]:80; # HTTP IPv6
server\_name example.com www.example.com # Your domain (RECOMMENDED BUT OPTIONAL)
location / {
# Disable cache
add\_header Cache-Control no-cache;
# Enable CORS
add\_header 'Access-Control-Allow-Origin' '\*' always;
add\_header 'Access-Control-Expose-Headers' 'Content-Length';
# Allow CORS preflight requests
if ($request\_method = 'OPTIONS') {
add\_header 'Access-Control-Allow-Origin' '\*';
add\_header 'Access-Control-Max-Age' 1728000;
add\_header 'Content-Type' 'text/plain charset=UTF-8';
add\_header 'Content-Length' 0;
return 204;
}
# Specify file type to be served (.m3u8)
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t;
}
# File location
# Set to the same hls\_path specified in the rtmp application
root /mnt/hls;
}
}
}
Вы можете изменить порты, перечисленные в прослушивании к заявлениям в любой порт, который вы хотите служить видео. Если вы измените порт вдали от стандартных портов HTTP / S (80 и 443), вам нужно будет указать порт после адреса сервера в следующем формате: http: // {server_address}: {port}.
Пример: http://example.com:8080/
После этого сохранения этих изменений в файл конфигурации NGINX перезапустите Nginx, запустив команду:
systemctl restart nginx
При включенном HLS вы теперь можете встраивать поток на свои веб-страницы с помощью любого видеоплеера, поддерживающего воспроизведение HLS, например Video.JS или PlayerJS.
Вы предоставите свой игрок с адресом источника в следующем формате:
HTTP://{server_address}/{app_name}/{secret_key}.m3u8
{Server_address} будет вашим IP или домен вашего сервера, {app_name} будет именем блока приложения {}, которое вы передаете, и {secret_key} будет секретным ключом, который вы устанавливаете в ваше потоковое программное обеспечение (например, ).
Пример:
http://example.com/live/secret_key.m3u8
Вы также можете служить HL через HTTPS. Для этого необходимо предоставить сертификат SSL и закрытый ключ в блоке сервера {} со следующими утверждениями:
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/privkey.pem;
Сертификат должен быть для домена, который вы указали в операторе Server_Name.
Затем вам также необходимо редактировать / добавить заявления по слушанию, чтобы прослушать порта 443 (порт HTTPS) и при желании насильника использования SSL. Высказывания слушания для этого должны быть следующими:
listen 80 SSL; # HTTP IPv4; force SSL
listen [::]:80 SSL; # HTTP IPv6; force SSL
listen 443 SSL; # HTTPS IPv4; force SSL
listen [::]:443 SSL; # HTTPS IPv6; force SSL
Если у вас нет сертификата SSL для вашего домена, вы можете использовать Давайте ширина для получения бесплатного сертификата.
Есть множество других конфигурационных операторов, которые вы можете добавить, чтобы расширить функциональность модуля RTMP конфигурации Nginx.
Полную документацию по тому, что вы можете добавить и настроить, можно найти Вот.
После того, как вы настроили свой сервер, вы можете транслировать из любого программного обеспечения для потокового видео, поддерживающего потоковую передачу в адрес RTMP.Вы можете рассмотреть возможность использования OBS Как очень мощный, имеет поддержку плагинов, популярна с большим сообществом и открыта.
Чтобы поток на свой сервер, все, что вам нужно сделать, это установить место назначения потока в качестве адреса вашего сервера с именем приложения и установить закрытый ключ.Формат для адреса сервера должен быть следующим:
RTMP://{server_address}/{app_name}
{Server_address} - ваш IP или домен, который вы установили, чтобы указать на этот сервер.{app_name} - это имя блока приложения {}, которое вы установили в конфигурации Nginx.После нашего примера конфигурация сверху, имя приложения будет «жить».
Предоставление уникального секретного ключа гарантирует, что поток уникален, даже если другие источники передаются в то же приложение.
После приведенного выше примера поток будет жить в RTMP: //example.com/Live/secret_key, который вы можете забрать, используя любую видео, которая может открыть поток RTMP, например, VLC.
Написано Hostwinds Team / Июнь 18, 2019