ビデオストリーミング | WebRTC | 2.0.5-preview
docs.unity3d.com
    Show / Hide Table of Contents

    ビデオストリーミング

    • コーデック
    • ビデオトラック
      • トラックの追加
      • マルチトラック

    WebRTC はピア間での映像のストリーミングを可能にします。 Unity でレンダリングされた映像を同時に複数のブラウザに配信することが可能です。

    コーデック

    ビデオストリーミングで利用するエンコーダーには、ハードウェアでエンコードするものと、ソフトウェアでエンコードするものがあります。利用するコーデックは、ハードウェアエンコーダーの場合には H.264 を利用し、ソフトウェアエンコーダーの場合は、VP8 コーデックを利用します。

    WebRTC.Initialize メソッドの引数に EncoderType を指定することで、 ソフトウェアエンコーダーとハードウェアエンコーダーのいずれかを選択することができます。

    // ソフトウェアエンコーダーを使用
    WebRTC.Initialize(EncoderType.Software);
    
    Note

    このオプションはハードウェアを利用する/利用しないを選択するオプションです。 コーデックを明示的に指定する方法は、現在提供していません。

    WebRTC をサポートしている主要なブラウザでは H.264 及び VP8 が利用できるため、多くのブラウザで Unity から配信されるビデオストリーミングを受信することができます。

    ビデオトラック

    ビデオストリーミングを実装するには、ビデオトラック VideoStreamTrack のインスタンスを生成します。

    // Camera からトラックを生成
    var camera = GetComponnent<Camera>();
    var track = camera.CaptureStreamTrack(1280, 720);
    

    RenderTexture を直接指定する方法もあります。

    // 有効な RendertextureFormat を取得
    var gfxType = SystemInfo.graphicsDeviceType;
    var format = WebRTC.GetSupportedRenderTextureFormat(gfxType);
    
    // RenderTexture からトラックを生成
    var rt = new RenderTexture(width, height, 0, format);
    var track = new VideoStreamTrack("video", renderTexture);
    

    トラックの追加

    生成したビデオトラックを RTCPeerConnection のインスタンスに追加します。AddTrack メソッドを呼び出すことでトラックを追加できます。その後 SDP を生成するために RTCPeerConnection の CreateOffer もしくは CreateAnswer を呼び出します。

    // トラックを追加
    peerConnection.AddTrack(track);
    
    // SDP を生成
    RTCAnswerOptions options = default;
    var op = pc.CreateAnswer(ref options);
    yield return op;
    

    マルチトラック

    ビデオトラックは複数同時に利用することが可能です。 RTCPeerConnection の AddTrack メソッドを複数回呼び出してトラックを追加します。

    // 複数のトラックを追加
    foreach(var track in listTrack)
    {
        peerConnection.AddTrack(track);
    }
    

    ハードウェアエンコーダーを選択している場合、グラフィックデバイスの制約によって、同時に利用可能なトラック数が制限される場合があります。一般的に NVIDIA Geforce で同時に利用可能なビデオトラック数は 2本 までです。詳しくは NVDIA Codec SDK のドキュメント を参照してください。

    ブラウザ側でトラックを同時に受信する方法については、MDN ドキュメント RTCPeerConnection.addTrack の Streamless tracks の項目を参照してください。

    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023