Code Monkey home page Code Monkey logo

klakspout's Introduction

KlakSpout

gif gif

KlakSpout is a Unity plugin that allows Unity to send/receive video streams using the Spout system.

System requirements

  • Unity 2020.3 or later
  • Windows system with DirectX 11/12 support

Currently, KlakSpout only supports Direct3D 11 and 12. You can't use other graphics APIs like OpenGL or Vulkan.

How to install

This package uses the scoped registry feature to resolve package dependencies. Please add the following sections to the manifest file (Packages/manifest.json).

To the scopedRegistries section:

{
  "name": "Keijiro",
  "url": "https://registry.npmjs.com",
  "scopes": [ "jp.keijiro" ]
}

To the dependencies section:

"jp.keijiro.klak.spout": "2.0.3"

After changes, the manifest file should look like below:

{
  "scopedRegistries": [
    {
      "name": "Keijiro",
      "url": "https://registry.npmjs.com",
      "scopes": [ "jp.keijiro" ]
    }
  ],
  "dependencies": {
    "jp.keijiro.klak.spout": "2.0.3",
...

Spout Sender component

Sender

You can send a video stream using the Spout Sender component. There are three capture methods available:

  • Game View: Captures the content of the Game View.
  • Camera: Captures a specified camera.
  • Texture: Captures a 2D texture or a Render Texture.

Note that the Camera capture method is only available on URP and HDRP -- You can't use it on the built-in render pipeline.

The KeepAlpha property controls if it keeps or clears the content of the alpha channel. Note that you have to enable alpha output when using HDRP. Also note that you have to use the Texture capture method to enable alpha output on URP.

Spout Receiver component

Receiver

You can receive a video stream using the Spout Receiver component. It stores received frames to the Target Texture. It also overrides a material property specified in the Target Renderer.

You also can refer to the received texture via the SpoutReceiver.receivedTexture property.

Scripting interface

You can enumerate available Spout senders using the SpoutManager class. Please check the SourceSelector example for further usage.

You can dynamically create a Spout sender/receiver, but you must give the SpoutResources asset (which holds references to the package assets) after instantiation. Please see the benchmark examples for detailed steps.

Frequently asked questions

What's the difference between NDI and Spout?

  • NDI: Video-over-IP codec/protocol
  • Spout: Interprocess GPU memory sharing on DirectX

NDI requires CPU/memory/network load, but it's greatly versatile.

Spout doesn't produce any CPU load, but its range of application is limited.

If you're trying to share videos between applications running on a single Windows PC, Spout would be a better solution.

klakspout's People

Contributors

keijiro avatar ohmnivore avatar comoc avatar kant avatar rself avatar thriftysnail avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.