WebRTC
ios11

Native WebRTCでもipadがしたい! (safari11 beta2)

More than 1 year has passed since last update.

これは何?

Linux上にビルドしたlibwebrtcのプログラムと手持ちのiPad(safari11 beta2)でWebRTCがしたい!

そのためのnative-webrtcのビルド方法をまとめました。
(ソースコードは丸っと公開できないのでそのうちチュートリアル的に切り出したいと思います)

必要なもの

iPad Air2 (iOS11 beta2をインストールしたもの)
Linuxマシン1台 (awsならsmallインスタンス以上、gceならsmallよりもう一つ良いものが必要)

libwebrtcのビルド

ほぼ公式の手順と同じですが、そのままだとH264が有効にならないので設定します。

Before You Start

ツールを入れてパスを通しておきましょう。
https://webrtc.org/native-code/development/prerequisite-sw/

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

h264を有効にする

gn gen out/Default --args='rtc_use_h264=true use_openh264=true'

ヘッダーを書き換える (なんかフォーマットが違うみたい)

vim src/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc

// 35行目を修正しましょう
const AVPixelFormat kPixelFormat = AV_PIX_FMT_YUV420P;
 ↓
const AVPixelFormat kPixelFormat = AV_PIX_FMT_YUVJ420P;

ビルドする (メモリが4GB以上必要です)

cd src
ninja -C out/Default

ビルドが通ったら出来上がり!

プログラム

client 既存のP2Pのソースなら pc.ontrack() を追加するだけでOKです。

    pc.ontrack = function (evt) {
        console.log("ontrack.");
        if (evt.track.kind === "video")
          remoteView.srcObject = evt.streams[0];
    };

server peer_connection_clientを魔改造してなんとか作りましょう。