Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/keijiro/klakspout
Spout plugin for Unity
https://github.com/keijiro/klakspout
plugin spout unity unity3d
Last synced: about 1 hour ago
JSON representation
Spout plugin for Unity
- Host: GitHub
- URL: https://github.com/keijiro/klakspout
- Owner: keijiro
- License: unlicense
- Created: 2017-04-10T10:50:50.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2023-12-16T22:09:15.000Z (about 1 year ago)
- Last Synced: 2025-01-11T03:12:48.361Z (about 1 hour ago)
- Topics: plugin, spout, unity, unity3d
- Language: C++
- Homepage:
- Size: 3.3 MB
- Stars: 688
- Watchers: 32
- Forks: 105
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
KlakSpout
=========![gif](https://user-images.githubusercontent.com/343936/124232423-993f6c00-db4c-11eb-80d3-4c660a2025d9.gif)
![gif](https://user-images.githubusercontent.com/343936/124217164-c4b55d00-db32-11eb-88f1-735a04bfb235.gif)**KlakSpout** is a Unity plugin that allows Unity to send/receive video streams
using the [Spout] system.[Spout]: http://spout.zeal.co/
System requirements
-------------------- Unity 2020.3 or later
- Windows system with DirectX 11/12 supportCurrently, 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).[scoped registry]: https://docs.unity3d.com/Manual/upm-scoped.html
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](https://user-images.githubusercontent.com/343936/124219895-e2d18c00-db37-11eb-8f96-0829bb757968.png)
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.[alpha output]:
https://docs.unity3d.com/Packages/[email protected]/manual/Alpha-Output.htmlSpout Receiver component
------------------------![Receiver](https://user-images.githubusercontent.com/343936/124220011-1f9d8300-db38-11eb-985a-2f5bebe4c058.png)
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.[SourceSelector example]:
https://github.com/keijiro/KlakSpout/blob/main/Assets/Script/SourceSelector.csYou 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.[benchmark examples]:
https://github.com/keijiro/KlakSpout/blob/main/Assets/Script/SenderBenchmark.csFrequently asked questions
--------------------------### What's the difference between NDI and Spout?
- NDI: Video-over-IP codec/protocol
- Spout: Interprocess GPU memory sharing on DirectXNDI 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.