Тема: Методы передачи потока, через HMS или что такое транскодирование
Передача потока, через DLNA с использование программы Home Media Server (HMS)
Последняя и самая большая комплексная статья в этот году из запланированных, по разъяснению теории передачи потока от сервера (HMS/ПК) к клиенту (устройство), ответы на вопросы: какой вид передачи потока существует, что такое транскодирование, так ли оно сильно нагружает ПК, почему поток идет не плавно, влияет ли оно на качество и для чего вообще внедрено в HMS.
На эти и еще возможно смежные вопросы я и постараюсь сегодня ответить в этой статье, дабы простым и доступным языком без особых технических изысканий вам стало более или менее понятно, как это работает и что с этим делать.
Статья будет интересна не только тем кто в первые знакомиться с HMS, но и бывалым пользователям.
Немного теории, совсем чуть-чуть
DLNA (Digital Living Network Alliance) - набор инструкций и стандартов, целью которого является обеспечение гарантии, что все устройства в вашем доме способны легко взаимодействовать между собой, создавая надежную потоковую сеть.
Транспортный поток - унифицированный протокол для передачи аудио и видеоданных, для возможности передачи между устройствами.
Подробнее про транспортный поток, можно прочитать в теме Мануал по настройки устройства.
Помимо транспортного потока, в передачу включаются также технические данные, такие как заголовки, маркеры и т.д., если вы хотите узнать подробнее, то в сети можно найти всю эту информацию.
Передача потока, через DLNA/UPnP сервер HMS
Теперь перейдем непосредственно к самим видам передачи потока, через HMS (хотя в большей степени эта информация будет справедлива и для остальных медиасерверов).
В первую очередь стоит разделить передачу потока от HMS к устройству, на две большие группы, это "прямая передача" и "передача с использование транскодирования", теперь поговорим более подробнее о каждом виде передачи и разделим их на подгруппы, так как и здесь существует ряд способов передачи контента.
Прямая передача потока
Прямая передача потока - передача исходного потока без изменений.
Включает в себя способы передачи, как для локальных потоков (файлов/торрент файлов), так и для онлайн потоков (подкасты, подкасты торрент телевидения, торрент подкасты, IPTV подкасты (исключая плейлисты IPTV, добавленные через папку "Интернет телевидение")).
Отдельно скажу о локальных торрент потоках (не подкасты торрент телевидения, торрент подкасты), запускаются через встроенный торрент клиент в самом HMS (основан на библиотеке libtorrent), для устройства такой поток воспринимается, как обычный локальный поток и обрабатывается соответственно.
Теперь подробнее про виды прямой передачи:
- Прямая локальная передача (файлов/торрент файлов) осуществляется, через настроенную таблицу поддерживаемых файлов в настройках устройства и настроенный профиль устройства.
Примечание №1
Также существует, методика автоматического наполнения таблицы, путем активирования функций по автоматическому добавлению данных в устройство.
Активируем и запускаем различные контейнеры/форматы/сжатия, программа сама внесет их в таблицу, работает не на всем оборудование.
Примечание №2
Полное отключение транскодирования, для передачи потока в настройках устройства.
Данный метод работает не на всем оборудование, не дает 100% гарантии по запуску контента на устройстве.
Если все вышеизложенные требования соблюдены и вы программе рассказали, что ваше устройство умеет, то при запуске локального потока, в панели транскодирования будет пусто
Для локальных торрент потоков, методика запуска исходного потока, немного отличается (хотя требования по таблице и настройке устройства должны быть соблюдены)
Необходимо заметить, что путь запуска из программы и из устройства будет идентичным.
Важно, не пугайтесь оригинальный поток без транскодирования запускается из папки транскодирование, это нормально! (сама папка исключительно служебная).
Подробнее про настройку устройства, можно прочитать в теме Мануал по настройки устройства.
- Прямая передача онлайн потоков (подкасты, подкасты торрент телевидения, торрент подкасты, IPTV подкасты (исключая плейлисты IPTV, добавленные через папку "Интернет телевидение")).
Здесь также различают несколько видов передачи потока.
1. Оригинальная ссылка - здесь все очень просто, HMS в запросе ищет ссылку на искомый контент вида "название контента.контейнер" (может быть различных форматов), после напрямую отдаёт ее устройству, дальше устройство уже самостоятельно получает поток.
2. Оригинальная ссылка (перенаправление) - все также как и в предыдущем методе, за исключение того, что не устройство тянет поток, а сам HMS и передает его устройству.
3. Оригинальный поток (http:// rtmp://) - здесь HMS вообще ничего не ищет и не передает, просто отдаёт ссылку на страницу, где располагается ссылка на поток и все, дальше само устройство уже находит, получает и тянет поток, при этом методе после отправки ссылки на страницу, HMS может быть даже выключен.
Как вы заметили, я еще дополнительно отметил пункт MIME тип, так вот, если устройству требуются пояснение по контейнеру транспортного потока, то их необходимо указывать в настройках подкаста, чтобы устройство разобралось, что MKV это MKV, а не TS или AVI.
Кратко о MIME - Техническая информация (идентификатор) в тексте с указанием типа данных, передаваемых посредством DLNA (в нашем случае), можно провести аналогию с id тегами в аудио файлах.
Подробнее про MIME типы, можно прочитать в теме Мануал по настройки устройства.
Все описанные методики прямой передачи, дают неоспоримые преимущества, а именно использование на лету вшитых данных в контейнер (аудио дорожек, субтитров и т.д.), использование перемотки, переходов по главам и т.д.
И последнее, что хотелось пояснить про прямую передачу онлайн потока, как бы не был хорош этот способ, есть у него огромный минус, а именно 90% устройств не умеют его использовать в той или иной форме, это касается и новых и старых устройств.
С прямой передачей потока на этом мы закончили, теперь перейдем непосредственно к передачи потока с использованием транскодирования.
Транскодирование и все, что с ним связано
Такое ли оно страшное как его описывают на просторах сети, давайте для начала разберемся, а что это такое.
Транскодирование - если совсем по простому, то это комплекс преобразований из одного контейнера/формата в другой с задействованием кодера при необходимости, для конвертации видео и аудио дорожек из одного сжатия в другое.
К примеру есть поток, который содержит в себе контейнер MKV/формат mkv/сжатие H.264, так вот транскодирование позволяет нам на лету преобразовать его, например в TS/ts/MPEG4.
То, чем обычно пугают рядовых пользователей говоря про транскодирование, нагрузка на ПК и ухудшение качества, можно назвать мифами, которые сегодня мы развеем.
Но если мы говорим конкретно про HMS, то транскодирование это вообще целый комплекс по передаче потока от сервера к устройству, не всегда несущий за собой нагрузку или ухудшение качества, иногда направленный исключительно на простую передачу потока.
Давайте же для начала определим, что умеет транскод в HMS (касается и видео и аудио содержимого): переупаковывать из контейнера в контейнер, преобразовывать форматы, конвертировать сжатия, изменять выходные показатели, добавлять субтитры или любую другую текстовую информацию, менять разрешения и много чего еще, то есть здесь мы получаем полноценный конвертор в медиасервере.
Очень важный аспект, что при использование всех нижеследующих методик, нужно обязательно убирать MIME тип в настройках подкастов, если он там проставлен, так как пояснения, здесь получает устройство из настроек профиля устройства и профиля транскодирования.
Теперь давайте разберемся, какие методы передачи потока существуют, через транскод и как их разумнее использовать.
Разделения на типы содержимого контента при транскодирование не имеют значения, то есть при этом способе передачи, нет разницы какой поток локальный или онлайн.
Перепаковка, метод копирования - легкая передача потока, через транскод, с использованием одного из кодеров встроенных в программу, которые меняют контейнер с одного на другой (к примеру с MKV на TS).
При этом методе полностью отсутствует нагрузка на ПК и HMS никак не влияет на качество исходного материала, так как просто переносит его в новый контейнер, путем копирования.
Для возможности передачи таким методом, так же очень важны настройки устройства: включая таблицу поддерживаемых форматов/сжатие видео и аудио/разрешение/приоритетные форматы/MIME тип.
Как настроить устройство, под эту методику, можно прочитать в теме Мануал по настройки устройства.
Для чего нужен такой метод, который очень похож на прямую передачу, а все очень просто, нужен он для "всеядных" или почти "всеядных" устройств, которые не понимают или не умеют работать с ссылками на прямой поток, а взаимодействуют исключительно с привычными контейнерами мультимедийного содержания.
Перейдем к второму методу передачи потока, через транскодирование.
Частичный транскод - этот метод, так же попадает в категорию легкого транскода, здесь все та же перепаковка, но копирование происходит, только видео дорожки, тогда как аудио дорожка изменяется.
Важно понимать и в этом случае HMS не изменяет исходную видео дорожку, ухудшение по качеству не происходит, так же как и особой нагрузки на ПК.
Методика отлично подходит для устройств, в которые производитель не добавил лицензированных аудио обработчиков (часто не лицензируют AC3 Dolby Digital или DTS).
Так же не стоит забывать, что здесь важны правильные настройки устройства, с установленными приоритетами в какой формат и в какое качество перегонять аудио дорожку, причем HMS умеет на лету сохранять: количество каналов, качество и дополнительные данные вшитые в аудио дорожку.
Как настроить устройство, под эту методику, можно прочитать в теме Мануал по настройки устройства.
И последний метод, самый требовательный к мощности ваше ПК, на который установлен медиасервер.
Полноценное транскодирование - метод полной конвертации видео (аудио) дорожек, с изменением контейнера/формата/сжатия/качества/пропорций/разрешения и других параметров, с существенной нагрузкой на оборудование.
Методика не самая лучшая, но для некоторых устройств просто жизненно необходима, для приема потока, так как их возможности воспроизведения, через dlna сильно ограничены.
Ухудшается ли качество? выходного потока в сравнение с исходным, частично, здесь все зависит от вашего ЦП, если он сильно проседает по скорости обработки потока, то да!!!
Кодер будет снижать качество плавно, минимизируя нагрузка и предотвращая потерю кадров (скажем по правде, что не всегда с этим справляется надлежащим образом, вот почему многие сталкиваются с эффектом потери кадров/подергивания изображения), если ЦП справляется с нагрузкой, то потери качества выходного материала или минимальны (незаметны глазу) или их нет.
Все настройки для процесса конвертации берутся из настроек устройства.
Как настроить устройство, под эту методику, можно прочитать в теме Мануал по настройки устройства.
Существует способ немного, а иногда и существенно сократить нагрузку на ЦП, а именно использовать аппаратное ускорение с задействованием видеокарты, как дискретной так и встроенной.
Небольшой ликбез, как это реализовать
Что такое профили транскодирования - специальные скрипты, в которых строго заданны параметры и функции для кодеров.
Подробнее про профили транскодирования, можно прочитать и скачать в теме Описание профилей транскодирования.
Для использования встроенной карты или карты без поддержки CUDA, используем профили транскодирования для активации функции аппаратного ускорения в HMS, посредством технологии Direct-X Video Acceleration (DXVA2) или Intel QSV (Quick Sync Video).
Из плюсов: работа со всеми сжатиями и видеокартами, из минусов: эффективность самой работы оставляет желать лучшего. Разгрузка ЦП в среднем от 5-30%.
Список профилей:
- Фильмы (основной) - FFMPEG + hwaccel
- Фильмы (основной) + HW Acceleration
- Фильмы (основной) с корректным AR и HWACCEL
Для использования карт с поддержкой CUDA и входящих в список соответствия, задействовать профили транскодирования не нужно, так как активация происходит уже в настройках самой программы.
Команды для копирования: x.264 - nvenc_h264, HEVC - nvenc_hevc
Список видеокарт с поддержкой CUDA
https://developer.nvidia.com/cuda-gpus
Из плюсов: колоссальная эффективность, плавающее подключение, равномерное сглаживание проседаний при обработке потока, из минусов: поддержка только сжатий H.264 (x.264) и HEVC (h.265).
Разгрузка ЦП в среднем от 40-80%.
Послесловие
На этом думаю можно считать статью завершенной, все что касалось методик передачи потока, через HMS я рассказал, да здесь я не коснулся передачи потоков музыкального содержимого (но думаю, что это мы оставим на будущее).
Постарался рассказать вам об этой теме простыми словами, как это работает и нужно ли так сильно бояться транскодирования, надеюсь было интересно и вы с пользой потратили своё время.
Удачи и всех вам благ
Всех с наступающим Новым Годом
Это может быть интересно
Другие мои статьи и инструкции на форуме
Мануал по настройки устройства
Универсальный профиль устройства
Настройка устройства/MIME-тип
Настройка устройства/Таблица поддерживаемых форматов
DLNA маркеры
Перечень готовых профилей устройств доступных на форуме
Как правильно установить готовый профиль устройства в HMS
4K UHD и не только, ультрасовременный HMS
Описание профилей транскодирования
HMS как видеоконвертор
Просмотр потока с IP камеры видеонаблюдения, через HMS
60 кадров в домашних условиях
Кладовая HMS (список полезных ссылок и инструкций)
Временно отсутствую