Help us understand the problem. What is going on with this article?

iOSで音声/ビデオ通話をWebRTCを使って実現する(調査編)

More than 3 years have passed since last update.

ある案件でWebRTCを使うことになりましたが、ググって情報を集めるのに難航しました。整理も兼ねて、iOSにおけるWebRTCの利用方法をまとめてみました。

※この記事はiOS側での実装について記載しており、インフラの構成、サーバーサイドの実装については言及していません。

WebRTCとは?

ブラウザやモバイルアプリ上で音声通話、ビデオ通話などのReal-Time Communication(RTC)を実現するための技術です。Googleを始め、Mozilla、Operaなどがサポートしています。 公式ページ自体はGoogle Chromeチームが運営しているようです。

対応ブラウザとプラットフォーム

Google, Mozilla, Operaが開発しているので、各社ブラウザはもちろんのこと、AndroidやiOSもサポートしています。

  • Chrome
  • Firefox
  • Opera
  • Android
  • iOS

ビデオ通話や音声通話をするには?

公式で提供されているサンプルがあります。その他にもWebRTCを活用した WebRTC samples が提供されています。ですが、これらすべてブラウザ上で動作するサンプルです。

残念なことに、公式のiOSサンプルはありません!
ですが、公式のAppRTC をiOS実装したISBX/apprtc-iosがあります。
リポジトリをCloneしてビルドすると、Room IDの入力が求められるので、適当に入れ、同じアプリを他の人の端末にビルドして、同じRoom IDを入れると、その人とのビデオチャットがスタートします。

iOS向けのフレームワークってあるの?

公式 では、自分でビルドしろって言ってきますが、 かったるいので CocoapodやCarthageで気軽に入れられるようにしてくださっている方々がいます。

先程紹介したAppRTCのiOS実装です。AppRTCをそのまま利用したい場合は、podでのインストールも可能です。

pod install AppRTC

SSL Peer Connectionの初期化、ビデオチャットの追加方法もコードサンプルとともにまとめられています。

  • libjingle_peerconnection
    先程のISBX/apprtc-iosのサンプルでもこのフレームワークを使用しています。WebRTC本家に含まれているiOSのビルドスクリプトを独自に修正し、生成したバイナリをフレームワークとしてCocoapodsで配布してくださっています。

  • Anakros/WebRTC
    こちらはCocoaPodsでも、Carthageでもインストール可能です。libjingle_peerconnectionとおおよそ一緒なのですが、一部含まれているヘッダファイルが異なります。
    https://chromium.googlesource.com/external/webrtc/にある webrtc/build/ios/build_ios_libs.shを使ってビルドしています。

こちらは、i386, x86-64アーキテクチャに未対応なので、シミュレーターでのビルドは不可です。

同じWebRTCのバイナリから生成されているものなので、どれを選んでも基本的には問題ないと思います。
僕はCarthageでインストールできるArakros/WebRTCを選びました。

まとめ / 次にやろうと思っていること

iOS向けにまとめられた記事が少なく、調査が難航しましたが、WebRTCに立ち向かわなくてはならない人に参考になれば幸いです。
apprtc-ios はObjective-Cで書かれているし、他のライブラリを活用する場合でも、モデルやラッパーは自身でつくることになるので、次回は開発で得た知見をSwiftのライブラリにしたためたいところです。

Resouces

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away