$30 off During Our Annual Pro Sale. View Details »

Rust×mediasoupで作るビデオチャットシステム.pdf

hotwatermorning
October 11, 2023
450

 Rust×mediasoupで作るビデオチャットシステム.pdf

hotwatermorning

October 11, 2023
Tweet

Transcript

  1. Copyright © LabBase, Inc. All Rights Reserved. 
    Rust×mediasoup
    で作る
    ビデオチャットシステム

    View Slide

  2. Copyright © LabBase, Inc. All Rights Reserved. 
    今日の発表について
    ● 今日のデモサイトとコード
    ○ https://mediasoup-test.diatonic.jp/
    ○ https://github.com/hotwatermorning/mediasoup-test
    ● 今回の発表は、表題の内容について自分で調べて試してみたもの。
    この技術について十分な知見があるとは言えないのでその点
    ご容赦下さい。

    View Slide

  3. Copyright © LabBase, Inc. All Rights Reserved. 
    会社紹介

    View Slide

  4. Copyright © LabBase, Inc. All Rights Reserved. 
    会社紹介

    View Slide

  5. Copyright © LabBase, Inc. All Rights Reserved. 
    弊社はRust推しです
    ● 来週21日(土)のRust Tokyo 2023に
    シルバースポンサーとして協賛してます
    ○ https://rust.tokyo/2023
    ● 弊社での開発に興味があったらぜひカジュアル面談
    しましょう!
    ○ https://herp.careers/v1/polinc/QWQuVQIx8WH5

    View Slide

  6. Copyright © LabBase, Inc. All Rights Reserved. 
    自己紹介
    湯朝剛介 (@hotwatermorning)
    ● 前職ではC++でオーディオアプリケーションを開発
    ● いまは株式会社LabBaseで、TypeScriptとRustを使って
    Webサービスを開発している
    ● 趣味はプログラミングと作曲(DTM)
    ● 「C++ポケットリファレンス」
    (技術評論社)共著

    View Slide

  7. Copyright © LabBase, Inc. All Rights Reserved. 
    目次
    ● mediasoupとは
    ● Rust×mediasoupで何ができるのか
    ● デモ
    ● 参考情報など

    View Slide

  8. Copyright © LabBase, Inc. All Rights Reserved. 
    01.mediasoupとは

    View Slide

  9. Copyright © LabBase, Inc. All Rights Reserved. 
    mediasoupとは?
    WebRTC SFUのためのライブラリ
    https://mediasoup.org/

    View Slide

  10. Copyright © LabBase, Inc. All Rights Reserved. 
    mediasoupとは?
    WebRTC (Web Real-Time Communication)
    ● Webブラウザやモバイルアプリなどでリアルタイム通信をする技術
    ● 音声/ビデオ/バイナリデータをP2Pでやり取りできる
    ● Webと付いているが、アプリやゲームからも利用できる

    View Slide

  11. Copyright © LabBase, Inc. All Rights Reserved. 
    mediasoupとは?
    SFU (Selective Forwarding Unit)
    ● WebRTCのP2P通信は、参加者が増えるほど帯域を消費する
    ○ 例えば5人がフルメッシュでP2P通信すると、それぞれの参加者が自身を
    除く4人すべてにデータを送受信する必要がある
    ● これを防ぐために、各参加者の通信を集約して配信するための仕組み
    https://dev.to/devalexiou/the-multiple-faces-of-webrtc-n-peer-calling-mesh-mcu-and-sfu-39dg

    View Slide

  12. Copyright © LabBase, Inc. All Rights Reserved. 
    mediasoupとは?
    つまりmediasoupを使うと
    ● 複数人が参加可能な、WebRTCによるビデオチャットのシステムを
    構築できる。

    View Slide

  13. Copyright © LabBase, Inc. All Rights Reserved. 
    mediasoupとは?
    mediasoupの特徴
    ● バックエンド(サーバーサイド)側のAPIとしてC++, Node, Rustをサポート
    ● フロントエンド側のAPIとしてC++, JavaScript をサポート
    ● サーバーではなく単体のライブラリとして提供されている
    ○ 他のアプリケーションに組み込みやすい

    View Slide

  14. Copyright © LabBase, Inc. All Rights Reserved. 
    02.Rust×mediasoupで
    何ができるか

    View Slide

  15. Copyright © LabBase, Inc. All Rights Reserved. 
    Rust×mediasoupで何ができるか
    mediasoupとRust
    ● mediasoupはバックエンド側のAPIでRustをサポートしている
    ● => Rust製のWebアプリケーションにビデオチャットシステムを
    組み込みやすい
    ○ フロントエンドはJavaScriptかC++で書く必要あり

    View Slide

  16. Copyright © LabBase, Inc. All Rights Reserved. 
    Rust×mediasoupで何ができるか
    mediasoupの機能
    ● SFU
    ● IPv6 Ready
    ● Simulcast and SVC
    ● 輻輳制御
    ● 録画(GStreamer, FFmpeg)
    ● などなど・・・

    View Slide

  17. Copyright © LabBase, Inc. All Rights Reserved. 
    03.デモ

    View Slide

  18. Copyright © LabBase, Inc. All Rights Reserved. 
    デモ

    View Slide

  19. Copyright © LabBase, Inc. All Rights Reserved. 
    04.参考情報など

    View Slide

  20. Copyright © LabBase, Inc. All Rights Reserved. 
    参考情報など
    ● mediasoup公式サイト (https://mediasoup.org/)
    ● 時雨堂のWebRTC入門イベント
    ○ 自社でSFUを開発している時雨堂の人が時々やっている
    WebRTCの入門イベント
    ○ めちゃめちゃ勉強になるので興味ある人はおすすめです
    ● WebRTC Meetup (https://webrtcmeetup.connpass.com/)
    ○ WebRTCのコミュニティ
    ○ 過去の勉強会の資料や動画が上がっていてめちゃめちゃ参考になります
    ● console.lealog(); (https://lealog.hateblo.jp/)
    ○ mediasoupの仕組みについて分かりやすく解説されています

    View Slide

  21. Copyright © LabBase, Inc. All Rights Reserved. 
    ありがとう
    ございました!

    View Slide

  22. Copyright © LabBase, Inc. All Rights Reserved. 

    View Slide