Spout.NET adalah Implementasi C# .NET untuk Spout2, sistem berbagi bingkai video untuk Windows.
Anda dapat menginstal Spout.NET dari NuGet.
Install-Package Spout.NET
Harap perhatikan bahwa Spout.NET
memerlukan NuGet 3.3
atau lebih tinggi (dengan kata lain, PackageReference
). Jika proyek Anda menggunakan packages.config
, harap migrasikan paket Anda ke PackageReference.
API pustaka pemetaan ini sepenuhnya konsisten dengan Spout SDK, sehingga Anda dapat merujuk ke Dokumentasi Spout SDK untuk pengembangan. Anda dapat menggunakan Kelas Marshal untuk menghindari kode yang tidak aman.
Buat proyek Konsol .NET Framework.
Targetkan ulang konfigurasi build ke x64
.
Tambahkan paket nuget berikut.
Install-Package Spout.NET
Aktifkan Allow Unsafe Code
di konfigurasi proyek.
Masukkan kode berikut ke dalam Program.cs
.
using System ;
using System . IO ;
using System . Threading ;
using OpenGL ;
using Spout . Interop ;
namespace SpoutTest
{
class Program
{
static unsafe void Main ( string [ ] args )
{
using ( DeviceContext deviceContext = DeviceContext . Create ( ) ) // Create the DeviceContext
{
IntPtr glContext = IntPtr . Zero ;
glContext = deviceContext . CreateContext ( IntPtr . Zero ) ;
deviceContext . MakeCurrent ( glContext ) ; // Make this become the primary context
SpoutSender sender = new SpoutSender ( ) ;
sender . CreateSender ( "CsSender" , 640 , 360 , 0 ) ; // Create the sender
byte [ ] data = new byte [ 640 * 360 * 4 ] ;
int i = 0 ;
fixed ( byte * pData = data ) // Get the pointer of the byte array
while ( true )
{
for ( int j = 0 ; j < 640 * 360 * 4 ; j += 4 )
{
data [ j ] = i == 0 ? byte . MaxValue : byte . MinValue ;
data [ j + 1 ] = i == 1 ? byte . MaxValue : byte . MinValue ;
data [ j + 2 ] = i == 2 ? byte . MaxValue : byte . MinValue ;
data [ j + 3 ] = byte . MaxValue ;
}
Console . WriteLine ( $ "Sending (i = { i } )" ) ;
sender . SendImage (
pData , // Pixels
640 , // Width
360 , // Height
Gl . RGBA , // GL_RGBA
true , // B Invert
0 // Host FBO
) ;
Thread . Sleep ( 1000 ) ; // Delay
if ( i < 2 ) i ++ ;
else i = 0 ;
}
}
}
}
}
MIT