Stop rtmp from reaching back into core (#290)

* Stop rtmp from reaching back into core.

* Un-export since these functions no longer need to be public
This commit is contained in:
Gabe Kangas 2020-10-29 14:09:28 -07:00 committed by GitHub
parent 72918a62d8
commit 3963568951
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 14 deletions

View file

@ -11,6 +11,7 @@ import (
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core/chat"
"github.com/owncast/owncast/core/ffmpeg"
"github.com/owncast/owncast/core/rtmp"
"github.com/owncast/owncast/models"
"github.com/owncast/owncast/utils"
"github.com/owncast/owncast/yp"
@ -61,6 +62,9 @@ func Start() error {
chat.Setup(ChatListenerImpl{})
// start the rtmp server
go rtmp.Start(setStreamAsConnected, setBroadcaster)
return nil
}

View file

@ -4,7 +4,6 @@ import (
"time"
"github.com/nareix/joy5/format/flv/flvio"
"github.com/owncast/owncast/core"
"github.com/owncast/owncast/models"
log "github.com/sirupsen/logrus"
)
@ -31,5 +30,5 @@ func setCurrentBroadcasterInfo(t flvio.Tag, remoteAddr string) {
},
}
core.SetBroadcaster(broadcaster)
_setBroadcaster(broadcaster)
}

View file

@ -16,7 +16,7 @@ import (
"github.com/nareix/joy5/format/rtmp"
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core"
"github.com/owncast/owncast/models"
"github.com/owncast/owncast/utils"
)
@ -27,8 +27,14 @@ var (
var _pipe *os.File
var _rtmpConnection net.Conn
var _setStreamAsConnected func()
var _setBroadcaster func(models.Broadcaster)
//Start starts the rtmp service, listening on port 1935
func Start() {
func Start(setStreamAsConnected func(), setBroadcaster func(models.Broadcaster)) {
_setStreamAsConnected = setStreamAsConnected
_setBroadcaster = setBroadcaster
port := 1935
s := rtmp.NewServer()
var lis net.Listener
@ -87,7 +93,7 @@ func HandleConn(c *rtmp.Conn, nc net.Conn) {
syscall.Mkfifo(pipePath, 0666)
_hasInboundRTMPConnection = true
core.SetStreamAsConnected()
_setStreamAsConnected()
_rtmpConnection = nc
f, err := os.OpenFile(pipePath, os.O_RDWR, os.ModeNamedPipe)
@ -129,6 +135,6 @@ func Disconnect() {
return
}
log.Infoln("Inbound stream disconnect requested.")
log.Traceln("Inbound stream disconnect requested.")
handleDisconnect(_rtmpConnection)
}

View file

@ -20,8 +20,8 @@ func GetStatus() models.Status {
}
}
// SetBroadcaster will store the current inbound broadcasting details
func SetBroadcaster(broadcaster models.Broadcaster) {
// setBroadcaster will store the current inbound broadcasting details
func setBroadcaster(broadcaster models.Broadcaster) {
_broadcaster = &broadcaster
}

View file

@ -11,6 +11,7 @@ import (
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core/ffmpeg"
"github.com/owncast/owncast/core/rtmp"
"github.com/owncast/owncast/utils"
"github.com/grafov/m3u8"
@ -22,8 +23,8 @@ var _offlineCleanupTimer *time.Timer
// While a stream takes place cleanup old HLS content every N min.
var _onlineCleanupTicker *time.Ticker
//SetStreamAsConnected sets the stream as connected
func SetStreamAsConnected() {
//setStreamAsConnected sets the stream as connected
func setStreamAsConnected() {
_stats.StreamConnected = true
_stats.LastConnectTime = utils.NullTime{time.Now(), true}
_stats.LastDisconnectTime = utils.NullTime{time.Now(), false}
@ -62,6 +63,8 @@ func SetStreamAsDisconnected() {
offlineFilePath := "static/" + offlineFilename
ffmpeg.StopThumbnailGenerator()
rtmp.Disconnect()
if _yp != nil {
_yp.Stop()
}

View file

@ -10,16 +10,12 @@ import (
"github.com/owncast/owncast/controllers"
"github.com/owncast/owncast/controllers/admin"
"github.com/owncast/owncast/core/chat"
"github.com/owncast/owncast/core/rtmp"
"github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/yp"
)
//Start starts the router for the http, ws, and rtmp
func Start() error {
// start the rtmp server
go rtmp.Start()
// static files
http.HandleFunc("/", controllers.IndexHandler)