mirror of
https://github.com/onyx-and-iris/voicemeeter.git
synced 2024-11-15 17:40:51 +00:00
obs example now reads conn info from toml.
vm, obs connect logic moved into separate functions. README added for obs example.
This commit is contained in:
parent
2533f1c162
commit
c05bf500ee
19
examples/obs/README.md
Normal file
19
examples/obs/README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [OBS Studio](https://obsproject.com/)
|
||||||
|
- [GOOBS Go Client for Websocket v5](https://github.com/andreykaipov/goobs)
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
A simple demonstration showing how to sync OBS scene switches to Voicemeeter states. The script assumes you have connection info saved in
|
||||||
|
a config file named `config.toml` placed next to `main.go`. It also assumes you have scenes named `START` `BRB` `END` and `LIVE`.
|
||||||
|
|
||||||
|
A valid `config.toml` file might look like this:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[connection]
|
||||||
|
Host="localhost"
|
||||||
|
Port=4455
|
||||||
|
Password="mystrongpass"
|
||||||
|
|
||||||
|
```
|
@ -3,6 +3,7 @@ module main
|
|||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/BurntSushi/toml v1.2.0
|
||||||
github.com/andreykaipov/goobs v0.10.0
|
github.com/andreykaipov/goobs v0.10.0
|
||||||
github.com/onyx-and-iris/voicemeeter-api-go v1.7.0
|
github.com/onyx-and-iris/voicemeeter-api-go v1.7.0
|
||||||
)
|
)
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
||||||
|
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/andreykaipov/goobs v0.10.0 h1:wa4CxbYu/NqwUmx5E4/baDqYRYEmfHwg2T23RAg3jlU=
|
github.com/andreykaipov/goobs v0.10.0 h1:wa4CxbYu/NqwUmx5E4/baDqYRYEmfHwg2T23RAg3jlU=
|
||||||
github.com/andreykaipov/goobs v0.10.0/go.mod h1:EqG73Uu/4npyhXIWWszgRelNkEeIz+d0slUT6NKWYs4=
|
github.com/andreykaipov/goobs v0.10.0/go.mod h1:EqG73Uu/4npyhXIWWszgRelNkEeIz+d0slUT6NKWYs4=
|
||||||
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
||||||
|
@ -4,11 +4,14 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/onyx-and-iris/voicemeeter-api-go"
|
"github.com/onyx-and-iris/voicemeeter-api-go"
|
||||||
|
|
||||||
"github.com/andreykaipov/goobs"
|
"github.com/andreykaipov/goobs"
|
||||||
"github.com/andreykaipov/goobs/api/events"
|
"github.com/andreykaipov/goobs/api/events"
|
||||||
|
|
||||||
|
"github.com/BurntSushi/toml"
|
||||||
)
|
)
|
||||||
|
|
||||||
func onStart(vm *voicemeeter.Remote) {
|
func onStart(vm *voicemeeter.Remote) {
|
||||||
@ -39,18 +42,13 @@ func onEnd(vm *voicemeeter.Remote) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
vm, err := voicemeeter.NewRemote("potato", 0)
|
vm, err := vmConnect()
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = vm.Login()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
defer vm.Logout()
|
defer vm.Logout()
|
||||||
|
|
||||||
obs, err := goobs.New("localhost:4455", goobs.WithPassword("mystrongpass"))
|
obs, err := obsConnect()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -79,3 +77,49 @@ func main() {
|
|||||||
|
|
||||||
time.Sleep(30 * time.Second)
|
time.Sleep(30 * time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func vmConnect() (*voicemeeter.Remote, error) {
|
||||||
|
vm, err := voicemeeter.NewRemote("potato", 0)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = vm.Login()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return vm, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func obsConnect() (*goobs.Client, error) {
|
||||||
|
type (
|
||||||
|
connection struct {
|
||||||
|
Host string
|
||||||
|
Port int
|
||||||
|
Password string
|
||||||
|
}
|
||||||
|
|
||||||
|
config struct {
|
||||||
|
Connection map[string]connection
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
f := "config.toml"
|
||||||
|
if _, err := os.Stat(f); err != nil {
|
||||||
|
f = "./config.toml"
|
||||||
|
}
|
||||||
|
|
||||||
|
var c config
|
||||||
|
_, err := toml.DecodeFile(f, &c.Connection)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
conn := c.Connection["connection"]
|
||||||
|
|
||||||
|
obs, err := goobs.New(fmt.Sprintf("%s:%d", conn.Host, conn.Port), goobs.WithPassword(conn.Password))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obs, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user