Глава 9. Управление сложными потоками медиа
Содержание
Данная глава рассматривает медиа потоки через NGINX в форматах MPEG-4 или Flash Video. NGINX широко применяется для массивного распространения и потокового содержимого. NGINX поддерживает форматы стандартов отрасли и потоковые технологии, которые будут обсуждены в данной главе. NGINX Plus делает возможным фрагментирование содержимого на лету при помощи модуля HTTP Live Stream, а также возможность доставки HTTP Dynamic Streaming, который уже является фрагментированным медиа. NGINX естественным образом допускает пределы для полос пропускания, а расширенные свойства NGINX Plus предлагают пределы скорости передачи битов, что делает возможной доставку наиболее действенным способом при резервировании имеющихся ресурсов сервера для охвата большего числа пользователей.
Задача
Вам требуется отправлять поток цифровых данных, изначально представленных в формате MPEG-4 (MP4) или Flash Video (FLV).
Решение
Обозначьте некий блок местоположения HTTP как .mp4 или
.flv. NGINX будет управлять потоком этого медиа применяя прогрессивные
выгрузки или псевдопотоки HTTP с поддержкой поисков:
http {
server {
...
location /videos/ {
mp4;
}
location ~ \.flv$ {
flv;
}
}
}
Блок местоположения данного примера сообщает что файлы в каталоге videos
представлены в формате с типом MP4 и могут направляться потоком с поддержкой прогрессивной выгрузки. Второй блок местоположения
указывает NGINX что все файлы, завершающиеся на .flv представлены в
формате FLV и могут направляться потоком с поддержкой псевдопотоков HTTP.
Обсуждение
Потоковые видео и аудио файлы в NGINX являются неким образцом отдельной директивы. Прогрессивная выгрузка делает возможным для клиента инициировать воспроизведение такого медиа до того как завершится выгрузка всего файла. NGINX поддерживает операции поиска по неким пока не выгруженным порциям этого медиа в обоих фоматах.
Задача
Вам требуется поддержка HTTP Live Streaming (HLS) для кодированного H.264/AAC содержимого, упакованного в файлы MP4.
Решение
Воспользуйтесь модулем HLS NGINX Plus с сегментацией в реальном масштабе времени, пакетизацией и мультиплексированием, а также с контролем буферизации фрагментов и многими иным в качестве аргументов перенаправления HLS:
location /hls/ {
hls; # Use the HLS handler to manage requests
# Serve content from the following location
alias /var/www/video;
# HLS parameters
hls_fragment 4s;
hls_buffers 10 10m;
hls_mp4_buffer_size 1m;
hls_mp4_max_buffer_size 5m;
}
Данный блок местоположения демонстрирует направления NGINX для потоков медиа HLS из каталога
/var/www/video, причём с фрагментированием данного медиа на
сегменты по четыре секунды. Общее число буферов HLS устанавливается в 10 с размером по 10 Мегабайт. Начальный
размер буфера MP4 устанавливается в 1 МБ с максимальным значением в 5 МБ.
Обсуждение
Доступный в NGINX Plus модуль HLS предоставляет свои возможности для мультиплексирования транспортировки файлов с
медиа MP4 на лету. Существует множество директив, которые предоставляют вам возможность контроля над тем как фрагментируется
и буферизуется ваше медиа. Определённый блок местоположения должен быть настроен для обслуживания этого медиа как некого
потока HLS с соответствующим обработчиком HLS. Значение фрагментации HLS устанавливается в числе секунд, что указывает NGINX
на необходимость фрагментирования по длине времени. Общее число буферируемых данных устанавливается с помощью директивы
hls_buffers, определяющей количество буферов и их размер. Данному клиенту разрешается
начинать воспроизведение его медиа после осуществления накопления буферизации определённого объёма, определяемого
hls_mp4_buffer_size. Однако может потребоваться больший размер буфера если метаданные
для этого видео могут превышать первоначальный размер буфера. Такой объём блокируется сверху значением
hls_mp4_max_buffer_size. Эти переменные буферизации позволяют NGINX оптимизировать
практику получаемую конечным пользователем; выбор правильных значений для этих директив требует знания целевой аудитории и
вашего медиа. Например, если имеющиеся пачки вашего медиа составляют видео файлы, а ваша целевая аудитория имеет широкую
полосу пропускания, вы можете выполнить оптимизацию большим размером максимума буфера и фрагментированием с большей
длиной. Это позволит вам изначально выгружать без ошибок метаданные относительно содержимого, а вашим пользователям
получать фрагменты с большей длиной.
Задача
Вам требуется поддержка HDS (HTTP Dynamic Streaming) Adobe, который уже был фрагментирован и обособлен от своих метаданных.
Решение
Для предложения своим пользователям Adobe Adaptive Streaming воспользуйтесь модулем поддержки файлов FLV
(F4F) из NGINX Plus:
location /video/ {
alias /var/www/transformed_video;
f4f;
f4f_buffer_size 512k;
}
Данный пример указывает NGINX Plus на необходимость обслуживать изначально фрагментированное видео из некого
местоположения на диске своему клиенту при помощи модуля F4F NGINX Plus.
Значение размера буфера для его индексного файла (.f4x) устанавливается
в 512 килобайт.
Обсуждение
Модуль F4F NGINX Plus позволяет NGINX обслуживать для конечных пользователей
изначально фрагментированные медиа. Сама настройка этого проста и состоит в применении обработчика
F4F внутри некого блока местоположения HTTP. Значение директивы
f4f_buffer_size настраивает величину размера буфера для файла индексации данного
типа медиа.
Задача
Вам требуется лимитировать полосу пропускания нисходящего медиа потока клиентов без воздействия на практику их просмотра.
Решение
Примените поддержку побитовой скорости NGINX Plus для файлов медиа MP4:
location /video/ {
mp4;
mp4_limit_rate_after 15s;
mp4_limit_rate 1.2;
}
Данная настройка позволяет клиентам вашего нисходящего потока выгружать 15 секунд до применения ограничения битовой скорости. После 15 секунд данному клиенту разрешается выгружать медиа с соотношением 120% к установленной скорости обмена данных, что делает возможным этому клиенту всегда выполнять выгрузку быстрее воспроизведения.
Обсуждение
Ограничение скорости обмена NGINX Plus позволяет вашему потоковому серверу динамично ограничивать полосу пропускания для
всего подлежащего обслуживанию медиа, позволяя клиентам выгрузку даже быстрее чем им это требуется чтобы обеспечить некую
бесшовную практику пользователям. Обсуждаемый обработчик MP4, описанный в рецепте Обслуживание MP4 и FLV, озаглавливает этот блок местоположения для форматов MP4 медиа. Ограничивающие скорость
директивы, такие как mp4_limit_rate_after, указывают NGINX ограничивать в секундах
в скорости обмен только по прошествию установленного промежутка времени. Другой директивой, вовлечённой в ограничение
скорости MP4 является mp4_limit_rate, которая определяет значение скорости обмена
данными для данного медиа. Значение 1 предоставляемое для директивы mp4_limit_rate
означает что NGINX ограничивает полосу пропускания скоростью воспроизведения этого медиа (1-к-1). Предоставление для данной
директивы значения mp4_limit_rate большего единицы позволит пользователям выполнять
выгрузку быстрее чем они просматривают с тем, чтобы они были способны осуществлять буферизацию своего медиа и бесшовно
просматривать его в процессе его выгрузки.
-
Сетевые протоколы для профессионалов безопасности, Йорам Орзач, Дипаншу Ханна, Packt Publishing, октябрь 2022
-
JavaScript для хакеров. Научитесь думать как хакер, Гарет Хейс, Leanpub, декабрь 2022
-
Как заниматься взломом словно легенда. Прорываемся в Windows, Спарк Флоу, No Starch Press, октябрь 2022
-
Управление оперативной памятью в реляционных системах баз данных, Педро Мехия Альварес, Марсело Леон Айяла, Сусана Ортега Сиснерос, Springer, август 2022
-
Атакующий код запуска оболочки с нуля, Ришалин Пиллэй, Packt Publishing, май 2022
-
Linux подсистема Windows (WSL) для профессионалов, Хайден Барнс, Apress, июнь 2021
-
Внутреннее устройство CPython, Энтони Шоу, Real Python, январь 2021
-
Контейнеры Linux и Виртуализация: с точки зрения ядра, Шашанк Мохан Джейн, Apress, октябрь 2020
-
Изучаем подсистемы Windows для Linux, Прэйтик Сингх, Apress, сентябрь 2020
-
Всё что требуется для RabbitMQ, 2е изд., Ловайса Йохансон, Дэйвид Доссо, Packt Publishing, август 2020
-
Практика загрузки. Изучение процесса загрузки Linux, Windows и Unix, Йогеш Бабар, Apress, июль 2020
-
Распределённые системы для практиков, Даймос Раптис, Leanpub, май 2020
-
Практическая автоматизация предприятия в Linux, Джеймс Фриман, Packt Publishing, январь 2020, Действенное выполнение крупномасштабной автоматизации инфраструктуры Linux с применением Ansible.
-
Внутреннее устройство баз данных, Алекс Петров, O`Reilly Media, Inc., октябрь 2019
-
Книга рецептов параллельного программирования Python. 2е изд., Джанкарло Закконе, Packt Publishing, сентябрь 2019
-
Полное руководство Ansible. 3е изд., Джеймс Фриман и Джесс Китинг, Packt Publishing, март 2019
-
Книга рецептов NGINX Дерек ДеДжонге, O’Reilly Media, Inc, ноябрь 2018
-
Полное руководство Ceph, 2е изд. Ник Фиск, Packt Publishing, февраль 2019
-
Docker для разработчиков Rails Роб Айзенберг, The Pragmatic Programmers, LLC., февраль 2019, с дополнениями по настройкам Django и 100Gb IB
-
Глава 11. SQL Server и контейнеры (включая Kubernetes) Боб Вордс, "Профессиональный SQL Server поверх Linux", Apress, октябрь 2018
-
Полное руководство параллельного программирования на Python Куан Нгуен, Packt Publishing, ноябрь 2018
-
Asyncio в Python 3 Цалеб Хаттингх, O’Reilly Media, Inc, март 2018
-
RabbitMQ для профессионалов Гайвин Рой, Manning Publications, сентябрь 2017
-
Proxmox. Полное руководство. 3е изд Васим Ахмед, Packt Publishing, ноябрь 2017
-
Книга рецептов Ceph, 2е изд Викхайят Умрао,Мишель Хаккет,Каран Сингх, Packt Publishing, ноябрь 2017
-
Изучаем Ceph, 2е изд., Энтони Д`Атри, Вайбхав Бхембре, Каран Сингх, Packt Publishing, октябрь 2017
-
Книга рецептов виртуализации KVM Константин Иванов, Packt Publishing, июнь 2017
-
Полное руководство работы с сетями на Python. Эрик Чоу, Июнь 2017
-
Контейнеризация при помощи LXC Константин Иванов, Packt Publishing, март 2017
-
Proxmox. Полное руководство. 2е изд., Васим Ахмед, Packt Publishing, май 2016
-
Книга рецептов Ceph Каран Сингх, Packt Publishing, февраль 2016
-
Полная виртуализация. Базовая коммерческая редакция: Proxmox-freeNAS-Zentyal-pfSense. Ли Р. Сюрбер, февраль 2016
-
Zabbix. Полное руководство. 2е изд., Андреа Далле Ваккье, сентябрь 2015
-
Книга рецептов Proxmox. Главы 1-6, Дополнения: Преобразование OpenVZ в LXC, Организация ограждения Васим Ахмед, Packt Publishing, август 2015
-
Изучаем Ceph Каран Сингх, Packt Publishing, январь 2015
Дополнительные ссылки:
| Перевод: Copyright © 2019 All rights reserved. Ссылки обязательны (Refs and links are obligatory). | http://www.mdl.ru портфолио SD DC |
| HPE DL360 G10 since 4300$ | |
