libobs wrapper written in Go.
go get github.com/pidgy/obs
This library is developed against libobs-windows64-release-27.5.32.
obs_test.go has examples of the functionality implemented in this library.
err := core.Startup(locale.EnUS, "", profiler.NULL) if err != nil { panic(err) } defer core.Shutdown()
m, err := audio.MonitoringDevice() if err != nil { panic(err) } if m.Name != "" || m.ID != "" { panic("expected unset monitoring device") } d, err := audio.EnumMonitoringDevices() if err != nil { panic(err) } for _, m := range d { ok, err := m.Set() if err != nil { panic(err) } if !ok { panic("failed to set audio monitoring device") } }
video, err := data.New() if err != nil { panic(err) } err = video.SetString("capture_mode", "window") if err != nil { panic(err) } err = video.SetString("window", "foo:bar:foobar.exe") if err != nil { panic(err) } s, err := source.New("game_capture", "gameplay", video, 0) if err != nil { panic(err) } err = s.Release() if err != nil { panic(err) }
v, err := dshow.NewDevice(deviceIndex) if err != nil { panic(err) } err = core.Startup(locale.EnUS, "", profiler.Null) if err != nil { panic(err) } defer can.Panic(core.Shutdown) mod, err := module.New("win-dshow") if err != nil { panic(err) } dsc, err := mod.Description() if err != nil { panic(err) } println("description:", dsc) // Prints "description: Windows DirectShow source/encoder". settings, err := data.New() if err != nil { panic(err) } defer can.Release(settings) config := &dshow.Settings{ Active: true, Name: v.Name, VideoDeviceID: v.ID, AudioOutputMode: dshow.DirectSound, HWDecode: true, Buffering: dshow.BufferingOn, DeactivateWhenNotShowing: false, } err = settings.Set(config) if err != nil { panic(err) } src, err := source.New("dshow_input", "UniteHUD Capture", settings) if err != nil { panic(err) } defer can.Release(src) println("blocking... (Ctrl+C to exit)") block.For(time.Minute)