mirror of
https://github.com/m1k1o/neko.git
synced 2025-08-03 00:39:56 +02:00
Various fixes & improvement tweaks
This commit is contained in:
parent
acc3c286a1
commit
d298d0c97b
9 changed files with 53 additions and 9 deletions
|
@ -10,6 +10,13 @@ import (
|
|||
"m1k1o/neko/internal/types"
|
||||
)
|
||||
|
||||
type PipelineSignal int
|
||||
|
||||
const (
|
||||
PL_STOP PipelineSignal = 0x00
|
||||
PL_START = 0x01
|
||||
)
|
||||
|
||||
type BroacastManagerCtx struct {
|
||||
logger zerolog.Logger
|
||||
mu sync.Mutex
|
||||
|
@ -18,6 +25,7 @@ type BroacastManagerCtx struct {
|
|||
pipelineMu sync.Mutex
|
||||
pipelineFn func(url string) (string, error)
|
||||
pipelineRestart chan bool
|
||||
pipelineSignal chan PipelineSignal
|
||||
|
||||
url string
|
||||
started bool
|
||||
|
@ -77,6 +85,10 @@ func (manager *BroacastManagerCtx) GetRestart() chan bool {
|
|||
return manager.pipelineRestart
|
||||
}
|
||||
|
||||
func (manager *BroacastManagerCtx) GetSignal() chan PipelineSignal {
|
||||
return manager.pipelineSignal
|
||||
}
|
||||
|
||||
func (manager *BroacastManagerCtx) Url() string {
|
||||
manager.mu.Lock()
|
||||
defer manager.mu.Unlock()
|
||||
|
|
|
@ -72,6 +72,26 @@ func (manager *CaptureManagerCtx) Start() {
|
|||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
for {
|
||||
signal, ok := <-manager.broadcast.GetSignal()
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
switch signal {
|
||||
case PL_START:
|
||||
if !manager.broadcast.Started() {
|
||||
manager.broadcast.Start(manager.broadcast.Url())
|
||||
}
|
||||
case PL_STOP:
|
||||
if manager.broadcast.Started() {
|
||||
manager.broadcast.Stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
for {
|
||||
before, ok := <-manager.desktop.GetScreenSizeChangeChannel()
|
||||
|
|
|
@ -47,8 +47,9 @@ func NewBroadcastPipeline(device string, display string, pipelineSrc string, url
|
|||
// replace display
|
||||
pipelineStr = strings.Replace(pipelineStr, "{display}", display, -1)
|
||||
} else {
|
||||
birate := 8000
|
||||
birate := 5000
|
||||
pipelineStr = fmt.Sprintf("flvmux name=mux ! rtmpsink location='%s live=1 subscribe=stream-neko buffer=1200000' %s audio/x-raw,channels=2 ! audioconvert ! voaacenc ! mux. %s video/x-raw,format=NV12 ! nvh264enc name=encoder rc-lookahead=20 preset=2 gop-size=120 temporal-aq=true bitrate=%d vbv-buffer-size=%d rc-mode=cbr bframes=0 ! h264parse config-interval=-1 ! mux.", url, audio, video, birate, birate)
|
||||
// pipelineStr = fmt.Sprintf("flvmux name=mux ! rtmpsink location='%s live=1 subscribe=stream-neko buffer=1200000' %s audio/x-raw,channels=2 ! audioconvert ! voaacenc ! mux. %s video/x-raw,format=NV12 ! openh264enc name=encoder bitrate=%d vbv-buffer-size=%d ! h264parse config-interval=-1 ! mux.", url, audio, video, birate, birate)
|
||||
}
|
||||
|
||||
return pipelineStr, nil
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
)
|
||||
|
||||
func (ws *WebSocketHandler) connectUpstream() {
|
||||
upstreamURL := "ws://168.138.8.216:4001/?type=host"
|
||||
upstreamURL := "wss://cave.thuan.au/live-control/?type=host"
|
||||
retryTicker := time.NewTicker(5 * time.Second)
|
||||
|
||||
for {
|
||||
|
@ -19,7 +19,7 @@ func (ws *WebSocketHandler) connectUpstream() {
|
|||
case <-ws.shutdown:
|
||||
return
|
||||
case <-retryTicker.C:
|
||||
ws.logger.Debug().Msgf("connecting to upstream: %s", upstreamURL)
|
||||
ws.logger.Info().Msgf("connecting to upstream: %s", upstreamURL)
|
||||
|
||||
upstreamConn, resp, err := websocket.DefaultDialer.Dial(upstreamURL, nil)
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue