add hostname to broadcast variables. (#576)

This commit is contained in:
Miroslav Šedivý
2025-09-10 22:53:52 +02:00
committed by GitHub
parent e867434895
commit 5b9225f401
6 changed files with 18 additions and 7 deletions
+5
View File
@@ -3,6 +3,7 @@ package capture
import (
"errors"
"fmt"
"os"
"strings"
"github.com/rs/zerolog"
@@ -80,6 +81,10 @@ func New(desktop types.DesktopManager, config *config.Capture) *CaptureManagerCt
broadcast: broadcastNew(func(url string) (string, error) {
if config.BroadcastPipeline != "" {
var pipeline = config.BroadcastPipeline
if hostname, err := os.Hostname(); err == nil {
// replace {hostname} with valid hostname
pipeline = strings.Replace(pipeline, "{hostname}", hostname, 1)
}
// replace {display} with valid display
pipeline = strings.Replace(pipeline, "{display}", config.Display, 1)
// replace {device} with valid device
+1 -1
View File
@@ -298,7 +298,7 @@ func (Capture) InitV2(cmd *cobra.Command) error {
// broadcast
//
cmd.PersistentFlags().String("broadcast_pipeline", "", "V2: custom gst pipeline used for broadcasting, strings {url} {device} {display} will be replaced")
cmd.PersistentFlags().String("broadcast_pipeline", "", "V2: custom gst pipeline used for broadcasting, strings {hostname} {url} {device} {display} will be replaced")
if err := viper.BindPFlag("broadcast_pipeline", cmd.PersistentFlags().Lookup("broadcast_pipeline")); err != nil {
return err
}
+9 -3
View File
@@ -3,6 +3,7 @@ package config
import (
"fmt"
"os"
"strings"
"github.com/m1k1o/neko/server/pkg/gst"
@@ -40,12 +41,17 @@ func NewBroadcastPipeline(device string, display string, pipelineSrc string, url
var pipelineStr string
if pipelineSrc != "" {
pipelineStr = pipelineSrc
// replace {hostname} with valid hostname
if hostname, err := os.Hostname(); err == nil {
pipelineStr = strings.ReplaceAll(pipelineStr, "{hostname}", hostname)
}
// replace RTMP url
pipelineStr = strings.Replace(pipelineSrc, "{url}", url, -1)
pipelineStr = strings.ReplaceAll(pipelineStr, "{url}", url)
// replace audio device
pipelineStr = strings.Replace(pipelineStr, "{device}", device, -1)
pipelineStr = strings.ReplaceAll(pipelineStr, "{device}", device)
// replace display
pipelineStr = strings.Replace(pipelineStr, "{display}", display, -1)
pipelineStr = strings.ReplaceAll(pipelineStr, "{display}", display)
} else {
pipelineStr = fmt.Sprintf("flvmux name=mux ! rtmpsink location='%s live=1' %s audio/x-raw,channels=2 ! audioconvert ! voaacenc ! mux. %s x264enc bframes=0 key-int-max=60 byte-stream=true tune=zerolatency speed-preset=veryfast ! mux.", url, audio, video)
}