Перехватывать видеокадры в сеансе WebRTC для обработки эффектов?

У меня есть приложение С#/С++, которое захватывает видеопоток с камеры, подключенной к ПК пользователя. Затем он выполняет сегментацию пользователей с помощью Intel RealSense SDK для автоматического удаления фона у пользователя. Что мне нужно знать, так это как включить себя в цепочку доставки видео, чтобы я получал каждый кадр, обрабатывал его и отправлял в модуль WebRTC.

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

Одна часть, которую я не могу понять, - это поместить себя в видео, чтобы я мог получать уведомления о появлении нового видеокадра, изменять его, а затем передавать его в WebRTC в Chromium. Я скачал исходный код Chromium и нигде не могу найти ключевое слово getUserMedia.


person Robert Oschler    schedule 15.02.2015    source источник
comment
Попробуйте выполнить поиск в Интернете: код. google.com/p/chromium/codesearch#search/   -  person Czarek Tomczak    schedule 15.02.2015


Ответы (1)


Поскольку вы используете порт Chromium, это означает, что у вас должен быть доступ к вызовам WebGL через WebKit.

Вместо того, чтобы делать это на стороне приложения, попробуйте сделать это на своем HTML.

Поскольку вопрос «Перехватывать видеокадры в сеансе WebRTC для обработки эффектов?» Я думаю, что этот пост и его демонстрация, которая находится на github, делают именно то, о чем вы просите:

Использование WebGL для применения эффектов в видеокадры WebRTC

А поскольку шейдеры WebGL в основном написаны на C++ (GLSL), вы можете легко создать фрагментный/пиксельный шейдер, удаляющий фон. Скорее всего, такой уже есть, стоит поискать его в гугле.

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

person JeanLescure    schedule 14.08.2015