mirror of
https://github.com/owncast/owncast.git
synced 2024-11-29 03:29:03 +03:00
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:
parent
72918a62d8
commit
3963568951
6 changed files with 22 additions and 14 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue