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

View file

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

View file

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

View file

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

View file

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