2020-05-24 02:57:49 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io"
|
|
|
|
"net"
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
"github.com/yutopp/go-rtmp"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2020-05-30 03:08:33 +02:00
|
|
|
createIPFSDirectory()
|
|
|
|
|
|
|
|
resetDirectories()
|
|
|
|
touch("hls/stream.m3u8")
|
|
|
|
|
|
|
|
go monitorVideoContent("./hls/")
|
2020-05-24 02:57:49 +02:00
|
|
|
go startChatServer()
|
|
|
|
|
|
|
|
tcpAddr, err := net.ResolveTCPAddr("tcp", ":1935")
|
|
|
|
if err != nil {
|
|
|
|
log.Panicf("Failed: %+v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
listener, err := net.ListenTCP("tcp", tcpAddr)
|
|
|
|
if err != nil {
|
|
|
|
log.Panicf("Failed: %+v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
srv := rtmp.NewServer(&rtmp.ServerConfig{
|
|
|
|
OnConnect: func(conn net.Conn) (io.ReadWriteCloser, *rtmp.ConnConfig) {
|
|
|
|
l := log.StandardLogger()
|
|
|
|
//l.SetLevel(logrus.DebugLevel)
|
|
|
|
|
|
|
|
h := &Handler{}
|
|
|
|
|
|
|
|
return conn, &rtmp.ConnConfig{
|
|
|
|
Handler: h,
|
|
|
|
|
|
|
|
ControlState: rtmp.StreamControlStateConfig{
|
|
|
|
DefaultBandwidthWindowSize: 6 * 1024 * 1024 / 8,
|
|
|
|
},
|
|
|
|
|
|
|
|
Logger: l,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
})
|
|
|
|
if err := srv.Serve(listener); err != nil {
|
|
|
|
log.Panicf("Failed: %+v", err)
|
|
|
|
}
|
2020-05-30 03:08:33 +02:00
|
|
|
|
2020-05-24 02:57:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func startChatServer() {
|
|
|
|
// log.SetFlags(log.Lshortfile)
|
|
|
|
|
|
|
|
// websocket server
|
|
|
|
server := NewServer("/entry")
|
|
|
|
go server.Listen()
|
|
|
|
|
|
|
|
// static files
|
|
|
|
http.Handle("/", http.FileServer(http.Dir("webroot")))
|
|
|
|
|
|
|
|
log.Fatal(http.ListenAndServe(":8080", nil))
|
|
|
|
}
|