ということで
どういうことかはわからんけど^^;
janus-gatewayはオープンソースで開発されている汎用WebRTCゲートウェイでプラグインや他のOSSとの組み合わせで色々な使い方ができるらしいです(。・_・。) WebRTCのライブラリ単体ではP2Pでの1:1通話だけですが、1:nやn:n通話、録画なんかもできるようです。詳しくはグルグル先生にでも聞いてくだされぇ。
janus-gatewayのリポジトリは現在はライセンスがGPLv3でGitHub上で公開されていています。GitHub/janus-gateway
リポジトリをクローンして依存ライブラリを入れてビルドすれば動く…とは言うものの、janus-gatewayを動かすこと自体は目的ではないので、手っ取り早く動かすにはどうすべ?とグルグル@@したところ、docker imageを公開している人がいました。ありがとうございますm(_ _)m
GitHub/janus-webrtc-gateway-docker
Webサーバーを別で建てて使うってのが本当の使い方みたいだけど、今回のテストでは割愛、とりあえずAndroidからつながれば良いのじゃ–;
先駆者
ちなみにオフィシャルではないけど、Androidからjanus-gatewayへ繋ぐのは既に他の人も作っていて、GitHubだとGitHub/janus-gateway-androidってのがありました。
でも更新日を見ると最新のコミットが2年前、大部分は3年前でかなり古い。WebRTCのライブラリ自体はMavenのリポジトリで公開されているio.pristine:libjingle:9127@aarで、これも3年前から更新されていない(。・_・。)
WebRTCを触ったことがある人ならわかると思うけど、3年前というと自分が以前WebRTCのライブラリをビルドしていた頃と同じぐらいで無限コミット地獄の過去の彼方であって、色々問題があるし不具合があっても自分でビルドし直すのも超大変。しかも新しいライブラリにすげ替えようとするとたいてい大々的に書き換えないとビルドできない/動かないなんて事もザラなので古いのは極力使いたくないのです。特に今ならオフィシャルのプレビルドライブラリがjCenterから取れるようになっているので独自ビルドの古いライブラリを使うのは選択肢としてもはやありえんかなぁと(月日とは残酷なのじゃ)。
実際にところ、janus-gateway-androidをAS3.1.2にインポートして動かそうとするとあれやこれやと不具合が出てしまいました。頑張って修正して一応ビルド&実行できるようにはなったものの終了時に高頻度でアプリがクラッシュするのでやはり使うのは断念。
記録のために残骸をGitHubで公開しています。新しいオフィシャルのプレビルドライブラリを使ってビルドを通そうとした名残がdevelopブランチに残っていますがこちらはうまく動きません。
GitHub/さきちゃんバージョンのjanus-gateway-android
しかし最終的に断念したものの、janus-gatewayと実際に通信しているときのログが取得できたのは大きな収穫でした(janus-gatewayとvideoroomプラグインのドキュメントには書いていないことがいっぱい発掘されたので)。
開発方針
ということで作る方針はこんな感じでゆるぅ~くいきます。
- jCenterにあるオフィシャルWebRTCネイティブAPIのライブラリを使う(これ大事)
- これに先立って作ったオフィシャルWebRTCネイティブAPIのライブラリを使うAppRTCMobileアプリを極力流用して作る。シグナリング周り以外は流用できるかなぁと思って(これは見込み違いで途中で大幅変更する羽目になった?)
- janus-gatewayはWebSocketとREST風APIその他いくつかのAPIインターフェースを持っていて、janus-gateway-androidではWebSocket経由で接続しているが、今回はREST風APIにする。ちなみに流れるデータはどのインターフェースも似たり寄ったりでした。
- REST風APIを叩くのでOkHttp3+Retrofit2でいく。当初はRxJava/RxAndroidも使おうと思ったもののWebRTC/AppRTCMobile内の処理とマッチせずかえって面倒そうなのでやんぺする
- Java8対応(大したことはしないけど)
ということで今日はこれでおしまい、だって記事が長いとスマホやタブレットからだと見るの大変やろ?(*ノω・*)テヘ
続きは…いつかなぁ(^.^)/~~~