All Projects → stasel → Webrtc Ios

stasel / Webrtc Ios

Licence: apache-2.0
A simple native WebRTC demo iOS app using swift

Programming Languages

swift
15916 projects

Labels

Projects that are alternatives of or similar to Webrtc Ios

Momo
WebRTC Native Client Momo
Stars: ✭ 454 (-23.44%)
Mutual labels:  webrtc
Sharedrop
Easy P2P file transfer powered by WebRTC - inspired by Apple AirDrop
Stars: ✭ 5,222 (+780.61%)
Mutual labels:  webrtc
Webtorrent
⚡️ Streaming torrent client for the web
Stars: ✭ 25,554 (+4209.27%)
Mutual labels:  webrtc
Libwebrtc
📦 Google's WebRTC implementation in a single static library.
Stars: ✭ 472 (-20.4%)
Mutual labels:  webrtc
Media Server Node
WebRTC Media Server for Node.js
Stars: ✭ 502 (-15.35%)
Mutual labels:  webrtc
Pearplayer.js
支持WebRTC的多源多协议混合P2P-CDN的流媒体播放器
Stars: ✭ 512 (-13.66%)
Mutual labels:  webrtc
Stun
Fast RFC 5389 STUN implementation in go
Stars: ✭ 451 (-23.95%)
Mutual labels:  webrtc
Mixedreality Webrtc
MixedReality-WebRTC is a collection of components to help mixed reality app developers integrate audio and video real-time communication into their application and improve their collaborative experience
Stars: ✭ 568 (-4.22%)
Mutual labels:  webrtc
Amazon Kinesis Video Streams Webrtc Sdk C
Amazon Kinesis Video Streams Webrtc SDK is for developers to install and customize realtime communication between devices and enable secure streaming of video, audio to Kinesis Video Streams.
Stars: ✭ 503 (-15.18%)
Mutual labels:  webrtc
Libjitsi
Advanced Java media library for secure real-time audio/video communication.
Stars: ✭ 536 (-9.61%)
Mutual labels:  webrtc
Planktos
Serving websites over bittorrent
Stars: ✭ 481 (-18.89%)
Mutual labels:  webrtc
Aws Lex Web Ui
Sample Amazon Lex chat bot web interface
Stars: ✭ 500 (-15.68%)
Mutual labels:  webrtc
Humblenet
a cross-platform networking library that works in the browser
Stars: ✭ 515 (-13.15%)
Mutual labels:  webrtc
Recordrtc
RecordRTC is WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows.
Stars: ✭ 5,008 (+744.52%)
Mutual labels:  webrtc
Unityrenderstreaming
Streaming server for Unity
Stars: ✭ 556 (-6.24%)
Mutual labels:  webrtc
Sipsorcery
A WebRTC, SIP and VoIP library for C# and .NET Core. Designed for real-time communications apps.
Stars: ✭ 449 (-24.28%)
Mutual labels:  webrtc
Detectrtc
DetectRTC is a tiny JavaScript library that can be used to detect WebRTC features e.g. system having speakers, microphone or webcam, screen capturing is supported, number of audio/video devices etc. https://www.webrtc-experiment.com/DetectRTC/
Stars: ✭ 509 (-14.17%)
Mutual labels:  webrtc
Janus Webrtc Gateway Docker
Perfect Docker Image for Media Streaming Expert User ( https://github.com/meetecho/janus-gateway )
Stars: ✭ 582 (-1.85%)
Mutual labels:  webrtc
Webrtc
A reference gradle project that let you explore WebRTC Android in Android Studio.
Stars: ✭ 562 (-5.23%)
Mutual labels:  webrtc
Semana Javascript Expert02
Exemplos de código da segunda semana Javascript Expert - Zoom Clone
Stars: ✭ 534 (-9.95%)
Mutual labels:  webrtc

WebRTC-iOS

A simple native WebRTC demo iOS app using swift.

Screenshots

Disclaimer

This demo app's purpose is to demonstrate the bare minimum required to establish peer to peer connection with WebRTC. This is not a production ready code! In order to have a production VoIP app you will need to have a real signaling server (not a simple broadcast server like in this example), deploy your own Turn server(s) and probably integrate CallKit and push notifications.

Requirements

  1. Xcode 12.1 or later
  2. iOS 10 or later
  3. Node.js + npm (For NodeJS Signaling server)
    - OR -
    macOS 10.15 (For Swift signaling server)

Legacy xcode support:

Setup instructions

  1. Start the signaling server (Either NodeJS or Swift)
  2. Navigate to WebRTC-Demo-app folder
  3. Open WebRTC-Demo.xcworkspace
  4. Open Config.swift and set the defaultSignalingServerUrl variable to your signaling server ip/host. Don't use localhost or 127.0.0.1 if you plan to connect other devices in your network to your mac.
  5. Build and run on devices or on a simulator (video capture is not supported on a simulator).

Starting NodeJS signaling server

1. Navigate to the `signaling/NodeJS` folder.
2. Run `npm install` to install all dependencies.
3. Run `node app.js` to start the server.

Starting Swift signaling server

Note: This step requires MacOS 10.15

1. Navigate to the `signaling/Swift` folder.
2. Run `make`
3. Run `./server` to start the server

Alternative method: Open WebRTC-Demo.xcworkspace and run the SignalingServer scheme.

Run instructions

  1. Run the app on two devices with the signaling server running.
  2. Make sure both of the devices are connected to the signaling server.
  3. On the first device, click on 'Send offer' - this will generate a local offer SDP and send it to the other client using the signaling server.
  4. Wait until the second device receives the offer from the first device (you should see that a remote SDP has arrived).
  5. Click on 'Send answer' on the second device.
  6. when the answer arrives to the first device, both of the devices should be now connected to each other using webRTC, try to talk or click on the 'video' button to start capturing video.
  7. To restart the process, kill both apps and repeat steps 1-6.

CallKit integration

Disclaimer: I am not sure if this is the best way doing it but this has worked for me so far:

  1. Configure WebRTC audio session to use manual audio and disable audio:
    1. RTCAudioSession.sharedInstance().useManualAudio = true
    2. RTCAudioSession.sharedInstance().isAudioEnabled = false
  2. On your CXProvider delegate's provider(CXProvider, didActivate: AVAudioSession) method:
    1. Call RTCAudioSession.sharedInstance().audioSessionDidActivate with the AVAudioSession from the CXProvider
    2. Enable audio: RTCAudioSession.sharedInstance().isAudioEnabled = true
  3. On your CXProvider delegate's provider(CXProvider, didDeactivate: AVAudioSession) call RTCAudioSession.sharedInstance().audioSessionDidDeactivate with the AVAudioSession from the CXProvider

WebRTC and CallKit talk from 2016: https://youtu.be/JB2MdcY1MKs?t=6m23s

References:

Credits:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].