LoginSignup
63
61

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-01-10

ある案件で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

63
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
61