Извлечь сырые видеоданные из WebRTC?

У меня есть видео, которое транслируется через WebRTC. Я хочу извлечь видеоданные сырой, доставленные сервером (байт за байтом)

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

Я могу использовать API MediaRecorder и записывать MediaStream, который я получаю с RTCPeerConnection, но при этом перекодирует видео. Когда я это делаю, я получаю файл WEBM, который после анализа имеет значения PTS, начинающиеся с 0.

Есть ли способ получить необработанные данные, доставляемые через RTCPeerConnection, без использования MediaRecorder?

Я не буду публиковать «ответ» (так как у меня его нет) и не закрою этот вопрос (на случай, если что-то изменится в спецификации в будущем), но пока что в меру моих экспериментов и исследований похоже, что единственный способ сделать то, что я хочу, - это использовать RTCDataChannel для отправки необработанных видеоданных, а затем использовать Media Source Extensions для отображения их на другом конце. Если вы напрямую подключаете видео к RTCPeerConnection, я не вижу способа получить доступ к необработанным данным.

stevendesu 30.07.2018 16:33

Вы нашли решение?

Jacob 25.02.2021 01:39

@Jacob Ради своей работы я использовал уродливое полурешение, описанное в моем комментарии: вместо отправки видео через WebRTC PeerConnection я создал RTCDataChannel и таким образом отправил видео в пакетном формате. На самом деле мы использовали сервер RTMP-to-WebRTC для потоковой передачи видео изначально, поэтому этот сервер был упрощен, чтобы просто отправлять необработанные пакеты RTMP через RTCDataChannel, и я написал преобразователь RTMP на JavaScript для преобразования видео в ISO-BMFF на лету. для воспроизведения.

stevendesu 25.02.2021 18:42

Хорошо, настройка RCTDataChannel аналогична настройке однорангового соединения?

Jacob 25.02.2021 19:25

@Jacob очень похожий, хотя, как ни странно, для этого требуется настроить PeerConnection (хотя это PeerConnection не должно отправлять какие-либо аудио- или видеоданные): developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel

stevendesu 25.02.2021 19:27
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
5
656
0

Другие вопросы по теме