Какие стандарты связи с камерой используются Navigator.MediaDevices.getUserMedia()?
Кто-нибудь знает, какие стандарты связи используются для обнаружения оборудования камеры для использования с getUserMedia?
Я предполагаю, что это MTP или что-то в этом роде, хотя я ожидаю, что реализация отличается для каждого браузера / ОС, но я искал два дня, и я не могу найти какую-либо достоверную информацию по этому вопросу.
2 ответа
Я долго искал ответ на ваш вопрос. Сначала я нашел это на сайте w3.org WebRTC:
Этот документ определяет набор API-интерфейсов ECMAScript в WebIDL, чтобы разрешить отправку и получение мультимедиа из другого браузера или устройства, реализующего соответствующий набор протоколов реального времени. Эта спецификация разрабатывается в сочетании со спецификацией протокола, разработанной группой IETF RTCWEB, и спецификацией API для доступа к локальным мультимедийным устройствам, разработанной Целевой группой по захвату медиа.
Тогда на сайте "Медиа транспорт и использование RTP" я нашел следующую информацию:
5.2.4. Идентификация медиа потока:
Конечные точки WebRTC, которые реализуют расширение согласования связки SDP, будут использовать атрибут mid структуры группировки SDP для идентификации потоков мультимедиа. Такие конечные точки ДОЛЖНЫ реализовывать расширение заголовка RTP MID, описанное в [ID.ietf-mmusic-sdp-bundle-gotiation].
Это расширение заголовка использует общую структуру расширения заголовка [RFC5285], и поэтому его необходимо согласовать, прежде чем его можно будет использовать.
12.2.1. Идентификация медиа-источника:
Каждый поток пакетов RTP идентифицируется уникальным идентификатором источника синхронизации (SSRC). Идентификатор SSRC передается в каждом из пакетов RTP, содержащих поток пакетов RTP, и также используется для идентификации этого потока в соответствующих отчетах RTCP. SSRC выбран, как описано в разделе 4.8. Первым этапом демультиплексирования пакетов RTP и RTCP, принятых в одном потоке транспортного уровня в конечной точке WebRTC, является разделение потоков пакетов RTP на основе их значения SSRC; Как только это будет сделано, дополнительные шаги демультиплексирования могут определить, как и где визуализировать медиа.
RTP позволяет микшеру или другому промежуточному блоку уровня RTP комбинировать кодированные потоки из нескольких источников мультимедиа для формирования нового кодированного потока из нового источника мультимедиа (микшер). Пакеты RTP в этом новом потоке пакетов RTP могут включать в себя список "Содействующий источник" (CSRC), указывающий, какие оригинальные SSRC внесли вклад в объединенный исходный поток.
Как описано в разделе 4.1, реализации должны поддерживать прием пакетов данных RTP, содержащих список CSRC, и пакетов RTCP, которые относятся к источникам, присутствующим в списке CSRC. Список CSRC может меняться в зависимости от пакета в зависимости от выполняемой операции микширования.
Знание того, какие медиаисточники внесли свой вклад в конкретный RTP-пакет, может быть важным, если пользовательский интерфейс указывает, какие участники активны в сеансе. Изменения в списке CSRC, включенном в пакеты, должны быть представлены приложению WebRTC с использованием некоторого API, если приложение должно иметь возможность отслеживать изменения в участии в сеансе. Желательно отобразить значения CSRC обратно в идентификаторы WebRTC MediaStream, когда они пересекают этот API, чтобы не подвергать пространство имен SSRC/CSRC приложениям WebRTC.
Если в сеансе используется расширение уровня звука микшера-клиента [RFC6465] (см. Раздел 5.2.3), информация в списке CSRC дополняется информацией об уровне звука для каждого участвующего источника. Желательно предоставить эту информацию приложению WebRTC с использованием некоторого API после сопоставления значений CSRC с идентификаторами WebRTC MediaStream, чтобы ее можно было открыть в пользовательском интерфейсе.
Perkins, et al. Истекает 18 сентября 2016 года [Страница 35]
Интернет-проект RTP для WebRTC март 2016
Все Транспорты для WebRTC перечислены на этом сайте.
Все документы из группы IETF RTCWEB вы можете найти на сайте "Связь в реальном времени в WEB-браузерах (rtcweb)".
Для дополнительной информации:
- Media Capture (со ссылками на все документы)
- MediaStream API (все методы, которые используются в этом API)
- Транспортный протокол в реальном времени (RTP)
- Протокол описания сеанса (SDP)
Мой вывод:
- Протокол описания сеанса (SDP)
- Транспортный протокол в реальном времени (RTP) (может быть тоже)
Библиотека webrtc.org имеет набор платформенных модулей склеивания, которые можно найти здесь, а также в дереве Chrome. В Windows используются API MediaFoundation (с откатом на DirectShow), video4linux для Linux и AVFoundation на Mac