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!
À 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!
Vous pouvez utiliser WebRTC avec des applications natives, mais cela nécessite un peu de travail.
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/
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.
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.
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
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/
À 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
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".
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.
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
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à.
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
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.
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
Pour l'instant vous avez deux options: