web-dev-qa-db-fra.com

WebRTC sur une application mobile autonome

Je sais que WebRTC a été conçu pour les navigateurs, mais est-il possible d'utiliser directement les bibliothèques WebRTC sur des applications mobiles?

Merci!

23
Taras

À partir du 14 mai ici est un projet Android utilisant WebRTC qui fonctionne bien.

J'ai traduit l'intégralité de ce projet Android en Objective-C pour iOS et j'ai également fait fonctionner WebRTC sous iOS, mais je ne parviens pas à résoudre mes problèmes avec l'iPhone 4 ou 4. Fonctionne uniquement sur iPhone 5 et 5s.

Je pense que le problème est la performance. Lorsque je passe un appel vidéo avec les bibliothèques Web, cela prend environ 140% du processeur d'un iPhone 5, ce qui représente beaucoup de ressources et que l'iPhone 4 ne peut pas gérer.


Édité

Après des difficultés avec la connexion vidéo (toujours déconnectée au bout de 10 secondes), WebRTC fonctionne enfin sur l'iPhone 4. Il vous suffit de définir les bonnes contraintes lors de la création de l'objet de capture videoSource local:

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]];

Notez que cela envoie une très petite vidéo, mais ça marche!

21
Moisés Olmedo

Vous pouvez utiliser WebRTC avec des applications natives, mais cela nécessite un peu de travail. WebRTC Native app anatomy

Si vous regardez l'image, vous pouvez voir un rectangle rouge en bas. C'est la bibliothèque C++ native de WebRTC. Les classes WebRTC et les objets WebRTC pour l’audio et la vidéo peuvent également être trouvés dans le projet WebRTC. Ce que vous devez ajouter est une API pour que votre application puisse configurer des appels (l’interface VOIP), une pile de signalisation et NAT utilitaires de traversée (Core Protocol- Pour SIP, cela pourrait être quelque chose comme PJSIP et PJNATH) et un adaptateur de votre pile de signalisation à webrtc, en indiquant au moment d'ouvrir les canaux pour l'audio et la vidéo et quand les arrêter etc.

Voir aussi: http://bloggeek.me/porting-webrtc-mobile/

12
Arik Halperin

Nous avons mis en place un ensemble de bibliothèques pour cela @ Frozen Mountain, dans IceLink . Mise en œuvre complète de WebRTC pour iOS, Android, .NET, etc.

5
jvenema

Permettez-moi de résumer la réponse. Sur Android, Firefox prend en charge WebRTC, je crois, par contre, il existe un groupe de sociétés fournissant la pile pour la création d’un produit WebRTC. Si vous vous contentez de WebRTC et que vous construisez les autres éléments (adresse, etc.), vous devez probablement créer vous-même quelques enveloppes . (Avertissement je travaille pour sinch)

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

Il y en a plus, mais ce sont les principaux

Nous avons tous nos avantages et nos faiblesses. si vous êtes intéressé envoyez un email et je peux parler de sinch.

5
cjensen

À partir de mars 2014, ici est un moyen de le faire, en effet:

Ce serait si vous êtes intéressé par un client natif. Si vous utilisez un navigateur mobile, les suivants sont actuellement pris en charge:

  • Google Chrome 28 (activé par défaut depuis 29)
  • Mozilla Firefox 24
  • Opera Mobile 12

La source :

3
Clint Eastwood

SightCall dispose d’un SDK compatible Android avec WebRTC qui permet aux applications natives d’Android de se connecter à WebRTC dans un navigateur . Vous pouvez obtenir le SDK ici

3
Christophe

Il est possible de travailler avec WebRTC dans des applications mobiles avec l'utilisation d'API tierces telles que OpenTok (iOS uniquement, à partir de janvier 2014, version bêta d'Android) http://tokbox.com/opentok/webrtc/downloads/index. html et Addlive (iOS et Android) http://www.addlive.com/platform-overview/

3
Thelle

À ce jour, WebRTC est officiellement disponible nativement sur Android/iOS.

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

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

Bien que sous le capot, il ne s’agisse que d’une enveloppe Java/Objective C entourant les API C++.

Vous pouvez toujours les utiliser sans passer par JavaScript.

L'API d'encapsuleur Java: https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fjava%2Fsrc%2Forg%2Fwebrtc

API d'encapsulation Objective C: https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fobjc%2Fpublic%253Fstate%253Dclosed

3
Schleir

L’une des ressources à consulter est cet article: comment démarrer avec webrtc et ios sans perdre 10 heures de votre vie

Un problème que je rencontre est de donner un sens à tous les fichiers de bibliothèque WebRTC/Libjingle. Pour le moment, je peux obtenir l'exemple d'application en cours d'exécution, mais j'aimerais qu'il y ait un exemple "Hello World".

2
Martin Duparc

Je ne sais pas ce que vous entendez par «utiliser directement les bibliothèques WebRTC sur les applications mobiles»… . Mais il y a quelque chose que j'ai déjà fait…. JNI + NDK et utilisez la bibliothèque partagée sur Android ..__ ou vous pouvez créer WebRTC VoE et ViE complets pour Android et iOS.

2
BillHoo

Pas encore, il est uniquement pris en charge par Firefox dans la nuit et Chrome, les deux versions de bureau. Voir http://www.webrtc.org

Edit: désolé, je pensais que vous demandiez des navigateurs mobiles. Pour les applications natives, cela ressemble vraiment à un non :(

Mais il semble que certains navigateurs mobiles prennent en charge http://www.morbo.org/2013/04/webrtc-support-on-Android.html

1
destan

Mon équipe a beaucoup travaillé dans ce domaine. Si vous cherchez un plugin Cordova, nous avons joué avec un projet open source appelé PhoneRTC . Il fonctionne sur iOS mais il est un peu peu fiable et le format de la fenêtre vidéo est corrigé de manière à ne pas sembler naturel sur la plupart des appareils, mais cela fonctionne. 

Nous avons également créé une démo Android utilisant libjingle. Libjingle fait maintenant partie du projet WebRTC et de sa base de code. This link est probablement obsolète maintenant, mais pointe vers des instructions qui ont fonctionné pour nous à ce moment-là.

0
bpulito

Si vous ciblez Android> = L, vous pouvez créer une application WebRTC native très facilement en incorporant une vue Web (chrome) - qui prend en charge WebRTC - dans votre application.

Voir chrome webview

0
Tim Panton

Pour iOS, ajoutez simplement ceci à votre Podfile CocoaPods

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

Vérifiez ceci pour lequel des révisions sont disponibles. La révision 6802.X renvoie à this à partir de la base de code WebRTC réelle.

Android sera ajouté à maven central très bientôt, je ferai une modification à cela quand cela se produira.

Si vous souhaitez créer manuellement WebRTC, visitez github.com/pristineio/webrtc-build-scripts, qui inclut également un guide étape par étape pour les deux plates-formes.

0
thebehera

Il est assez tard pour répondre ... Mais je viens de créer un framework permettant d'ajouter facilement WebRTC dans un projet iOS ... Vous n'avez pas besoin de créer un framework WebRTC à partir de la bibliothèque ... Ce framework vous donnera un framework intégré avec un wrapper pour ajouter facilement webRTC à votre application . https://github.com/Ankit-Aggarwal/SwiftyWebRTC

0
Ankit

Pour l'instant vous avez deux options:

  • Soit vous construirez libWebRTC pour votre appareil. Vous devez savoir comment utiliser le NDK Android et le code C natif sur iOS. Ce n'est pas anodin mais c'est parfaitement faisable 
  • Utilisez le travail des autres qui ont fait cela pour vous. Par exemple. déjà mentionné AddLive (yip, je travaille là-bas) ou même OpenTok.
0
stoiczek