summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Muehlhaeuser <muesli@gmail.com>2021-12-17 03:35:42 +0100
committerChristian Muehlhaeuser <muesli@gmail.com>2021-12-17 10:08:40 +0100
commit912165f2460cfa1f216c109c37a07beb3a3efe5e (patch)
treee19ca161b8b4458f4d0116ae22c4b86e56c87b8a
parentb289d720e094b9af7eca89b0ad36eb2821711b1e (diff)
Add support for virtual camerav0.4.0
This adds the following commands: obs-cli virtualcam start obs-cli virtualcam stop obs-cli virtualcam toggle obs-cli virtualcam status Fixes #20.
-rw-r--r--README.md16
-rw-r--r--virtualcam.go87
2 files changed, 103 insertions, 0 deletions
diff --git a/README.md b/README.md
index 016671f..e2739df 100644
--- a/README.md
+++ b/README.md
@@ -216,3 +216,19 @@ Switch to a profile:
```
obs-cli profile set <profile>
```
+
+### Virtual Camera
+
+Change the virtual camera state:
+
+```
+obs-cli virtualcam start
+obs-cli virtualcam stop
+obs-cli virtualcam toggle
+```
+
+Display virtual camera status:
+
+```
+obs-cli virtualcam status
+```
diff --git a/virtualcam.go b/virtualcam.go
new file mode 100644
index 0000000..ee5f02d
--- /dev/null
+++ b/virtualcam.go
@@ -0,0 +1,87 @@
+package main
+
+import (
+ "fmt"
+ "strconv"
+
+ "github.com/spf13/cobra"
+)
+
+var (
+ virtualCamCmd = &cobra.Command{
+ Use: "virtualcam",
+ Short: "manage virtual camera",
+ Long: `The virtualcam command manages the virtual camera`,
+ RunE: nil,
+ }
+
+ startStopVirtualCamCmd = &cobra.Command{
+ Use: "toggle",
+ Short: "Toggle virtual camera status",
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return starStopVirtualCam()
+ },
+ }
+
+ startVirtualCamCmd = &cobra.Command{
+ Use: "start",
+ Short: "Starts virtual camera",
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return startVirtualCam()
+ },
+ }
+
+ stopVirtualCamCmd = &cobra.Command{
+ Use: "stop",
+ Short: "Stops virtual camera",
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return stopVirtualCam()
+ },
+ }
+
+ virtualCamStatusCmd = &cobra.Command{
+ Use: "status",
+ Short: "Reports virtual camera status",
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return virtualCamStatus()
+ },
+ }
+)
+
+func starStopVirtualCam() error {
+ _, err := client.VirtualCam.StartStopVirtualCam()
+ return err
+}
+
+func startVirtualCam() error {
+ _, err := client.VirtualCam.StartVirtualCam()
+ return err
+}
+
+func stopVirtualCam() error {
+ _, err := client.VirtualCam.StopVirtualCam()
+ return err
+}
+
+func virtualCamStatus() error {
+ r, err := client.VirtualCam.GetVirtualCamStatus()
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("Virtual camera: %s\n", strconv.FormatBool(*r.IsVirtualCam))
+ if !*r.IsVirtualCam {
+ return nil
+ }
+
+ fmt.Printf("Timecode: %s\n", r.VirtualCamTimecode)
+ return nil
+}
+
+func init() {
+ virtualCamCmd.AddCommand(startStopVirtualCamCmd)
+ virtualCamCmd.AddCommand(startVirtualCamCmd)
+ virtualCamCmd.AddCommand(stopVirtualCamCmd)
+ virtualCamCmd.AddCommand(virtualCamStatusCmd)
+ rootCmd.AddCommand(virtualCamCmd)
+}