live формат что это

Live-шопинг: стримы как инструмент продаж в e-commerce

Пандемия вывела онлайн-шопинг во всём мире на новый уровень. Продавцы активно тестируют новые форматы, один из которых live commerce. Он позволяет повышать продажи, продвигать бренд, детальнее рассказывать о товаре и привлекать больше покупателей. Креативный директор MIGEL AGENCY Дарья Мигель обсудила перспективы развития live-модели продаж с основателем платформы для интернет-магазинов ShopStory.Live Андреем Новиковым.

Live commerce — это формат продаж онлайн в прямом эфире, во время которого ведущий стрима (это может быть публичная личность, блогер или инфлюенсер) демонстрирует продукт со всех сторон и рассказывает о его преимуществах и уникальных свойствах в доступной для зрителей форме. Зритель стрима, как потенциальный покупатель, имеет возможность в несколько кликов добавить товар в корзину и купить его, не отключаясь от прямого эфира.

Формат live commerce выполняет три основные функции:

Как показала практика, аудитория, которая видела товары в режиме реального времени, имела более высокую склонность совершить покупку. Объясняется это отчасти тем, что большинство зрителей ищут мгновенного удовлетворения своих желаний и совершают покупки с целью повышения настроения.

В числе ключевых преимуществ продающих прямых трансляций можно выделить участие популярных лидеров мнений, которые привлекают лояльную аудиторию; схожесть с офлайн-шопингом (общение с блогером, ведущим стрим = общение с другом/подругой во время похода по магазинам); скорость приобретения товара. Теперь перед покупкой пользователям не нужно изучать отзывы на разных платформах в поисках интересующей детали – все можно узнать онлайн и быстро оформить покупку товара.

Этим и занимается ShopStory.live — сервис, который предоставляет платформу для запуска продаж через «живые» видеоэфиры на сайте e-commerce бренда. Максимально удобная площадка адаптирована как под зрителя, так и под продавца, и имеет свои плюсы:

Атмосфера стрима фактически позволяет наладить face-to-face коммуникацию бренда с потенциальным клиентом, поскольку ведущий видеоэфира выступает от лица компании, которая предлагает аудитории конкретный продукт. Таким образом создается ощущение прямого диалога зрителя со стримером, а удобный интерфейс платформы позволяет покупателю всегда иметь перед глазами карточку товара, легко найти кнопку «купить» и поддерживать обратную связь.

Здесь следует отметить, что платформа по внедрению стримов на сайт — удобное технологическое решение, которое упрощает коммуникацию между брендом и конечным потребителем, позволяет отслеживать результаты, а также помогает оценить эффективность внедрения live-формата на сайт e-commerce бренда.

Креативная концепция стрима, сюжет, формат, который выбирается исходя из специфики продукта/бренда и поставленных задач, выбор героев — все это задачи, которые решает отдельная in-house или агентская команда. Важно создать эффект шоу, чтобы дать возможность зрителям «испытать опыт полного погружения», заинтересовать потенциальных покупателей и вовлечь их в коммуникацию. Таким образом сокращается дистанция между брендом и аудиторией, благодаря чему достигается максимальный результат.

Согласно данным 2020 года Китай достиг рекордной суммы ($1трлн.) в электронной коммерции и стал мировым лидером, в 3 раза опережая США. Стримы стали настоящим бумом в китайской электронной коммерции: около 40% пользователей смотрели стримы с возможностью покупок, что составляет около 560 млн. человек. Онлайн-магазины запускают их на собственных площадках, привлекая ярких инфлюенсеров в качестве ведущих. Главным в этом деле остаётся Taobao Live от Alibaba, на долю которого приходится 80% всех прямых эфиров.

В России компания Aliexpress запустила функцию livestreaming еще в 2017 году, но тогда это не «взлетело» так, как в марте 2020 года, когда был презентован обновленный формат AliExpress LIVE – развлекательные стримы, которые проходят в разделе LIVE в мобильном приложении со встроенными покупками и карточками товаров. Только за первый месяц эфиры на платформе принесли магазинам более 125 млн. рублей. К участию в роли ведущих стримов платформа приглашает известных звезд шоу-бизнеса и популярных блогеров. За один месяц прямые трансляции посмотрели более 39 миллионов раз. Лидеры мнений проводят интерактивы, общаются со зрителями и выполняют различные задания. Эфиры также транслируются в социальных сетях: в Одноклассниках, VK и Instagram.

За последний год у пользователей укрепилась привычка к формату live — люди стали активнее общаться с помощью средств онлайн-видеосвязи, например, Zoom и Skype. Не последнюю роль сыграл интерес пользователей к видеоконтенту, о чём говорят растущие изо дня в день просмотры в Tik-Tok.

Среднестатистический пользователь в 2020 году провёл около 6 часов и 42 минут в день в интернете — почти треть одного дня, большая часть которого ушла на просмотр видео. В среднем около 16 часов в неделю тратит аудитория в мире на просмотр прямых эфиров. «Живой» контент становится всё более востребованным с каждым днем.

Формат live commerce позволяет зрителю экономить время на шопинг, но при этом стимулирует импульсивные покупки посредством мнения стримера, который оказывает прямое влияние на формирование мнения зрителя о продукте. Livestreaming уже успешно тестируется для продаж многих продуктов, к примеру, косметики, одежды и аксессуаров. Shopstory.live сотрудничает с крупными косметическими ритейлерами и проводит стримы с участием популярных блогеров и инфлюенсеров.

Уже сейчас можно сделать вывод, что видеоэфиры положительно влияют на продажи в сфере Fashion, Beauty, FMCG и других. Азиатский рынок стримов уже активно использует их для продажи бытовой техники. Перед бизнесом стоит задача — протестировать live commerce на товарах разных категорий и разных цен.

Важно, что и бренды и стримеры, которые первыми станут популярными в сфере live commerce, будут нести ответственность за качество клиентского сервиса и продукции — из-за ложной информации могут в моменте потерять свою репутацию среди аудитории.

Также всегда стоит помнить и о качестве транслируемого контента: он должен развлекать и вовлекать зрителей, поэтому будут особенно ценны те инфлюенсеры и бренды, которые имеют опыт в написании интересных продающих сценариев и в создании интерактивных шоу для своей аудитории.

Источник

Instagram Live – что это такое и как использовать?

Вы хотите провести онлайн-трансляцию в Instagram? Вы ищите гайд, который поможет Вам во всем разобраться? Тогда Вы читаете нужную статью!

Последнее обновление приложения Instagram позволяет проводить онлайн-трансляции (лайв-видео) – новая функция, которая позволяет общаться со своими подписчиками в Instagram в режиме реального времени.

В этой статье Вы узнаете, как использовать Instagram лайв-видео в историях Instagram.

live формат что это

Почему Instagram Live?

Вкратце, истории Instagram позволяют создать видео/фото, которое будет на протяжении 24 часов находиться вверху новостной ленты Ваших подписчиков.

live формат что это

Ваша онлайн-трансляция в историях Instagram появится вверху новостной ленты.

Подписчики, которые не отключили функции оповещения о начале лайф-видео, получат такое оповещение, когда Вы начнете трансляцию.

live формат что это

Ваши подписчики в Instagram получат оповещение, когда Вы начнете лайф-видео.

Все, кто захочет присоединиться к Вашему лайф-видео (т.е. те, кто уже успел полюбить прямые трансляции на Facebook или других сайтах), смогут легко посмотреть Ваше лайф-видео. Скорее всего, они также захотят с Вами пообщаться, пока Вы находитесь в прямом эфире, так как лайф-видео не сохраняются после того, как Вы закончите трансляцию.

Вот как выглядит онлайн-трансляция в Instagram для подписчиков:

live формат что это

Вот, что видят Ваши подписчики во время лайф-видео. Давайте рассмотрим, какие настройки нужны для того, чтобы начать онлайн-трансляцию в Instagram.

#1: Запустите Instagram Live

Чтобы начать онлайн-трансляцию, нажмите на иконку Ваша история (со значком +) в самом верху Вашей новостной ленты. Или же, если Вы пролистали свою ленту далеко вниз и не видите панели с историями, нажмите на иконку Instagram вверху посередине.

live формат что это

Нажмите на иконку Ваща история, чтобы записать историю Instagram.

Таким образом Вы зайдете в режим создания истории Instagram, где Вы можете выбрать из трех опций:

live формат что это

Три опции на выбор. Пальцем выберите опцию Лайв, чтобы начать онлайн-трансляцию.

Проверьте настройки историй Instagram

Вам нужно проверить настройки Instagram Story перед тем, как начать онлайн-трансляцию. Нажмите на иконку настроек в левом верхнем углу.

live формат что это

Нажмите на иконку настроек, чтобы изменить их. Теперь убедитесь, что все настройки Instagram в порядке.

live формат что это

Проверьте настройки Instagram Story перед тем, как начать трансляцию. Эти настройки позволяют Вам выбрать, кто может (скорее, не может), просматривать Ваши истории и отвечать на них.

Заметьте, что функция Сохранять опубликованные фото не действует для лайв-видео. Ваше лайв-видео исчезнет после окончания трансляции. Если Вы хотите его записать, Вам понадобится программа для записи, например, ScreenFlow.

Настройте камеру

Что делать, если используется не та камера? Просто нажмите иконку справа от кнопки Начать лайв-видео, чтобы сменить камеру.

Нажмите иконку со стрелками, чтобы сменить камеру. Помните, что во время онлайн-трансляции Вы не можете использовать вспышку.

Начинайте!

После того, как Вы разобрались с настройками и камерой, нажмите на кнопку Начать лайв-видео, чтобы начать онлайн-трансляции. Как только Вы начнете, Instagram оповестит всех Ваших подписчиков (как говорилось в начале статьи).

#2: Организуйте свою онлайн-трансляцию

Необходимо знать о кое-каких ключевых настройках, которые можно использовать во время прямой трансляции.

Внизу экрана можно посмотреть, сколько человек смотрит Вашу трансляцию. Вы можете даже писать и отвечать на комментарии.

live формат что это

Вы можете ответить на комментарии внизу экрана Instagram Live. Эта функции поможет Вам наладить контакт с подписчиками, а также понять, вовлечены ли они в Вашу трансляцию. Понять это можно по тому, как часто они комментируют и покидают трансляцию.

Если Вы хотите закрыть комментарии, нажмите на иконку с тремя точками в правом нижнем углу экрана.

Нажмите на иконку с тремя точками, чтобы закрыть комментарии. Нажмите на иконку Live в верхнем левом углу экрана, чтобы узнать, как долго идет Ваша трансляция.

Tap the Live icon to see how long you’ve been broadcasting on Instagram.

Чтобы узнать, кто именно смотрит Вашу трансляцию, нажмите на число зрителей справа от кнопки Live (в верхнем левом углу). Если Вы не хотите, чтоб кто-то участвовал в трансляции, нажмите на Х около его имени.

live формат что это

Нажмите Х возле имени, чтобы исключить подписчика из трансляции.

#3: Завершите онлайн-трансляцию

Когда Вы будете готовы завершить трансляцию, нажмите на кнопку Закончить в верхнем правом углу экрана.

Нажмите на кнопку Закончить, чтобы завершить трансляцию Instagram Live. После этого вы увидите статистику Вашей трансляции. Проще говоря, Вам покажут число зрителей.

live формат что это

Вот, что Вы увидите, закончив свою трансляцию Instagram Live.

Так как Ваше лайв-видео исчезает после окончания статистики, а статистика не сохраняется, нужно делать скриншот именно этого экрана (если Вы записывали трансляцию с помощью сторонних программ, то Вам это не понадобится). Сделайте скриншот, чтобы запомнить, насколько успешной и популярной была Ваша онлайн-трансляция.

Лучшие способы использовать Instagram Live

Вы спросите, как же можно использовать Instagram Live для развития Вашего бизнеса? Подумайте о том, что именно Вы хотели бы показать своим подписчикам и клиентам? Какие видео не обязательно сохранять? Какие видео Вы можете запросто снять своим смартфоном? О каких видео нужно обязательно оповестить всех Ваших подписчиков?

Вот несколько идей того, о чем могут быть Ваши лайв-видео в Instagram:

Не важно, о чем именно будет Ваша онлайн-трансляция, Instagram Live – это отличная видео-платформа, которая позволит Вам общаться с огромным количеством людей.

В заключение

Люди любят видео, а Instagram позволяет записывать Ваши собственные идеи. С помощью функции лайв-видео можно открыть для себя новое поле для деятельности.

Что Вы думаете об этом? Собираетесь ли Вы использовать Instagram Live для развития Вашего бизнеса? Если да, расскажите нам об этом в комментариях!

Источник

Какой бывает HTML5-стриминг (и почему mp4-стриминга не существует)

live формат что это

Нередко клиенты спрашивают, умеет ли наш сервер «mp4-стриминг в HTML5». В 99% случаев спрашивающий не понимает о чём говорит. В этом сложно винить клиентов: из-за путаницы с терминами, технической сложности и большого разнообразия вариантов стриминга запутаться очень легко.

В этой статье мы расскажем, какой бывает HTML5-стриминг, какие варианты хорошие, и почему, чёрт побери, нельзя говорить «mp4-стриминг».

▍Термины

HTML5-видео — это когда вы вставляете в веб-страницу тег и указываете ему какой-то src. HTML5-стриминг — это то же HTML5-видео, но когда в src не готовый файл, а постоянно обновляющийся видеопоток. Ролик на Ютубе — это HTML5-видео, трансляция в Твитче — HTML5-стриминг.

Тегу неважно, как видеопоток формируется и передаётся, и сможет ли браузер его проиграть. Главное, чтобы в src была ссылка на какой-то видеопоток. Говоря техническим языком, спецификация ничего не говорит о том, какие протоколы, транспорты и кодеки поддерживаются в HTML5-видео.

Протокол — это то, как два участника видеосвязи (почти всегда это клиент и сервер) обмениваются данными с целью получения данных. Клиентом называют того, кто приходит к серверу и инициирует сессию связи. Видеопоток может течь от сервера к клиенту (тогда это обычное проигрывание) или от клиента к серверу (тогда это публикация). Даже когда гигантский шкаф, жрущий электричество как многоквартирный дом приходит к маленькой IP-камере, то она будет сервером, а этот шкаф клиентом.

Протокол обычно подразумевает хотя бы команду Play (начать проигрывание), но иногда есть и расширенные варианты: пауза, продолжение, публикация, перемотка и т. п.

Примеры протоколов: RTSP, RTMP, HTTP, HLS, IGMP.

Транспорт, или транспортный контейнер, или контейнер — это то, как сжатое видео упаковывается в байты для передачи от одного участника к другому (по какому-то протоколу).
Примеры контейнеров: MPEG-TS, RTMP, RTP.

Обратите внимание, что RTMP оказался и в протоколах, и в транспортах. Это потому, что в описании RTMP есть спецификация и того, что должны слать друг другу стороны, чтобы видео потекло (т. е. протокол), и того, как упаковывать видео (т. е. транспорт). Так бывает не всегда. Например в протоколе RTSP видео упаковывается в транспорт RTP.

Кодек — многозначный термин. Здесь он означает способ сжать сырое видео. Разница между кодеком и транспортом в том, что кодек — это про подготовку видео, а транспорт — про передачу видео по протоколу. Видео, сжатое одним кодеком, можно пересылать по разными протоколам и разными транспортами. Большинство видеостриминговых серверов не залезают глубже кодированного видео и оперируют только протоколами и транспортами.

Примеры кодеков: h264, aac, mp3.

Из-за того, что термин многозначный, возникает путаница с названиями. Например, H.264 — это стандарт того, как упаковать поток огромных сырых видеокадров в очень мало байтов, libx264 — это библиотека для сжатия по этому стандарту, а ещё есть одноимённый софт под Винду, который умеет декодировать h264 и проигрывать его на экране.

live формат что это

Итак, в спецификации HTML5 не описаны протоколы, транспорты и кодеки. Поэтому авторы браузеров сами выбирают, что поддерживать, а под «HTML5-стримингом» подразумевают разные вещи.

При этом есть комбинации, которые поддерживаются значительной частью браузеров. Рассмотрим самые перспективные.

live формат что это

HLS — это h264-видео и aac- или mp3-аудио, упакованное в транспорт MPEG-TS. Поток разбивается на сегменты, описанные в m3u8-плейлистах, и раздается по HTTP. HLS поддерживает мультибитрейтные потоки, Live/VOD. Вариант очень простой, но в то же время имеет много деталей, из-за чего на разных устройствах работает по-разному.

Разработали HLS в Эппле, поэтому изначально он работал только в Сафари на iOS и MacOS. Даже Сафари на Windows не умел играть HLS (когда еще была версия под Win).

Тем не менее, сейчас HLS умеют проигрывать все телевизионные приставки и даже почти все устройства на Андроиде.

Но не всё гладко. Производители сторонних плееров плюнули на стандарт Эппла в части донесения разных аудиодорожек и добавили проигрывание всего что есть в обычном MPEG-TS: mpeg2 video, mpeg2 audio и т. п. Из-за этого приходится отдавать разные форматы плейлистов для разных плееров.

▍MPEG-DASH

live формат что это

MPEG-DASH — обычно это h264/h265-видео и aac-аудио, упакованное в транспорт mp4, или vp8/vp9, упакованное в WebM, хотя стандарт и не привязан к конкретным кодекам, протоколам и транспортам. Как и в HLS, поток может разбиваться на сегменты, но это необязательно. Вместо плейлистов — MPD-манифест в XML.

MPEG-DASH во многом похож на HLS. Возможно, он даже популярнее, ведь такие гиганты как Ютуб и Нетфликс уже несколько лет используют его как основной способ раздачи контента.

MPEG-DASH хорош тем, что в большинстве браузеров работает нативно, через MSE (о том, что это такое, — чуть ниже). Для него даже нет реализации на Флеше — это честный, бескомпромиссный HTML5.
Определенно, MPEG-DASH — самый настоящий HTML5-стриминг, за ним будущее.

Когда стало ясно, что Флеш всё-таки умрёт (после сотни ложных похорон), ребром встал вопрос о том, что придёт ему на смену. Хорошо было бы получить в браузерах возможность проигрывать видео по качеству и удобству близко к тому, что умеет Флеш (а он это делает всё-таки хорошо).

Во Флеше давно появился очень удобный механизм для универсального проигрывания разных вариантов — appendBytes. Суть в том, что пользовательский код сам как хочет скачивает кадры сжатого видео, упаковывает в оговоренный контейнер (с Флешем это flv) и засовывает в видеопроигрыватель. Т. е. протокол и транспорт реализуются в пользовательском коде, запускаемом в браузере.

MSE (Media Sources Extensions) — это расширение спецификации HTML5, которое позволяет делать то же, что делает appendBytes во Флеше. К сожалению, MSE намного сложнее как в понимании, так и в реализации.

MPEG-DASH, созданный на его базе, ещё хитрее, поэтому работать с ними то ещё удовольствие: тонны XML, парсинг бинарных контейнеров в Яваскрипте, непродуманные на этапе дизайна вопросы нарезки на сегменты — всё как мы любим, всё что нужно для единой безглючной реализации во всех браузерах.

Интересно, что MSE работает не только с MPEG-DASH, но и с HLS. Существует реализация hls.js, которая скачивает HLS-плейлисты, скачивает MPEG-TS-сегменты, перепаковывает их в нужный для MSE формат и играет через MSE. Эппл даже сделала шаг в сторону совместимости с MPEG-DASH — использование mp4-контейнеров в HLS.

К концу 2017 года Флеш скорее всего умрёт окончательно, и уже сегодня можно смело начинать проект с MPEG-DASH.

▍WebRTC

live формат что это

Во Флеше была сделана годная попытка в одной технологии реализовать и риалтайм-общение, и массовый броадкастинг. К сожалению, в HTML5 так не вышло. Для просмотра трансляций у нас есть MSE, а для видеозвонков — WebRTC.

WebRTC — это SIP в браузере: способ организовать аудио- и видеоканал и канал данных между двумя браузерами при посредничестве сервера.

Технология не предназначена для стриминга, но в принципе может и его, так что было бы неправильно забыть про него. WebRTC тоже считается HTML5, потому что вроде как ничего кроме Яваскрипта в браузере не требует. Зато требует наличия последних версий обоих популярных браузеров, а с Эджем пока вообще не совместимо.

Путаницу в понимании WebRTC вносит его использование в торрент-доставке телевидения. Суть в том, что браузеры через WebRTC организуют сеть каналов данных, а дальше по этой сети раздаются HLS- или MSE-сегменты видео, а проигрывание происходит через Флеш или MSE. Т. е. WebRTC — для доставки, MSE — для проигрывания. Важно не путать это с использованием WebRTC для проигрывания видео.

▍Так что там с mp4-стримингом?

Любой современный браузер скорее всего сможет по протоколу HTTP запросить файл, упакованный в транспорт mp4 и содержащий внутри видео, сжатое кодеком h264/aac. И даже попытаться проиграть его. Это самый удобный, понятный и стандартный вариант проигрывания файлов. Лежит себе файлик на диске, nginx его отдает. Код, проигрывающий mp4 в браузерах достаточно хорош. Например, он умеет даже скачивать куски видео по необходимости (в отличие от Флеш-плеера, который скачивает видео целиком).

Вокруг h264 сложилось немало шумихи по поводу его «закрытости» и «несвободности». Так что есть «открытая» альтернатива, которую форсит Гугл — видеокодеки vp8 и vp9, упакованные в транспорт WebM. WebM — это подмножество транспорта mkv (a. k. a. Матрёшка), который очень похож на mp4 по сути, но отличается от него своей «бинарностью».

Именно отсюда растут ноги у такого явления как «mp4-стриминг», который устроен как WebM. Дело в том что в обычном mp4 в самом начале указывается размер всего контейнера. Поэтому, если мы хотим отдать по обычному mp4 прямой эфир, у нас ничего не получится. А чтобы всё-таки получилось и можно было создавать mp4 без фиксированного конца, придуман следующий ход: сначала пишется mp4 без кадров, а потом в конце подписываются блоками по несколько секунд фрагменты с кадрами. Это называется mp4 fragmented, или mp4 streaming.

По сути это никакой не стриминг, а костыль, позволяющий создать его видимость. Mp4 — отличный формат для скачивания видео, но негодный для стриминга, так что про него можно просто забыть и никогда не использовать термин «mp4-стриминг».

Источник

Готовим адаптивное видео для HTTP Live Streaming

Почти все пользуются, и, наверняка, многие слышали про динамическую адаптацию видеопотока под пропускную способность сети. В последнее время это уже практически обязательное требование к online-видео в интернете. Преимущества адаптивного видеопотока очевидны: если сеть временами «проседает», видео продолжает отображаться в плеере без видимых подкачек и буферизации; качество картинки автоматически выбирается адекватным пропускной способности сети.

Несмотря на то, что динамическая адаптация видеопотока уже сравнительно «старая» технология, существует множество мелких подробностей о том, как добиться лучшего результата. Чтобы и на серверной стороне попроще и подешевле, и чтобы такое видео было совместимо с как можно большим количеством клиентов (Web, iOS, Android, ну и не забываем про Smart TV).

На хабре уже было несколько статей про адаптивное видео, так что я не буду повторяться и попробую сфокусироваться на том, как оно устроено, и как его сделать.

Лирическое отступление (максимально кратко и просто про адаптивное видео):

Очевидно, самый простой вариант раздачи видео в интернете — это взять mp4 файл и выложить его на HTTP сервер. Этот вариант плох тем, что у нас всего 1 файл, а клиентов у нас великое множество и такое же множество качественных и не очень интернет-соединений. Если выложим видео 1080p с битрейтом 20 мегабит/с (Blueray качество), его не смогут смотреть смартфоны, а если выложим видео для смартфонов (скажем, 1 мегабит/c и 320×240), оно будет ужасно выглядеть на 55-дюймовом телевизоре.

Ну, раз 1 файл — плохо, давайте выложим десяток файлов, «нарежем» разного видео из одного исходника, будут все битрейты и все размеры кадра, от мобильного до 1080p, с битрейтом от 1 мегабита/c до 20. Прекрасно. Но есть проблемка. Один и тот же смартфон может быть как в домашнем Wi-Fi (то есть быстром), так и в ресторанном (то есть медленном). Одинаковые телевизоры бывают как у людей в Москве, так и у людей на Сахалине.

Тогда пусть плеер проверяет как-нибудь, какая пропускная способность у сети, и, померив ее, выбирает нужный файл для просмотра. Наконец, еще одна нерешенная задача — это как бы еще учесть тот факт, что фильм идет часа 2-3, а интернета то «много», то «мало». Запускать замер пропускной способности сети периодически? Этот способ сработает, но что делать когда нужно переключиться на более или менее «качественный» файл, во время «проседания» или «ускорения» сети? Чтобы это сделать быстро (да еще и не останавливая просмотр того, что уже успело накачаться), нужно заранее знать, с какого места в новом файле нужно запустить скачивание. К несчастью, соотношение смещения от начала файла к времени фильма очень часто нелинейное, из-за переменного битрейта. На быстрых сценах, когда, например, Джеймс Бонд преследует очередного врага, картинка меняется часто и битрейт высокий, а на плавной панораме безоблачного неба картинка почти не меняется и битрейт низкий.

Чтобы справиться с этой задачей, необходимо заранее проиндексировать все файлы (составить пары «время сцены в фильме / позиция от начала файла». Эти пары называют сегментами. После этого можно будет, зная текущее время просмотра, определить, из какого места в другом файле можно скачать следующий сегмент. Для «бесшовного» переключения сегменты из разных битрейтов выравнивают по времени.

Конечно, все эти функции уже давно реализованы практически во всех современных устройствах. Несколько разных битрейтов и размеров кадра для одного и того же фильма упаковываются в определенный формат, информация о том, что в каких файлах и где лежит описывается в специальном файле-дескрипторе (его часто называют манифестом). Клиент перед просмотром скачивает файл манифест и «понимает», откуда что ему качать, где какой размер видео и какой битрейт находится на сервере.

Плохая новость состоит в том, что в современном мире этот простой подход реализован разными компаниями в разное время и по разному. Вот список наиболее известных и распространенных способов адаптивной раздачи видео по HTTP:

Стоит еще отметить, что иногда (в форматах HDS и Smooth Streaming) вместо прямых ссылок из манифестов используется специальная схема адресации сегментов, когда сервер по этой специальной схеме «вычисляет», какой же файл запрашивает клиент и чтобы такую схему поддержать, делается еще и серверный манифест.

Посмотрим подробнее на подготовку адаптивного видео на примере HLS, как наиболее просто устроенного и наиболее широко поддерживаемого устройствами формата.

Манифестом в HLS служит группа плейлистов из одного «мастер-плейлиста» и нескольких «плейлистов потока». Проще всего будет показать это на примере. Допустим, у нас есть очень короткий фильм (всего 3 сегмента по 10 секунд, для простоты), для которого мы сделали 3 битрейта видео- 500 kbps, 1000 kbps и 2000 kbps. В файловой системе сервера он может быть расположен например так:

Файл master-playlist.m3u8 внутри выглядит так (некоторую информацию я убрал для простоты изложения):

Те, кто знаком с форматом m3u без труда поймут что тут к чему. В файле содержится три строки-ссылки на другие плейлисты m3u8, а в комментированной значком ‘#’ строке над каждой ссылкой указаны данные соответствующего битрейта. BANDWIDTH, CODECS, RESOLUTION — в общем термины говорят сами за себя. Легко заметить, что отличается только BANDWIDTH, хотя в реальности там все параметры могут быть разными. Задача клиента — понять по этим параметрам, какой плейлист ему в данный момент годится.

Допустим, клиент знает, что у него сейчас «хороший» интернет и предпочитает высокий битрейт (2000К). Клиент выкачивает плейлист 2000K/playlist-2000K.m3u8, который внутри выглядит следующим образом:

Видны ссылки на отдельные сегменты, их длительность в секундах указана строкой выше, для нулевого сегмента, например: «#EXTINF:9.8849». Скачав этот плейлист, клиент начинает проигрывание с первого сегмента по третий. Во время просмотра сегмента обычно качается следующий и так далее. Если клиент почувствует, что очередной сегмент выкачивается слишком медленно, клиент может остановить закачку и начать качать такой же сегмент (для того же места в фильме) из другого плейлиста, например, 500K/playlist-500K.m3u8. Когда скорость интернета восстановится, клиент может опять переключиться на закачку сегментов из плейлиста 1000K или 2000K.

Простота HLS позволяет раздавать его практически с любой серверной платформы (серверной «логики», собственно, при раздаче никакой и не требуется). Отдельные сегменты при необходимости легко кэшируются любым доступным образом.

Теперь посмотрим, какие инструменты доступны для создания и упаковки видео в HLS. Этот процесс состоит из трех основных этапов:

Например, если у вас есть исходный файл movie.mp4 (предполагаем, что его битрейт не ниже 2000К), тогда достаточно будет запустить ffmpeg примерно так (ключи обозначают что звуковую дорожку можно взять как есть, а видео битрейт изменить):

Этап 2. Создание однобитрейтных плейлистов.

Дальше нужно из каждого movie-*K.mp4 сделать набор из плейлиста m3u8 и сегментов *.ts. Важно, чтобы сегменты получились синхронными между разными битрейтами. Скажу сразу, ffmpeg умеет «нарезать» mp4 в m3u8 + сегменты, но только в рамках одного битрейта. К сожалению, мастер-плейлист потом придется создавать руками. Это не очень сложно (в минимальном варианте достаточно любого текстового редактора), но если вы случайно являетесь Apple iOS или OSX разработчиком, то могу посоветовать пакет HTTP Live Streaming Tools (для MacOSX). В него входит несколько программ, из которых нам пригодятся две: mediafilesegmenter и variantplaylistcreator. Первая превращает mp4 файл в плейлист m3u8 и «нарезает» сегменты, вторая собирает несколько однобитрейтных плейлистов в мастер-плейлист.

Итак, создаем три плейлиста из трех файлов полученных на предыдущем шаге (предполагается, что файлы movie-*.mp4 лежат в текущей папке).

Этап 3. Собираем три отдельных плейлиста в единый мастер.

Для этого используется variantplaylistcreator. Запускается он так (для нашего примера):

Остальные части командной строки — это пары плейлист-plist для каждого битрейта, которые были получены на предыдущем этапе.

Теперь у нас появился мастер-плейлист movie.m3u8. Можно выкладывать текущий каталог и подкаталоги на HTTP сервер и запускать на клиенте просмотр файла movie.m3u8. Кстати, файлы *.mov больше не нужны, для сокращения занятого под контент места их можно убрать из папки.

На этом у меня пока все, но если данная тема интересна уважаемому сообществу, могу ее продолжить и в будущих постах рассказать, как добавить в HLS альтернативные звуковые дорожки и субтитры, а также как из HLS сделать MPEG-DASH совместимый со Smart TV. Спасибо за внимание.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *