Звонки и собрания в режиме реального времени с помощью Microsoft Teams

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

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

Платформа предоставляет боту простой API-интерфейс, похожий на сокет, для отправки и получения мультимедиа. Он обрабатывает кодирование и декодирование аудио- или видеопакетов в реальном времени. Он использует такие кодеки, как SILK и G.722 для аудио и H.264 для видео. Платформа также обрабатывает все шифрование или дешифрование пакетов мультимедиа и пакетную передачу по сети. Бот занимается только реальным аудио- или видеосодержимым. Бот мультимедиа в режиме реального времени участвует в личных звонках и собраниях с несколькими участниками.

Сеанс мультимедиа

Бот мультимедиа в режиме реального времени должен указать, какие модальности он должен поддерживать. Бот мультимедиа в режиме реального времени должен объявить о поддержке, когда он отвечает на входящий звонок или присоединяется к собранию Teams. Для каждой поддерживаемой модальности бот объявляет, может ли он отправлять и получать мультимедиа, только получать или только отправлять. Например, бот, предназначенный для обработки личных вызовов Teams, требует как отправки, так и получения звука. Но боту необходимо отправлять только видео, так как ему не нужно получать видео вызывающей стороны. Набор аудио- и видеомодальностей, установленных между ботом и вызывающей стороной или собранием Teams, называется сеансом мультимедиа.

Поддерживаются два типа модальности видео: основное видео и демонстрация экрана с видеоизображением. Основное видео используется для передачи видео с веб-камеры пользователя. Демонстрация экрана с видеоизображением позволяет пользователю делиться экраном. Платформа позволяет боту отправлять и получать оба типа видео.

При присоединении к собранию Teams бот может одновременно получать несколько основных видеопотоков, до 10 за сеанс мультимедиа. Бот может видеть несколько участников собрания.

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

Кадры и частота кадров

Бот мультимедиа в режиме реального времени напрямую взаимодействует с аудио- и видеомодальностями сеанса мультимедиа. Бот отправляет и получает мультимедиа в виде последовательности кадров, и каждый кадр представляет собой единицу содержимого. Одна секунда звука передается в виде последовательности из 50 кадров. Каждый кадр содержит 20 мс, что составляет 1/50 секунды речевого содержимого. Одна секунда видео передается в виде последовательности из 30 неподвижных изображений. Каждое изображение предназначено для просмотра всего за 33,3 мс, что составляет 1/30 секунды до следующего видеокадра. Количество кадров, передаваемых или отображаемых в секунду, называется частотой кадров.

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

Формат звука и видео

В аудиоформате каждая секунда аудио представлена в виде 16 000 пример, каждый из которых содержит 16 бит данных. Аудиокадр длительностью 20 мс содержит 320 примеров, которые составляют 640 байтов данных.

В формате видео поддерживаются несколько форматов. Двумя ключевыми свойствами видеоформата являются размер кадра и цветовой формат. Поддерживаемые размеры кадра включают 640x360 (360 пикселей), 1280x720 (720 пикселей) и 1920x1080 (1080 пикселей). Поддерживаемые цветовые форматы включают NV12 с 12 битами на пиксель и RGB24 с 24 битами на пиксель.

Видеокадр с разрешением 720p содержит 921 600 пикселей, то есть 1280 x 720. В цветовом формате RGB24 каждый пиксель представлен как 3 байта, то есть 24 бита, включая по 1 байту красного, зеленого и синего цветовых компонентов. Для одного видеокадра 720p RGB24 требуется 2 764 800 байт данных, то есть 921 600 пикселей, умноженных на 3 байта на пиксель. При переменной частоте кадров отправка видеокадров 720p RGB24 означает обработку примерно 80 мегабайт контента в секунду. Видео кодек H.264 значительно сжимает 80 мегабайт перед передачей по сети.

Расширенные возможности платформы позволяют боту отправлять или получать видео в виде закодированных кадров H.264. Поддерживаются боты, которые предоставляют собственный кодировщик или декодер H.264, либо видеопоток, декодированный в необработанные растровые изображения RGB24 или NV12, не требуется.

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

Активные и основные выступающие

При присоединении к собранию Teams, состоящему из нескольких участников, бот может определить, какие участники собрания говорят в данный момент. Активные выступающие определяют, какие участники слышат в каждом полученном звуковом кадре. Доминирующие докладчики определяют, какие участники в настоящее время наиболее активны или доминирующие в групповой беседе, хотя их голос не слышен в каждом звуковом кадре. Набор основных выступающих может меняться по мере того, как разные участники говорят по очереди.

В следующем разделе приведены сведения о запросах на подписку на видео, сделанных ботом.

Подписка на видео

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

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

Ресурсы разработчиков

Для разработки бота мультимедиа, размещенного в приложении, необходимо установить пакет NuGet библиотеки Microsoft.Graph.Calls.Media .NET в проекте Visual Studio.

Для ботов мультимедиа, размещенных в приложениях, требуется .NET или C# и Windows Server. Дополнительные сведения см. в разделе Требования и рекомендации для медиа-ботов, размещаемых в приложениях.

Пример кода

Название примера Описание Microsoft Graph
Бот записи политик В этом примере показано, как бот может получать потоки мультимедиа для записи. Просмотр

Следующий этап

См. также