1
0
mirror of https://gitlab.crans.org/nounous/ghostream.git synced 2024-12-22 20:52:20 +00:00

Configure and test transcoder

This commit is contained in:
Alexandre Iooss 2020-10-18 11:06:54 +02:00
parent 23b6eeaa05
commit 09a3422d06
No known key found for this signature in database
GPG Key ID: 6C79278F3FCDCC02
7 changed files with 28 additions and 13 deletions

View File

@ -82,16 +82,24 @@ telnet:
# #
#listenAddress: :8023 #listenAddress: :8023
# Size is in characters. It is recommended to keep a 16x9 format. ## Transcoders configuration ##
# transcoder:
#width: 80 text:
#height: 45 # By default the text transcoder is disabled.
# You need to enable it to use telnet output.
#
#enabled: false
# Time in milliseconds between two images. # Size is in characters. It is recommended to keep a 16x9 format.
# By default 50 ms, so 20 FPS. #
# Displaying text takes time. #width: 80
# #height: 45
#delay: 50
# Time in milliseconds between two images.
# By default 50 ms, so 20 FPS.
# Displaying text takes time.
#
#delay: 50
## Web server ## ## Web server ##
# The web server serves a WebRTC player. # The web server serves a WebRTC player.

View File

@ -25,6 +25,7 @@ type Config struct {
Monitoring monitoring.Options Monitoring monitoring.Options
Srt srt.Options Srt srt.Options
Telnet telnet.Options Telnet telnet.Options
Transcoder transcoder.Options
Web web.Options Web web.Options
WebRTC webrtc.Options WebRTC webrtc.Options
} }

View File

@ -50,7 +50,7 @@ func main() {
// Start routines // Start routines
go transcoder.Init(streams, &cfg.Transcoder) go transcoder.Init(streams, &cfg.Transcoder)
go forwarding.Serve(streams, &cfg.Forwarding) go forwarding.Serve(streams, cfg.Forwarding)
go monitoring.Serve(&cfg.Monitoring) go monitoring.Serve(&cfg.Monitoring)
go srt.Serve(streams, authBackend, &cfg.Srt) go srt.Serve(streams, authBackend, &cfg.Srt)
go telnet.Serve(streams, &cfg.Telnet) go telnet.Serve(streams, &cfg.Telnet)

View File

@ -1,7 +1,9 @@
// Package stream defines a structure to communication between inputs and outputs // Package stream defines a structure to communication between inputs and outputs
package stream package stream
import "sync" import (
"sync"
)
// Stream makes packages able to subscribe to an incoming stream // Stream makes packages able to subscribe to an incoming stream
type Stream struct { type Stream struct {
@ -21,7 +23,7 @@ type Stream struct {
// New creates a new stream. // New creates a new stream.
func New() *Stream { func New() *Stream {
s := &Stream{} s := &Stream{}
broadcast := make(chan []byte, 64) broadcast := make(chan []byte, 1024)
s.Broadcast = broadcast s.Broadcast = broadcast
s.outputs = make(map[chan []byte]struct{}) s.outputs = make(map[chan []byte]struct{})
s.nbClients = 0 s.nbClients = 0

View File

@ -65,7 +65,7 @@ func handleViewer(s *srtgo.SrtSocket, streams map[string]*stream.Stream, name st
} }
// Register new output // Register new output
c := make(chan []byte, 128) c := make(chan []byte, 1024)
st.Register(c) st.Register(c)
st.IncrementClientCount() st.IncrementClientCount()

View File

@ -69,6 +69,9 @@ func Serve(streams map[string]*stream.Stream, authBackend auth.Backend, cfg *Opt
continue continue
} }
// FIXME: Flush socket
// Without this, the SRT buffer might get full before reading it
// streamid can be "name:password" for streamer or "name" for viewer // streamid can be "name:password" for streamer or "name" for viewer
streamID, err := s.GetSockOptString(C.SRTO_STREAMID) streamID, err := s.GetSockOptString(C.SRTO_STREAMID)
if err != nil { if err != nil {

View File

@ -0,0 +1 @@
package transcoder