diff options
author | Christian Muehlhaeuser <muesli@gmail.com> | 2021-12-17 03:35:42 +0100 |
---|---|---|
committer | Christian Muehlhaeuser <muesli@gmail.com> | 2021-12-17 10:08:40 +0100 |
commit | 912165f2460cfa1f216c109c37a07beb3a3efe5e (patch) | |
tree | e19ca161b8b4458f4d0116ae22c4b86e56c87b8a | |
parent | b289d720e094b9af7eca89b0ad36eb2821711b1e (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.md | 16 | ||||
-rw-r--r-- | virtualcam.go | 87 |
2 files changed, 103 insertions, 0 deletions
@@ -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) +} |