- Amazon Kinesis›
- Видеопотоки›
- Вопросы и ответы
Вопросы и ответы по Amazon Kinesis Video Streams
Темы страниц
Общие вопросыОбщие вопросы
Что такое видеопотоки Amazon Kinesis?
Сервис Amazon Kinesis Video Streams обеспечивает простую и безопасную потоковую передачу мультимедиа с подключенных устройств в AWS для хранения, воспроизведения, аналитики, машинного обучения (ML) и других видов обработки. Сервис Kinesis Video Streams автоматически выделяет и эластично масштабирует инфраструктуру для приема потоковых мультимедиа с миллионов устройств. Сервис надежно хранит, шифрует, индексирует потоковые мультимедиа и позволяет получать доступ к ним с помощью удобных API. Сервис Kinesis Video Streams позволяет быстро создавать приложения компьютерного зрения и машинного обучения посредством интеграции с сервисами Amazon Rekognition Video и Amazon SageMaker и библиотеками для платформ машинного обучения, например Apache MxNet, TensorFlow и OpenCV. Для воспроизведения в режиме реального времени и по требованию сервис Kinesis Video Streams предоставляет полностью управляемые возможности HTTP Live Streaming (HLS) и Dynamic Adaptive Streaming over HTTP (DASH). Кроме того, сервис Kinesis Video Streams поддерживает потоковую передачу мультимедиа со сверхнизкими задержками с помощью функций WebRTC в качестве полностью управляемой возможности.
Что такое данные с временными кодами?
Данные с временными кодами – это любые данные, в которых записи расположены в строгой временной последовательности, и каждая из них связана с предыдущей и последующей записями. Примером данных с временными кодами являются видеозаписи, поскольку каждый их кадр связан с предыдущим и последующим кадрами пространственными трансформациями находящихся в них объектов. Другими примерами данных с временными кодами служат аудиозаписи, сигналы лидаров и радаров. Сервис Amazon Kinesis Video Streams специально разработан для эффективного экономичного сбора и хранения любых данных с временными кодами в примерах использования, связанных с аналитикой и машинным обучением.
Каковы наиболее распространенные примеры использования Видеопотоков Kinesis?
Сервис Kinesis Video Streams идеально подходит для создания приложений для потоковой передачи мультимедиа для устройств IoT, оснащенных камерами, и приложений для машинного обучения на основе машинного зрения, которые постепенно выходят на первый план в целом спектре различных областей применения, включая перечисленные ниже.
Умный дом
С помощью Kinesis Video Streams можно просто передавать в AWS видео‑ и аудиоматериалы с домашних устройств, оснащенных камерами, таких как видеоняни, веб‑камеры и домашние системы наблюдения. Эти потоки можно использовать для создания интеллектуальных приложений для дома, выполняющих самые разные задачи – от простого воспроизведения мультимедиа до интеллектуального управления системами освещения, кондиционирования и обеспечения безопасности.
Умный город
Во многих городах установлено большое количество видеокамер на светофорах, автостоянках, в торговых центрах и почти во всех общественных местах, при этом видео записывается круглосуточно. Сервис Kinesis Video Streams можно использовать для безопасного и экономичного сбора, хранения, воспроизведения и анализа огромного объема медиаданных. Это позволит решать проблемы, связанные с дорожным движением, предотвращать преступления, вызывать аварийные службы и выполнять многие другие задачи.
Автоматизация производства
Kinesis Video Streams можно использовать для сбора разнообразных данных с временными кодами, таких как сигналы радаров и лидаров, температурные профили и данные об уровне погружения от промышленного оборудования. Затем можно анализировать эти данные с помощью подходящих платформ машинного обучения, например Apache MxNet, TensorFlow или OpenCV. Подобную технологию можно использовать для автоматизации производственных процессов, таких как профилактическое техническое обслуживание. Например, можно прогнозировать срок службы прокладок или клапанов и заранее планировать замену таких деталей, сокращая время простоев и количество дефектов на производственной линии.
Какие виды управления берет на себя сервис Видеопотоки Amazon Kinesis?
Amazon Kinesis Video Streams – это полностью управляемый сервис для сбора, хранения и обработки мультимедиа. Он позволяет осуществлять безопасный сбор, обработку и хранение видео в любых масштабах для приложений, обеспечивающих работу роботов, интеллектуальных городских систем, средств автоматизации производства, систем мониторинга безопасности, технологий машинного обучения и т. д. Кроме того, Kinesis Video Streams собирает другие типы данных с временными кодами, например аудиозаписи, сигналы радаров и лидаров. Сервис Kinesis Video Streams предоставляет различные пакеты SDK для установки на пользовательские устройства, обеспечивая простую и безопасную потоковую передачу мультимедиа в AWS. Сервис Kinesis Video Streams автоматически выделяет и эластично масштабирует всю инфраструктуру, необходимую для сбора потоковых мультимедиа с миллионов устройств. Кроме того, сервис надежно сохраняет, шифрует, индексирует медиапотоки и предоставляет удобные API, с помощью которых приложения могут получать и обрабатывать проиндексированные медиафрагменты, ориентируясь на теги или временные метки. Kinesis Video Streams предоставляет библиотеку, которая позволяет интегрировать видеопотоки с такими платформами ML, как Apache MxNet, TensorFlow и OpenCV, для создания приложений машинного обучения. Kinesis Video Streams интегрирован с сервисом Amazon Rekognition Video, что позволяет создавать приложения машинного зрения, способные идентифицировать различные объекты, события и людей.
Основные понятия
Что такое видеопоток?
Видеопоток – это ресурс, который позволяет захватывать видео в режиме реального времени и другие данные с временными кодами, опционально сохранять их и обеспечивать доступность для использования как в режиме реального времени, так и в режиме пакетных или произвольных запросов. При сохранении данных в видеопотоке Kinesis Video Streams шифрует эти данные и генерирует для них временной индекс. В типовой конфигурации видеопоток Kinesis имеет только один источник, который публикует данные в него. При этом каждый видеопоток Kinesis может иметь несколько приложений-потребителей, которые обрабатывают его контент.
Что такое фрагмент?
Фрагмент представляет собой автономную последовательность кадров мультимедиа. Принадлежащие фрагменту кадры не должны каким‑либо образом зависеть от кадров в других фрагментах. В момент доставки фрагмента Kinesis Video Streams присваивает ему уникальный номер в порядке возрастания. Он также сохраняет временные метки для каждого фрагмента, созданные как на стороне источника, так и на стороне сервера, в качестве специальных метаданных Kinesis Video Streams.
Что такое источник?
Источник – это обобщенный термин, которым обозначают устройство либо иной источник, с которого загружаются данные в видеопоток Kinesis. Источником может быть любое производящее видеоданные устройство, например камера безопасности, нагрудная камера, камера смартфона или видеорегистратор. Источник также может посылать другие данные с временными кодами, помимо видео, например аудиозаписи, изображения или данные радаров. Один источник может генерировать один или несколько видеопотоков. Например, видеокамера может направлять видеоданные в один видеопоток Kinesis и аудиоданные в другой.
Что такое потребитель?
Потребитель – это пользовательское приложение, которое потребляет и обрабатывает данные видеопотоков Kinesis в режиме реального времени или после того, как данные были надежно сохранены и проиндексированы (в тех случаях, когда обработка с низкой задержкой не требуется). Эти приложения‑потребители можно создавать для запуска в инстансах Amazon EC2. Для обработки видеопотоков также можно использовать другие сервисы Amazon на основе искусственного интеллекта (например, Amazon Rekognition) или сервисы сторонних поставщиков услуг видеоаналитики.
Что такое блок данных?
Получая мультимедийные данные от источника, Kinesis Video Streams сохраняет их в виде блоков. Каждый блок содержит в себе сам фрагмент мультимедийных данных, копию отправленных источником мультимедийных метаданных, а также некоторые специальные метаданные сервиса Kinesis Video Streams, например номер фрагмента и временные метки, которые были проставлены на стороне источника и на стороне сервера. Когда потребитель запрашивает мультимедийные данные вызовом API GetMedia, сервис Kinesis Video Streams возвращает ему поток блоков данных, начиная с фрагмента, номер которого был указан в запросе.
Из чего складывается задержка в Видеопотоках Amazon Kinesis?
Задержка в сквозном потоке мультимедийных данных формируется четырьмя основными факторами.
- Время, проведенное в аппаратном мультимедийном конвейере устройства: данный конвейер может состоять из датчика изображения и любых связанных с ним аппаратных преобразователей. Теоретически такая задержка может не превышать длительности одного кадра. На практике добиться такого результата удается редко. Для эффективной компрессии мультимедийных данных все кодировщики накапливают несколько кадров, из которых затем формируется фрагмент. Этот процесс, а также любые задействованные в нем алгоритмы компенсации движения добавляют от одной до нескольких секунд задержки на стороне устройства еще до того, как данные будут упакованы для передачи.
- Задержка в ходе реальной передачи данных в Интернете: качество пропускной способности сети и связанные с ней задержки сильно колеблются и зависят от местоположения устройства-источника.
- Задержка, добавляемая сервисом Видеопотоки Kinesis при получении данных от источника: входящие данные становятся немедленно доступны для получения любым приложением‑потребителем с помощью вызова API GetMedia. Если будет принято решение сохранить данные, Kinesis Video Streams зашифрует их с помощью AWS Key Management Service (AWS KMS) и сгенерирует временной индекс на отдельные фрагменты видеопотока. При обращении к этим сохраненным данным с помощью API GetMediaforFragmentList сервис Видеопотоки Kinesis извлекает их из надежного хранилища, дешифрует и обеспечивает доступ к ним приложению‑потребителю.
- Задержка при передаче данных к потребителю: мультимедийные данные могут запрашиваться устройствами‑потребителями, находящимися в Интернете или в других регионах AWS. Качество пропускной способности сети и связанные с ней задержки сильно колеблются и зависят от местоположения устройства-потребителя.
Публикация данных в потоки
Как публиковать данные в видеопоток Kinesis?
Публиковать данные в видеопоток Kinesis можно с помощью операции PutMedia или пакетов SDK источника сервиса Видеопотоки Kinesis для Java, C++ или Android. В случае применения операции PutMedia пользователь несет ответственность за упаковку мультимедийного потока в соответствии со спецификациями сервиса Видеопотоки Kinesis, за формирование самого потока, ротацию токенов и другие действия, необходимые для надежной трансляции данных в облако AWS. Для упрощения всех этих задач и ускорения работы рекомендуется использовать SDK источника.
Для чего нужна операция PutMedia сервиса Видеопотоки Kinesis?
Сервис Видеопотоки Kinesis предоставляет API PutMedia для записи мультимедийных данных в видеопоток Kinesis. В запросе PutMedia источник отправляет поток мультимедийных фрагментов. В момент доставки фрагмента Kinesis Video Streams присваивает ему уникальный номер в порядке возрастания. Он также сохраняет временные метки для каждого фрагмента, созданные на стороне источника и на стороне сервера, в качестве специальных метаданных сервиса Kinesis Video Streams.
Что такое SDK источника сервиса Видеопотоки Kinesis?
Пакет SDK источника сервиса Видеопотоки Amazon Kinesis – это набор удобных библиотек с широкими возможностями настройки, которые можно установить и настроить для использования конкретными источниками. SDK позволяет без труда создать локальное приложение, которое будет устанавливаться на устройство и обеспечит безопасное подключение к видеопотоку, а также надежную публикацию видео и других мультимедийных данных в Kinesis Video Streams. Он берет на себя все технические задачи, которые необходимы для упаковки кадров и фрагментов, сгенерированных мультимедийным конвейером устройства. Помимо этого, SDK обеспечивает управление процессом создания потока, ротацию токенов для безопасной и бесперебойной трансляции, обработку полученных от Kinesis Video Streams подтверждений, а также выполнение многих других задач.
Для каких платформ программирования доступны SDK источника сервиса Видеопотоки Kinesis?
Ядро SDK источника Kinesis Video Streams написано на языке С, что обеспечивает эффективность и простое портирование на множество различных аппаратных платформ. Большинство разработчиков предпочтут использовать пакет SDK источника сервиса Видеопотоки Amazon Kinesis в версиях для C, C++ или Java. Помимо этого, существует Android-версия SDK источника для разработчиков мобильных приложений, которые хотят транслировать видеоданные с устройств под управлением Android.
Что необходимо знать перед началом работы с SDK источника сервиса Видеопотоки Kinesis?
SDK источника Kinesis Video Streams берет на себя основную работу по упаковке кадров и фрагментов, установке безопасного соединения и надежной трансляции видео в AWS. Однако комбинаций аппаратных устройств и работающих на них мультимедийных конвейеров может быть множество. Для упрощения интеграции с мультимедийным конвейером рекомендуется иметь определенные представления о (1) границах кадра, (2) типах кадров, используемых для создания границ (I-frame и не-I-frame), и (3) кадрах с временной меткой.
Чтение данных из потоков
Что такое API GetMedia?
API GetMedia используется для извлечения медиаконтента из видеопотока Kinesis. В запросе необходимо указать имя потока или его Amazon Resource Name (ARN), а также начальный блок данных. Kinesis Video Streams вернет поток блоков, расположенных в порядке возрастания номера фрагмента. При помещении мультимедийных данных (фрагментов) в поток Kinesis Video Streams сохраняет каждый входящий фрагмент и связанные с ним метаданные в виде так называемых «блоков данных». API GetMedia возвращает поток этих блоков, начиная с блока, номер которого был указан в запросе.
Что такое API GetMediaForFragmentList?
С помощью API GetMediaForFragmentList можно извлекать медиаданные, сохраненные в видеопотоке Kinesis, для фрагментов из заданного списка (по указанным номерам фрагментов). Как правило, вызову этой операции API предшествует вызов API ListFragments.
Что такое API ListFragments?
API ListFragments обращается к сохраненным данным и возвращает список фрагментов из указанного видеопотока с заданного начального местоположения, используя для этого номер фрагмента или временные метки.
Как долго можно хранить данные в сервисе Видеопотоки Kinesis?
Время хранения данных в потоках неограниченно. Kinesis Video Streams позволяет настроить продолжительность хранения данных в соответствии с потребностями пользователя.
Что такое библиотека парсера в сервисе Видеопотоки Kinesis?
Библиотека парсера Kinesis Video Streams упрощает для разработчиков процесс получения и обработки результатов операции GetMedia. Разработчики могут включать библиотеку в свои приложения видеоаналитики и обработки, работающие на основе видеопотоков. Сами приложения могут работать на инстансах EC2 либо на любой другой подходящей инфраструктуре. Благодаря возможностям библиотеки можно вычленить объект и связанные с ним метаданные на уровне кадра, а также извлечь и сохранить последовательность фрагментов и специальные метаданные сервиса Kinesis Video Streams, прикрепленные к фрагментам. Такие возможности позволяют создавать клиентские приложения, которые могут просто использовать необработанные видеоданные в различных сценариях.
У меня есть собственное приложение, для которого требуются кадры (и фрагменты), сохраненные в видеопотоке Kinesis. Как мне их получить?
Чтобы получить видеопотоки и выполнить их последующую обработку для обеспечения работы пользовательских приложений, обычно требуется выполнить два ключевых действия. Во‑первых, получить байты кадра из отформатированного потока, предоставленного API GetMedia. Для получения объектов кадра можно использовать библиотеку парсера потока. Затем следует получить такие необходимые для декодирования кадра метаданные, как высота пикселя, его ширина, идентификатор кодека и его частные данные. Подобные метаданные передаются как элементы дорожки. Библиотека парсера упрощает извлечение таких данных, предоставляя вспомогательные классы для сбора информации о дорожке для выбранного фрагмента.
Дальнейшие шаги в большой мере зависят от используемого приложения. Пользователи могут по желанию декодировать кадры, форматировать их для повторного воспроизведения, выполнять перекодирование для распространения или преобразовывать их в специальный формат для приложений глубокого обучения. Библиотека парсера в сервисе Видеопотоки Kinesis имеет открытый исходный код, ее можно надстраивать для конкретных примеров использования.
Воспроизведение потокового видео
Как воспроизвести видео, записанное собственным приложением?
Вы можете использовать функции HTTP Live Streams (HLS) и Dynamic Adaptive Streaming over HTTP (DASH) сервиса Amazon Kinesis Video Streams для воспроизведения полученного видео в фрагментированном и упакованном формате MP4 или MPEG_TS. HLS и DASH – это стандартные протоколы потоковой передачи мультимедиа на базе HTTP. При захвате видео с устройств с помощью Amazon Kinesis Video Streams можно использовать API HLS или DASH для воспроизведения в режиме реального времени или в записи. Это полностью управляемая возможность, поэтому для обеспечения воспроизведения видео не потребуется создавать облачную инфраструктуру. Сведения о воспроизведении с малыми задержками и двунаправленной потоковой передаче мультимедиа см. в разделе вопросов и ответов, посвященных потоковой передаче данных на основе функций WebRTC.
Как начать работу с API HLS или DASH сервиса Видеопотоки Kinesis?
Чтобы просмотреть видеопоток Kinesis с помощью HLS или DASH, сначала создайте сеанс потоковой передачи, используя API GetHLSStreamingSessionURL или GetDASHStreamingSessionURL. В результате этого действия будет возвращен URL-адрес (содержащий токен сеанса) для доступа к сеансу HLS или DASH, который в дальнейшем можно использовать в проигрывателе мультимедиа или отдельном приложении для воспроизведения потока. Для воспроизведения видеопотока можно использовать сторонний проигрыватель (например, Video.js или Google Shaka Player), указав URL-адрес сеанса потоковой передачи HLS или DASH программным путем либо вручную. Можно также воспроизводить видео, введя URL-адрес потокового сеанса HLS или DASH в адресной строке браузера Apple Safari или Microsoft Edge. Дополнительно можно использовать видеоплееры для Android (Exoplayer) и iOS (AVMediaPlayer) в мобильных приложениях.
Каковы основные требования к использованию API HLS сервиса Видеопотоки Kinesis?
Amazon Kinesis Video Streams предъявляет следующие требования к предоставлению данных в формате HLS.
- Мультимедиа должны содержать видео в кодировке H.264 или H.265 и (необязательно) звук в кодировке AAC. В частности, идентификатор кодека дорожки 1 должен иметь значение V_MPEG/ISO/AVC для формата H.264 или V_MPEG/ISO/HEVC для формата H.265. Идентификатор кодека дорожки 2 должен иметь значение A_AAC (необязательно).
- Видеодорожка каждого фрагмента должна содержать частные данные кодека в кодировке AVC (Advanced Video Coding) для формата H.264 или HEVC для формата H.265 (спецификация MPEG-4 ISO/IEC 14496-15). Информацию об адаптации потоковых данных к заданному формату см. в разделе NAL Adaptation Flags.
- Значение срока хранения данных должно быть больше 0.
- Аудиодорожка каждого фрагмента (если она имеется) должна содержать частные данные кодека в формате AAC (спецификация AAC ISO/IEC 13818-7).
Каковы основные требования к использованию API DASH сервиса Видеопотоки Kinesis?
Amazon Kinesis Video Streams предъявляет следующие требования к предоставлению данных через DASH:
- Мультимедиа должны содержать видео в кодировке H.264 или H.265 и (необязательно) звук в кодировке AAC или G.711. В частности, идентификатор кодека дорожки 1 должен иметь значение V_MPEG/ISO/AVC (для формата H.264) или V_MPEG/ISO/HEVC (для формата H.265). Идентификатор кодека дорожки 2 должен иметь значение A_AAC (для формата AAC) или A_MS/ACM (для формата G.711) (необязательно).
- Видеодорожка каждого фрагмента должна содержать частные данные кодека в кодировке AVC (Advanced Video Coding) для формата H.264 или HEVC для формата H.265. Дополнительные сведения см. в спецификации MPEG-4 ISO/IEC 14496-15. Информацию об адаптации потоковых данных к заданному формату см. в разделе NAL Adaptation Flags.
- Значение срока хранения данных должно быть больше 0.
- Аудиодорожка каждого фрагмента (если она имеется) должна содержать частные данные кодека в формате AAC (спецификация AAC ISO/IEC 13818-7) или в формате MS Wave.
Какие режимы воспроизведения доступны в сервисе Видеопотоки Kinesis для потоковой передачи HLS или DASH?
Существует два разных режима воспроизведения, поддерживаемых HLS и DASH: прямая трансляция и воспроизведение по требованию.
ПРЯМАЯ ТРАНСЛЯЦИЯ. Во время сеансов прямой трансляции в список воспроизведения мультимедиа HLS по мере появления постоянно добавляются новые фрагменты. Когда этот тип сеанса воспроизводится в проигрывателе мультимедиа, в пользовательском интерфейсе обычно отображается уведомление о прямой трансляции, при этом отсутствует элемент управления, позволяющий выбрать необходимое место воспроизведения видео в окне воспроизведения.
ПО ТРЕБОВАНИЮ. Во время воспроизведения по требованию в списке воспроизведения мультимедиа HLS содержатся все фрагменты сеанса вплоть до фрагмента с номером, определенным параметром MaxMediaPlaylistFragmentResults. Список воспроизведения можно извлекать только один раз для каждого сеанса.
Кроме того, HLS также поддерживает воспроизведение в режиме LIVE_REPLAY. В этом режиме список воспроизведения мультимедиа HLS обновляется почти так же, как и в режиме LIVE за исключением того, что он начинается с включения фрагментов согласно заданному времени начала. Этот режим удобен в случаях, когда вы хотите начать воспроизведение с точки в прошлом в сохраненных мультимедиа и потом перейти на потоковую передачу.
Какова задержка воспроизведения видео при использовании API?
Задержка воспроизведения во время прямой трансляции обычно составляет от 3 до 5 секунд, но это значение может меняться. Мы настоятельно рекомендуем проводить собственные тесты и исследования для определения конечных задержек. Существует множество факторов, влияющих на задержку: это конкретный пример использования, способ генерации видеофрагментов источником, размер видеофрагмента, настройки проигрывателя, а также состояние сети (как той, которая используется для передачи потока в AWS, так и той, которая используется для передачи потока из AWS для воспроизведения). Сведения о воспроизведении с малыми задержками см. в разделе вопросов и ответов, посвященных потоковой передаче данных на основе функций WebRTC.
Какие ограничения применяются при использовании HLS или DASH?
Видеопоток Kinesis поддерживает не более десяти активных сеансов потоковой передачи HLS или DASH. Когда достигнуто максимальное количество активных сеансов, при создании нового сеанса самый старый (самый ранний из созданных) сеанс закрывается. В этом лимите не учитывается количество активных подключений GetMedia в видеопотоке Kinesis, а количество активных сеансов HLS не учитывается в лимите по количеству активных подключений GetMedia. Дополнительные сведения см. в разделе Ограничения сервиса Видеопотоки Kinesis.
В чем разница между сервисом Видеопотоки Kinesis и AWS Elemental MediaLive?
AWS Elemental MediaLive – это сервис кодирования видео в режиме реального времени с качеством на уровне вещательных компаний. Он позволяет создавать высококачественные видеопотоки для доставки по каналам телевизионного вещания или на подключенные к Интернету мультиэкранные устройства, например телевизоры, планшеты, смартфоны и телевизионные приставки. Сервис может работать независимо или вместе с другими мультимедийными сервисами AWS.
Сервис Amazon Kinesis Video Streams обеспечивает простую и безопасную потоковую передачу видео с подключенных устройств в AWS для пакетной обработки данных в режиме реального времени в целях применения для машинного обучения (ML), воспроизведения видео, аналитики и других видов обработки. Он позволяет клиентам создавать приложения на основе технологий машинного зрения для применения в системах «умного» дома, «умного» города, промышленной автоматизации, мониторинга безопасности и т. п.
Списывается ли плата за использование этой возможности?
В Kinesis Video Streams вы платите только за используемые ресурсы. Авансовые платежи отсутствуют, потребляемые ресурсы оплачиваются по факту использования. Стоимость использования сервиса Kinesis Video Streams зависит от объема собранных данных (в гигабайтах), объема потребленных данных (в гигабайтах), включая объем, потребленный с использованием API HLS или DASH, и объема данных, сохраненных во всех видеопотоках пользовательского аккаунта (в гигабайт-месяцах). Подробнее см. на странице цен.
Что такое пограничный агент видеопотоков Amazon Kinesis
Что такое пограничный агент Видеопотоков Amazon Kinesis?
Пограничный агент видеопотоков Kinesis — это набор простых в использовании и легко настраиваемых библиотек, которые можно установить и настроить для локального хранения видео и запланированной загрузки в облако. Пограничный агент можно загрузить и развернуть его на локальных периферийных вычислительных устройствах. Кроме того, его можно легко развернуть в контейнерах docker, работающих на машинах Amazon EC2. После развертывания можно использовать API видеопотоков Amazon Kinesis для обновления конфигураций записи видео и загрузки в облако. Эта функция работает с любой IP-камерой, которая может передавать потоковую передачу по протоколу RTSP, и не требует развертывания дополнительного встроенного ПО на камерах. Мы предлагаем установки агента периферийных видеопотоков Amazon Kinesis на устройствах периферийного AWS Snowball в виде компонента AWS Greengrass или в собственном развертывании Интернета вещей. Доступ к пограничному агенту Видеопотоков Amazon Kinesis см. здесь.
Двусторонняя потоковая передача мультимедиа с малыми задержками с помощью функций WebRTC
Что такое WebRTC и каким образом сервис Видеопотоки Kinesis поддерживает эту функцию?
WebRTC – это открытая спецификация технологии для обмена данными в режиме реального времени между браузерами и мобильными приложениями через простые API. В ней используются методы одноранговых подключений для обмена данными в режиме реального времени между подключенными узлами, и она обеспечивает малые задержки при потоковой передаче мультимедиа, которые необходимы для взаимодействия между людьми. Помимо спецификаций протоколов для потоковой передачи мультимедиа и данных в режиме реального времени спецификация WebRTC включает набор протоколов IETF, в том числе протоколы ICE RFC5245, TURN RFC5766 и STUN RFC5389, необходимые для создания одноранговых подключений. Сервис Kinesis Video Streams предоставляет соответствующую стандартам спецификацию WebRTC в виде полностью управляемой функции. Вы можете использовать эту функцию для безопасной потоковой передачи мультимедиа или для двухстороннего аудио- или видеовзаимодействия между любыми устройствами IoT, оснащенными камерами, и мобильными или веб-плеерами, совместимыми со спецификацией WebRTC. Так как эта функция полностью управляемая, то для безопасной потоковой передачи мультимедиа между приложениями и устройствами вам не придется создавать и масштабировать связанную с WebRTC облачную инфраструктуру, например сигнальные серверы или серверы ретрансляции мультимедиа, а также управлять ею.
Чем управляет сервис Видеопотоки Amazon Kinesis от моего имени для обеспечения потоковой передачи мультимедиа с помощью WebRTC?
Kinesis Video Streams предоставляет управляемые конечные точки для отправки сигналов WebRTC, обеспечивающих надежную связь приложений друг с другом для одноранговой потоковой передачи мультимедиа. Этот продукт также включает управляемые конечные точки для TURN, благодаря чему возможна передача мультимедиа через облако, когда приложения не могут выполнять одноранговую потоковую передачу мультимедиа. Кроме того, продукт включает управляемые конечные точки для STUN, что дает возможность приложениям обнаруживать их публичные IP-адреса при расположении за NAT или брандмауэром. Предоставляются также простые в использовании SDK, с помощью которых можно применять возможности WebRTC в устройствах IoT с камерами. Наконец, предоставляются клиентские SDK для Android, iOS и веб-приложений, чтобы можно было интегрировать передачу сигналов WebRTC, возможности TURN и STUN Kinesis Video Streams с любым проигрывателем для мобильных устройств или браузеров, совместимым с WebRTC.
Что можно создать с помощью функции WebRTC сервиса Видеопотоки Kinesis?
С помощью функции WebRTC сервиса Kinesis Video Streams можно легко создавать приложения для потоковой передачи либо аудио- или видеовзаимодействия в режиме реального времени между устройствами IoT с камерами, веб-браузерами и мобильными устройствами для разных целей. Например, это могут быть устройства, с помощью которых родители присматривают за комнатой ребенка, дверные видеозвонки, системы управления роботами-пылесосами, оснащенными камерами, которые позволяют управлять роботом и просматривать прямую потоковую трансляцию с камеры на мобильном телефоне, и многое другое.
Как начать работу с функцией WebRTC сервиса Видеопотоки Kinesis?
Вы можете начать работу, создавая и запуская приложения в пакетах SDK сервиса Видеопотоки Kinesis для WebRTC, доступных для веб-браузеров, мобильных устройств с ОС Android или iOS, а также для устройств IoT на базе ОС Linux, Raspbian и MacOS. Кроме того, вы можете запустить быструю демонстрацию этой функции в консоли управления сервиса Видеопотоки Kinesis, создав сигнальный канал и запустив демонстрационное приложение для потоковой передачи аудио и видео со встроенных камеры и микрофона вашего ноутбука.
Что такое сигнальный канал?
Сигнальный канал – это ресурс, благодаря которому приложения могут обнаруживать, настраивать и удалять одноранговое подключение, а также управлять им, обмениваясь сигнальными сообщениями. Сигнальные сообщения – это метаданные, которыми два приложения обмениваются друг с другом для создания однорангового подключения. Эти метаданные включают локальные сведения о мультимедиа, например об используемом медиакодеке и его параметрах, а также о возможных путях в сети для подключения двух приложений друг к другу для потоковой передачи.
Каким образом приложения используют сигнальный канал для создания однорангового подключения?
Приложения, использующие потоковую передачу данных, могут поддерживать постоянное подключение с помощью сигнального канала и ждать, пока другие приложения подключатся к ним, либо они могут подключаться к сигнальному каналу только тогда, когда им необходимо передавать мультимедиа. Сигнальный канал дает приложениям возможность подключаться друг к другу по модели «один к нескольким» с использованием концепции «одно главное, подключающиеся к нескольким средствам просмотра». Приложение, которое инициирует подключение, принимает на себя обязанности главного через API ConnectAsMaster и ждет средства просмотра. К такому сигнальному каналу может подключиться до 10 приложений, приняв на себя обязанности средств просмотра через API ConnectAsViewer. После подключения к сигнальному каналу главное приложение и средства просмотра могут отправлять друг другу сигнальные сообщения, чтобы создать одноранговое подключение для потоковой передачи мультимедиа.
Каким образом приложения осуществляют потоковую одноранговую передачу мультимедиа, когда они находятся за NAT или брандмауэром?
Приложения используют конечную точку Kinesis Video Streams STUN, чтобы обнаруживать их публичные IP-адреса при размещении за NAT или брандмауэром. Приложение предоставляет свой публичный IP-адрес в качестве возможного расположения, в котором оно может принимать запросы на подключение от других приложений для организации потоковой передачи. Вариант, используемый по умолчанию для всех видов обмена данными WebRTC, – прямое одноранговое подключение, но если NAT или брандмауэр не разрешают прямое подключение (например, при использовании симметричных NAT), приложения могут подключаться к конечным точкам Kinesis Video Streams TURN для ретрансляции мультимедиа через облако. API GetIceServerConfig предоставляет необходимые сведения о конечной точке TURN, которые приложения могут использовать в своей конфигурации WebRTC. Этой конфигурация позволяет приложениям использовать ретрансляцию TURN в качестве резервного варианта, когда им не удается создать прямое одноранговое подключение для потоковой передачи.
Как сервис Видеопотоки Kinesis защищает потоковую передачу мультимедиа с помощью WebRTC?
Сквозное шифрование – обязательная функция WebRTC, и сервис Kinesis Video Streams принудительно применяет ее во всех компонентах, включая компоненты передачи сигналов и потоковой передачи мультимедиа или данных. Независимо от способа связи (одноранговое подключение или ретрансляция через конечные точки Kinesis Video Streams TURN) все каналы связи WebRTC надежно зашифрованы с помощью стандартизированных протоколов шифрования. Обмен сигнальными сообщениями выполняется с помощью защищенного протокола WSS, потоки данных шифруются с помощью протокола DTLS, а потоки мультимедиа – с помощью протокола SRTP.
Консоль
Что такое консоль управления сервиса Видеопотоки Kinesis?
Консоль управления Kinesis Video Streams позволяет создавать, обновлять и отслеживать видеопотоки, а также осуществлять управление ими. Помимо этого, консоль позволяет воспроизводить мультимедийные потоки в режиме реального времени или по требованию, если контент потоков относится к одному из поддерживаемых типов мультимедийных данных. Используя элементы управления воспроизведением, можно просматривать потоки в режиме реального времени, перемещаться по ним вперед или назад с шагом в 10 секунд или с помощью счетчика даты и времени перемещаться к моменту в прошлом, если был задан соответствующий период хранения видеопотока. Возможности воспроизведения видео в консоли управления Kinesis Video Streams представляют собой инструмент быстрой диагностики для целей разработки и тестирования и предназначены для разработчиков, создающих свои решения с помощью Kinesis Video Streams.
Какие типы мультимедийных данных поддерживает консоль управления сервиса Видеопотоки Kinesis?
Единственным поддерживаемым типом мультимедийных данных, доступным для воспроизведения в консоли управления Kinesis Video Streams, является популярный формат H.264. Этот мультимедийный формат широко поддерживается различными устройствами, программными и аппаратными декодерами, а также механизмами воспроизведения. Заметим, что пользователи могут собирать для своих приложений и сценариев использования видео, аудио и другие данные с временными кодами любых мультимедийных типов, но консоль управления не будет их воспроизводить.
Какова задержка воспроизведения видео в консоли управления сервиса Видеопотоки Kinesis?
При воспроизведении в консоли управления Kinesis Video Streams видео от источника, передающего данные в видеопоток, в режиме реального времени возможна задержка от 2 до 10 секунд. Большая часть этой задержки обусловлена устройством‑источником, поскольку оно вынуждено накапливать кадры и формировать из них фрагменты перед отправкой данных через Интернет. Когда данные достигнут адреса сервера Kinesis Video Streams и пользователь запросит их воспроизведение, консоль выполняет следующие действия: получает фрагменты из надежного хранилища в мультимедийном формате H.264 и выполняет их преобразование в формат, подходящий для воспроизведения в различных веб‑браузерах. Преобразованный мультимедийный контент будет передан к местоположению пользователя, из которого был сделан запрос на воспроизведение, через Интернет.
Шифрование
Что представляет собой шифрование на стороне сервера в сервисе Видеопотоки Kinesis?
Шифрование на стороне сервера – это функция сервиса Видеопотоки Kinesis, которая автоматически шифрует данные перед отправкой на хранение с помощью указываемого вами ключа AWS KMS. Данные шифруются перед записью на уровне хранилища Kinesis Video Streams и дешифруются по извлечении. Как следствие, на протяжении всего времени хранения в сервисе Kinesis Video Streams данные находятся в зашифрованном виде.
Как начать работу с шифрованием на стороне сервера?
Шифрование на стороне сервера включено для всех видеопотоков Kinesis. Если при создании потока пользователем не был указан конкретный ключ шифрования, будет использован ключ по умолчанию, предоставленный сервисом Kinesis Video Streams.
Назначать ключ пользователя AWS KMS для конкретного потока Kinesis Video Streams требуется в момент создания потока. Присвоить потоку другой ключ с помощью API UpdateStream позже будет уже невозможно.
Присвоить ключ пользователя AWS KMS видеопотоку Kinesis можно двумя способами: 1) указать ключ AWS KMS в разделе Encryption на странице создания нового потока в консоли управления Kinesis Video Streams; или указать идентификатор ключа в параметре KmsKeyId при создании потока в сервисе Видеопотоки Kinesis с помощью API CreateStream.
Какова стоимость использования шифрования на стороне сервера?
Плата за использование шифрования на стороне сервера начисляется в соответствии со стоимостью использования API сервиса AWS KMS и самого ключа шифрования. В отличие от пользовательских ключей AWS KMS, ключ KMS с адресом aws/kinesis‑video (ключ по умолчанию) предоставляется бесплатно. При этом требуется оплачивать использование API, к которым Kinesis Video Streams обращается от имени владельца аккаунта. Стоимость использования API применяется ко всем ключам KMS, в том числе к пользовательским. Kinesis Video Streams обращается к AWS KMS приблизительно раз в 45 минут для выполнения ротации ключа данных. Итоговая стоимость вызовов API сервиса AWS KMS, инициированных одним потоком Kinesis Video Streams за 30‑дневный период, составит несколько долларов США. Необходимо учесть, что данная стоимость будет расти пропорционально количеству учетных данных пользователей, используемых источниками и потребителями данных, так как каждой единице учетных данных требуется уникальный вызов API AWS KMS.
Цены и оплата
Доступен ли сервис Видеопотоки Amazon Kinesis на уровне бесплатного пользования AWS?
Нет. В настоящее время сервис Amazon Kinesis Video Streams недоступен на уровне бесплатного пользования AWS.
Сколько стоит использование сервиса Видеопотоки Kinesis?
В Kinesis Video Streams вы платите только за используемые ресурсы. Сервис не предусматривает авансовой оплаты или минимальных стартовых взносов, а потребляемые ресурсы оплачиваются по факту использования. Стоимость использования сервиса Kinesis Video Streams зависит от объема собранных данных (ГБ), объема потребленных данных (ГБ) и объема данных, сохраненных во всех видеопотоках пользовательского аккаунта (ГБ-месяц).
Kinesis Video Streams начисляет плату только за успешно полученные сервисом мультимедийные данные с минимальным размером одного блока данных, равным 4 КБ. Для сравнения, аудиозапись с битрейтом 64 КБ/с имеет размер 8 КБ, так что минимальный размер блока данных установлен на достаточно низком уровне, чтобы подходить самым малым аудио и видеопотокам.
Как происходит начисление платы за данные, сохраненные в потоках сервиса Видеопотоки Kinesis?
В сервисе Kinesis Video Streams плата начисляется за общий объем данных, сохраненных в любом из имеющихся потоков. Общий объем сохраненных в потоке данных можно контролировать с помощью настройки срока хранения (в часах).
Как взимается плата за использование функции WebRTC в сервисе Видеопотоки Kinesis?
Используя функцию WebRTC в сервисе Amazon Kinesis Video Streams, вы платите за количество сигнальных каналов, активных в определенный месяц, за количество отправленных и полученных сигнальных сообщений и за количество минут потоковой передачи TURN, использованных для ретрансляции мультимедиа. Сигнальный канал считается активным в расчетный месяц, если в любое время месяца к нему подключалось устройство или приложение. Количество минут потоковой передачи TURN измеряется с шагом, равным 1 минуте. Подробнее см. на странице цен.
Соглашение об уровне обслуживания
Что гарантирует соглашение об уровне обслуживания для сервиса Видеопотоки Amazon Kinesis?
Соглашение об уровне обслуживания (SLA) Amazon Kinesis Video Streams гарантирует бесперебойную ежемесячную работу сервиса Amazon Kinesis Video Streams на уровне не менее 99,9 %.
Как узнать, могу ли я претендовать на компенсацию по соглашению об уровне обслуживания?
Компенсация по SLA Amazon Kinesis Video Streams по условиям нашего SLA в отношении Amazon Kinesis Video Streams предоставляется, если бесперебойная ежемесячная работа сервиса в рамках одного региона в нескольких зонах доступности, в которых запущено задание, составила менее 99,9 % в течение любого оплачиваемого месяца.
С условиями и положениями соглашения об уровне обслуживания, а также подробностями оформления заявки на компенсацию можно ознакомиться на странице сведений об SLA для сервиса Видеопотоки Amazon Kinesis.