2013-05-13 3 views
23

Я знаю, что WebRTC был разработан для браузеров, но можно ли напрямую использовать библиотеки WebRTC для мобильных приложений?WebRTC в автономном мобильном приложении

Спасибо!

+2

В Tokbox есть библиотеки iOS, которые интегрируются с webRTC. Может стоить взглянуть на ... http://www.tokbox.com/learn-about-webrtc –

+0

Спасибо, я рассмотрю это решение! – Taras

+0

OpenTok на самом деле не является открытым исходным кодом и работает только с их API. – aredridel

ответ

21

по состоянию на 14 мая here является андроидом проект с использованием WebRTC, который хорошо работает.

Я перевел весь проект андроид на Objective-C для iOS и получил WebRTC, работающий в iOS, но у меня проблемы с iPhone 4 и 4s. Просто работает в iPhone 5 и 5s.

Я думаю, что проблема в производительности. Когда я делаю видеозапись с библиотеками webrtc, она занимает около 140% от процессора на iPhone 5, и я думаю, что это много ресурсов, и iPhone 4s не справляется с этим.


Отредактировано

После борьбы с видеосоединению (всегда отключен через 10 секунд) я, наконец, получил WebRTC работает на iPhone 4s, все, что вам нужно сделать, это установить правильные ограничения при создании локального видеоисточника захвата объект:

NSString *_width = @"320"; 
NSString *_height = @"180"; 
NSString *_maxFrameRate = @"10"; 

RTCMediaConstraints *videoConstraints = [[RTCMediaConstraints alloc] 
initWithMandatoryConstraints:@[[[RTCPair alloc] initWithKey:@"maxHeight" value:_height], 
[[RTCPair alloc] initWithKey:@"maxWidth" value:_width], 
[[RTCPair alloc] initWithKey:@"maxFrameRate" value:_maxFrameRate]] optionalConstraints:@[[[RTCPair alloc] 
initWithKey:@"googCpuOveruseDetection" value:@"true"], 
[[RTCPair alloc] initWithKey:@"googCpuLimitedResolution" value:@"true"]]]; 


RTCVideoSource *videoSource = [factory videoSourceWithCapturer:capturer constraints:videoConstraints]; 
RTCMediaStream *lms = [factory mediaStreamWithLabel:@"ARDAMS"]; 
[lms addVideoTrack:[factory videoTrackWithID:@"ARDAMSv0" source:videoSource]]; 

Обратите внимание, что это отправляет очень маленькое видео, но оно работает!

+0

Olmedo, я также портирую AndroidRTC на iOS. Кажется, мне удалось настроить инициализацию, предложение, ответ, ледяные потоки. Тем не менее, я не могу подключить видеодорожку к просмотру видео. Есть что-то, что я могу пропустить? Ищет помощь .. Спасибо! – azfar

+0

azfar, конечно, где я могу посмотреть ваш код? –

+0

Это в моем частном репо. Можете ли вы отправить мне письмо с рукопожатием по адресу [email protected], чтобы я мог координировать работу с вами дальше? Спасибо – azfar

1

Пока нет, он поддерживается только в ночных браузерах Firefox и в Chrome, и в настольных версиях. См. http://www.webrtc.org

Редактировать: извините, я думал, что вы просите мобильные браузеры. Для родных приложений это выглядит определенным нет :(

Но, похоже, некоторых мобильных поддержки браузера http://www.morbo.org/2013/04/webrtc-support-on-android.html

+0

Спасибо за ваш ответ. Но проект WebRTC содержит много библиотек, написанных на C, поэтому, я полагаю, для них необходимо написать API. Тем не менее я не уверен на 100%. – Taras

+0

WebRTC теоретически может использоваться в мобильных приложениях, но тот факт, что это можно сделать, не означает, что вы можете использовать его сейчас. Все эти библиотеки должны быть перенесены в мобильные ОС и для Android, например, разработчик Android должен написать Java-интерфейс (api).Так что, как обычные пользователи мобильных SDK, я думаю, нам нужно подождать, пока это произойдет. – destan

+0

Да, спасибо. Я думаю, что это все, что мне нужно услышать :) – Taras

2

Я не знаю, что вы имеете в виду под «использовать библиотеки WebRTC на мобильных приложениях непосредственно». Но это то, что я уже сделал. Создайте модули WebRTC NS/AEC/AECM/AGC/VAD с JNI + NDK и используйте общую библиотеку на Android. или вы можете создавать целые WebRTC VoE и ViE для Android и iOS

+0

@bikkhoo: Вы имеете в виду, могли ли вы использовать webrtc на Android с Native App – Amitg2k12

+0

@ Amitg2k12 yep, модули NS/VAD отлично работают в моем приложении, но AECM имеет небольшие проблемы с криками. – BillHoo

+0

спасибо большое было бы здорово, если бы вы могли прокомментировать мой вопрос http://stackoverflow.com/questions/16933532/using-webrtc-in-native-app – Amitg2k12

4

Мы (отказ от ответственности: я там работаю) построили набор библиотек для делать это @ Frozen горы, в IceLink. Полная реализация WebRTC для iOS, Android, .NET и т. Д.

+0

Есть ли кордовая версия для iOS и Android? –

11

Вы можете использовать WebRTC с родными приложениями, но для этого требуется небольшая работа. WebRTC Native app anatomy

Если вы посмотрите на изображение, вы увидите красный прямоугольник внизу. Это родные библиотеки C++ WebRTC. Классы WebRTC и объекты WebRTC для аудио и видео также могут быть найдены как часть проекта WebRTC. Что вам нужно добавить, это API для вашего приложения, чтобы иметь возможность настраивать вызовы (интерфейс VOIP), стек сигнализации и NAT обходные утилиты (Core Protocol - для SIP это может быть что-то вроде PJSIP и PJNATH) и адаптер от вашего стека сигнализации до webrtc, сообщая ему, когда нужно открывать каналы для видео и аудио и когда их останавливать и т. д.

См. также : http://bloggeek.me/porting-webrtc-mobile/

2

Один ресурс, который вы можете захотеть взглянуть на это статья: how to get started with webrtc and ios without wasting 10 hours of your life

Одна проблема, которую я имею делает сеном из всех файлов библиотеки WebRTC/Libjingle. На данный момент я могу запустить пример приложения, но мне жаль, что там не было примера «Hello World».

+0

Есть проект ** ApprtcDemo ** –

0

На данный момент у вас есть два варианта:

  • Либо вы будете строить libWebRTC для вашего устройства. Вам нужно знать, как работать с Android NDK и собственным C-кодом на iOS. Это нетривиально, но это прекрасно выполнимо
  • Используйте работу других, которые сделали это за вас. Например. уже упомянутый AddLive (yip, я там работаю) или даже OpenTok.
3

По состоянию на март 2014 года, here способ сделать это, в самом деле:

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

  • Google Chrome 28 (по умолчанию включено с 29)
  • Mozilla Firefox 24
  • Opera Mobile 12

Source:

+0

У вас есть много местных клиентов, Клинт? –

5

Позвольте мне суммировать ответ, на Android Firefox фактически поддерживается WebRTC. С другой стороны, существует множество компаний, предоставляющих полный стек для создания продукта WebRTC. Если у вас есть после того, как просто WebRTC и создайте другой материал (адресация и т. Д.), Вам, вероятно, придется самому создать пару оберток. (Отказ от ответственности Я работаю Sinch)

[http://sinch.com] 
[http://twilio.com] 
[http://tokbox.com] 
[http://nexmo.com] 
[http://plivo.com] (I think) 

Существует еще немного там, но они являются основными

Мы все наши различные преимущества и недостатки. если вы заинтересованы, отправьте электронное письмо, и я могу поговорить о sinch.

+0

hi @cjensen Я попытался зарегистрировать пользователей для видеовызова, используя имя пользователя на двух разных устройствах с тем же именем пользователя. Как-то он вызывает первое устройство, как сделать его доступным только для последнего зарегистрированного пользователя. Я знаю, что мы можем использовать метод stopClient, но в моих условиях я не могу его использовать. Пожалуйста, помогите мне в этом –

0

Для прошивки, просто добавьте в ваш CocoaPods Podfile

pod "libjingle_peerconnection" 


# Add this to the bottom so it won't have issues with active architecture 
post_install do |installer_representation| 
    installer_representation.project.targets.each do |target| 
     target.build_configurations.each do |config| 
      config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' 
      config.build_settings['VALID_ARCHS'] = ['armv7', 'i386'] 
     end 
    end 
end 

Проверить this, для которых изменения доступны. Версия 6802.X отражает this от фактической базы кода WebRTC.

Android скоро будет добавлен в maven central, я сделаю для этого изменение, когда это произойдет.

Если вы хотите, чтобы вручную построить WebRTC проверить github.com/pristineio/webrtc-build-scripts, который также включает в себя шаг за шагом руководство для обеих платформ

3

На сегодняшний день WebRTC официально доступен изначально на Android/IOS.

http://www.webrtc.org/native-code/android

http://www.webrtc.org/native-code/ios

Хотя под капотом, это просто Java/Objective C обертка вокруг API для C++.

Вы все еще можете использовать их, не просматривая JavaScript.

Java-обертка API: https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fjava%2Fsrc%2Forg%2Fwebrtc

Объективный C обертка API: https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fobjc%2Fpublic%253Fstate%253Dclosed

3

SightCall имеет WebRTC-совместимый SDK для Android, которая позволяет Android-нативные приложения подключаются к WebRTC в браузере. Вы можете получить SDK here

0

Моя команда проделала большую работу в этой области. Если вы ищете плагин Cordova, мы играем с открытым исходным кодом под названием PhoneRTC. У нас он работает на iOS, но он немного ненадежный, а соотношение сторон видео-окна фиксировано таким образом, что на большинстве устройств выглядит неестественно, но он работает.

Мы также создали демо-версию Android, используя libjingle. Libjingle теперь является частью проекта и базы кода WebRTC. This Ссылка, вероятно, устарела, но указывает на инструкции, которые работали для нас в то время.

0

См. Также this пример приложения для Android с помощью webrtc, phonertc и crosswalk-webview build on cordova, с peerjs.

+1

Добро пожаловать в переполнение стека! Хотя это теоретически может ответить на вопрос, [было бы желательно] (// meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. –

0

Довольно поздно, чтобы ответить .. Но я просто создал рамки для простого добавления WebRTC в проект iOS. Вам не нужно будет создавать структуру WebRTC из библиотеки. Эта структура предоставит вам встроенный фреймворк вместе с оберткой для легкого добавления webRTC в ваше приложение. https://github.com/Ankit-Aggarwal/SwiftyWebRTC

0

Если вы нацеливаетесь на android> = L, вы можете легко создать собственное приложение webRTC, вставив (hrome) webview, который поддерживает WebRTC, в ваше приложение.

См chrome webview

0

Проверьте мой ответ here, и я надеюсь, вы понимаете, что он работает на Android тоже. Старайтесь не получать уже реализованные библиотеки для некоторых серверов сигнализации (ps они оплачиваются).

Смежные вопросы