Kyushu Security Conference 2018で配信してきた話
先日、9月29日(土)-30日(日)にKyushu Security Conference 2018が開催された。
私は昨年から運営メンバーとして参加し、今年は長崎と熊本のサテライト会場のためにライブ配信を担当した。
元々、仕事ではライブ配信サービスに携わりながらも、実際に配信する経験はあまりなく、とても勉強になった。
平日は配信サービスのコード書いて休日にカンファレンスの配信手伝うの、人生っていう感じがして良い
— メテオさん (@meteor_saan) September 30, 2018
今回はRoland VR-4HDを持ち込み、マイクやスピーカー等は会場のものを利用した。
最初はケーブルノイズに悩まされながらも、試行錯誤した結果、ノイズが少し減って良かった。
ケーブルノイズなるべくなくしてアンプ側のEqでHighを下げた
— メテオさん (@meteor_saan) September 29, 2018
配信は当初はDiscordでビデオ通話という形で行おうとしたが、どうやら学内ネットワークがDiscordのサーバへ到達が出来ないことが発覚し、YouTube Liveで配信することになった。
大学のネットワークだとWebRTCつながらねーww
— メテオさん (@meteor_saan) September 29, 2018
YouTube LiveはWebRTCを使うカメラ配信と従来通りのエンコーダ配信の二種類がある。
今回はそんなに遅延は考慮していなかったので、OBSを使ったエンコーダ配信を選択した。
VR-4HDはUSB Video Classをサポートしているのでドライバーを入れることもなく、そのまま映像をキャプチャすることができた。
エンコードに関してはYouTubeの公式によると最大6Mbpsがいいとのことだったので、その通りに設定した。
また、最初はVBRでエンコードをしていたが、視聴者からブロックノイズが多いとの意見があったのでCBRに変更をした。
そのほか、遅延をなるべく抑えるためにキーフレームを1秒に設定し、Bフレームは使わないようにした。
また、デスクトップPCを持ってこようと思ったが、筐体まるごと持ってくるのは難しかったのでマザーボードと電源とSSDとGeForce GTX 960を持ってきた。
今日の現場です pic.twitter.com/zVNSgDJme5
— メテオさん (@meteor_saan) September 28, 2018
様子です pic.twitter.com/iMhvmSDDyo
— メテオさん (@meteor_saan) September 29, 2018
GeForce GTX 960を持ってきたのは、NVENCと呼ばれるハードウェアエンコードをしたいと思ったのが理由である。
NVENCはGPUで全部処理してくれるのでとても便利である。
NVENCはnvidia-smiで値を取れるので、Mackerelでエンコード負荷を監視した。
ちなみに、mackerel-agent-pluginsにあるものだとエンコード負荷の部分が取れないので自作した。
その結果、二日間配信していて、特にトラブルもなく無事に終えて良かった。
ネットワーク周りも問題なく、SINETの圧倒的パワーにより助けられた。
ちなみに本会場とのラグは3秒くらいだった。もっと遅延を少なくすることも出来るけど、今回はそんなに頑張らなくても良かったので満足。仕事では0.5秒の遅延の世界を経験しているので、遅延を減らす大変さはとても理解している。
YouTube Live、頑張ってキーフレーム間隔短くしたりエンコードしたフレームをすぐpushしたりしてるけど最低でも3秒くらいはラグるな。あとはYouTube側のエンコードの問題か。
— メテオさん (@meteor_saan) September 30, 2018
サテライト会場も無事でなによりだった。
九州セキュリティカンファレンス熊本サテライト会場、配信待機してます👌 pic.twitter.com/39sTU4gY65
— いなご (@i175s) September 29, 2018
最後に運営の皆さん、お疲れさまでした。
Kyushu Security Conference2018の運営メンバーです。#kyusec #student_kyushu pic.twitter.com/gMr9ejf1bU
— 九州学生エンジニア連合 (@student_kyushu) September 30, 2018