Создание пира webRTC *без* браузера, только с интерпретатором JavaScript

Я хочу создать одноранговый узел WebRTC, который представляет собой простой прослушиватель/рекордер без компонента «представления» (т. е. без HTML/CSS).

Если это возможно (с помощью WebRTC JavaScript API), скажите мне, какой автономный движок JavaScript я могу использовать (я подумываю установить автономный движок V8).

Спасибо.


person auro    schedule 07.05.2013    source источник
comment
это будет возможность, добавленная DOM браузера, а не javascript.   -  person dandavis    schedule 08.05.2013
comment
Пир, который я хочу построить, не взаимодействует с DOM. Ничего не представляет.   -  person auro    schedule 08.05.2013
comment
Что вы пытаетесь достичь? Вы хотите запускать API WebRTC с чем-то вроде Phantom.js или Rhino? Если вы хотите создать собственное приложение, взгляните на пакет кода WebRTC (webrtc.org/ reference/getting-started) и различные попытки использовать Qt для создания приложений WebRTC.   -  person Sam Dutton    schedule 24.05.2013
comment
Спасибо, Сэм Даттон. Теперь мне ясно, что я должен использовать собственные API. Я надеялся, что если на моей машине будет работать автономный V8 (или любой другой JS-движок), я смогу напрямую использовать API WebRTC JS. Мое приложение не декодирует аудио/видео и не нуждается в каких-либо элементах управления; поэтому мне не нужен DoM веб-браузера. Если у вас есть идеи, как это сделать, поделитесь.   -  person auro    schedule 28.05.2013
comment
Я также изучаю, как это сделать, и мне интересно, какое решение вы выбрали.   -  person Lyle Pratt    schedule 20.09.2013
comment
На данный момент решения нет. Есть куча коммерческих провайдеров, таких как OpenTok, и нефункциональная вещь с открытым исходным кодом, называемая licode. Вам нужно будет внедрить RFC ICE/STUN/TURN и SRTP и изучить все файлы c по адресу code.google.com/p/webrtc/source/browse/ Команде хороших инженеров потребуются годы, чтобы создать что-то работающее.   -  person Bjorn    schedule 30.09.2013
comment
Поможет ли запуск Chrome без головы решить вашу проблему? (gist.github.com/addyosmani/5336747)   -  person Backpackcoder    schedule 27.11.2013
comment
Вы изучали библиотеки webrtc.io для node.js? npmjs.org/package/webrtc.io   -  person J Ellis    schedule 07.12.2013
comment
Вы когда-нибудь находили решение этой проблемы?   -  person JerryFox    schedule 16.10.2014
comment
Возможный дубликат клиента Node.js WebRTC   -  person user    schedule 12.02.2017


Ответы (6)


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

person Eric Hanson    schedule 02.04.2019
comment
старый пост, но золотой ответ, все еще актуален. благодарю вас - person auro; 05.04.2019

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

Я предполагаю, что этот вопрос был задан, потому что в то время еще не было встроенной поддержки webrtc. Но есть сейчас. Android, iOS, Windows, Linux и OSX теперь поддерживают собственные библиотеки webrtc.

Собственные библиотеки можно использовать для создания peerconnection и настройки stream для другого клиента (cross-platform). Если вы хотите создать какое-либо клиентское приложение на основе webrtc без использования browser, вам подойдут нативные библиотеки. Нет необходимости в глупом автономном двигателе javascript.

Подробнее здесь

person Kevin    schedule 01.05.2015
comment
Я не мог найти никаких ссылок для Linux. Не могли бы вы помочь мне с этим? Спасибо! - person Vishal Dalwadi; 08.02.2020
comment
@VishalDalwadi Вы видели webrtc .googlesource.com/src/+/refs/heads/master/docs/ ? - person Kevin; 09.02.2020

Я думаю, вы могли бы использовать сервер node.js для этого. Существует пакет npm, предоставляющий возможности webrtc для nodejs: node-webrtc.

person Hugo    schedule 16.01.2014
comment
Это также похоже на серверную часть WebRTC — демо-пир все еще работает в браузере. - person Bergi; 17.01.2014
comment
API-интерфейсы MediaStream не поддерживаются, поэтому вы не можете создать прослушиватель/рекордер с помощью этой библиотеки. - person Pierre F; 09.06.2017

Лучший способ сделать это прямо сейчас — создать приложение node-webkit. Унифицированный контекст узла + браузера дает вам лучшее из всех миров.

person ZECTBynmo    schedule 27.05.2014
comment
Да, узел достаточно универсален, чтобы соответствовать всем требованиям. Зачем нам нужен контекст браузера? Пожалуйста, изложите свои мысли, если они у вас есть. Я приму ответ в любом случае. - person auro; 29.05.2014
comment
Контекст браузера предварительно настроен с помощью примитивов соединения webrtc, поэтому вам не нужно выполнять всю работу. - person ZECTBynmo; 29.05.2014

Я хотел иметь постоянно работающий «Робот» на стороне сервера, к которому общедоступные одноранговые узлы могли бы подключаться и тестировать свое соединение (одноранговое или ретрансляционное). Мне удалось успешно использовать безголовый браузер Puppeteer. «Робот» использует в основном тот же код, что и общедоступные узлы. Он работает в Windows и Unix и подключается к сигнальному и STUN/TURN-серверу, а также к отдельному одноранговому узлу без каких-либо изменений кода.

person Tsunamis    schedule 22.10.2018
comment
Замечательно. Не могли бы вы поделиться настройкой/файлами кукольника, чтобы он работал? - person Amit; 03.02.2021
comment
У меня больше нет доступа к коду. Но это не намного больше, чем говорится в файле readme проекта. Просто загрузите URL кода клиента. Вы должны написать свой код так, чтобы робот автоматически принимал входящие звонки. Но это касается не Puppeteer, а вашего приложения WebRTC. - person Tsunamis; 04.02.2021

Если я правильно вас понял, вы хотите сделать WebRTC, то есть функцию, предназначенную в первую очередь для браузера, которая будет использоваться без браузера :-)

Я мог бы представить, что «эмулировать» поведение браузера можно просто путем реализации необходимого API через ваш собственный код, либо непосредственно внутри rhino или аналогичного, либо путем фактического управления интерфейсом, который обрабатывает медиапотоки в нативном коде.

Таким образом, необходимо реализовать API WebRTC, который управляет захватом аудио/видео с устройств ввода и отправкой его на другую сторону. Как я понял, это не должен быть узел пользовательского интерфейса, например, встроенная камера Ethernet с микрофоном, которая служит для захвата аудио/видео в конференц-зале.

Я боюсь, что это может быть частью работы, поскольку основная часть - это обработка медиа и соединения.

person pxlinux    schedule 27.12.2013