Ответ 1
Как реализовать HLS для Google TV
Http Live Streaming aka HLS - это стандарт потоковой передачи мультимедийного контента (аудио и видео), поддерживаемый Google TV.
Есть много интересных функций, которые идут с HLS. Основные из них: 1) Адаптивная потоковая передача - автоматически адаптируется к загруженности или доступности полосы пропускания. 2) Устойчивость к временным сбоям в сети. 3) Нет специальной конфигурации для вашего сервера, маршрутизаторов или брандмауэров. Это просто HTTP 1.1 4) Легко поддерживается сетями доставки контента 5) Поддерживается потоковая передача в реальном времени (подробнее в более длинной статье) 6) Поддержка видео-тегов HTML5 в Chrome для Google TV. 7) Дополнительное шифрование AES (подробнее в более длинной статье).
В Google TV HLS - это стандартный протокол, вы просто помещаете свой URL в любой из API-интерфейсов воспроизведения мультимедиа, таких как MediaPlayer, VideoView и т.д. Он просто работает.
Компоненты файла HLS
.m3u8 - Текстовый манифест или файл списка воспроизведения (может быть обновлен для живого контента) - вариант списка воспроизведения обычно указывает на отдельные манифесты, которые также заканчиваются .m3u8 MIME-тип: vnd.apple.mpegURL или application/x-mpegURL
.ts - Транспортный поток MPEG 2 - обычно 5-10 секунд видео и аудио данных. MIME Тип: видео /MP2T
Создание контента для HLS
Самым простым способом создания контента HLS является использование инструментов Apple, последней версии Sorenson Squeeze, Telestreams Episode и многих поставщиков облачного кодирования. Вы начинаете с контента, который вы кодируете на многих скоростях. Для Google TV первая строка в файле .m3u8 - это скорость, с которой мы начинаем. Вероятно, лучше выбрать поток 1,2 Мбит/с.
Google TV поддерживает протокол HLS версии 3 начиная с версии прошивки Google TV 3.2.
Ваши URL содержания должны содержать символы ".m3u8" внутри URL. Если URL-адрес не заканчивается на ".m3u8", система выполнит как минимум 2 запроса перед воспроизведением, а тип списка воспроизведения MIME должен быть одним из "application/vnd.apple.mpegurl" или "application/x-mpegurl".
Примечание. В настоящее время Google TV не поддерживает переключение кодеков, поэтому в рекламных сегментах должна использоваться та же кодировка, что и в основном контенте. Конечно, разработчики могут приостановить воспроизведение HLS, воспроизвести некоторый другой контент, а затем возобновить воспроизведение HLS, чтобы обойти это.
кодирование
Кодирование контента - это искусство и наука. Лучший выбор очень сильно зависит от вашего контента, скорости перемещения объектов на фоне и многих других элементов, которых слишком много, чтобы помещать их в простую публикацию. Это также зависит от целевых устройств. Приведенные ниже настройки предназначены для оптимизации под Google TV. На старых устройствах могут потребоваться другие/дополнительные кодировки. Помните, что для определенных типов кодирования в коммерческих целях может потребоваться лицензия и/или выплата роялти.
Аудиокодирование должно быть одинаковым для всех потоков. HE-AACv1, HE-AACv2, AAC-LC до 48 кГц, стереозвук - все это приемлемые варианты.
16:9 Aspect Ratio**
Total Video
Dimensions Bitrate Bitrate Encoding
640x360 640 600 HiP, 4.1
640x360 1240 1200 HiP, 4.1
960x540 1840 1800 HiP, 4.1
1280x720 2540 2500 HiP, 4.1
1280x720 4540 4500 HiP, 4.1
1920x1080 6040 6000 HiP, 4.1
1920x1080 8196 8156 HiP, 4.1
4:3 Aspect Ratio
Total Video
Dimensions Bitrate Bitrate Encoding
640x480 640 600 HiP, 4.1
640x480 1240 1200 HiP, 4.1
960x720 1840 1800 HiP, 4.1
1280x960 2540 2500 HiP, 4.1
1280x960 4540 4500 HiP, 4.1
Keyframe
Текущая реализация Google TV использует ключевой кадр только в начале каждого сегмента (для 10-секундного сегмента при 30 кадрах в секунду это будет каждые 300 кадров). Apple предлагает иметь ключевой кадр каждые 90 кадров. (или каждые 3 секунды при 30 кадрах в секунду) Примечание. Частота кадров - сложная тема.
** Адаптировано из https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices