|
|
|
@ -1,6 +1,7 @@
@@ -1,6 +1,7 @@
|
|
|
|
|
package main |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"crypto/tls" |
|
|
|
|
"fmt" |
|
|
|
|
"net" |
|
|
|
|
"path" |
|
|
|
@ -40,10 +41,31 @@ func startHls() *hls.Server {
@@ -40,10 +41,31 @@ func startHls() *hls.Server {
|
|
|
|
|
|
|
|
|
|
func startRtmp(stream *rtmp.RtmpStream, hlsServer *hls.Server) { |
|
|
|
|
rtmpAddr := configure.Config.GetString("rtmp_addr") |
|
|
|
|
isRtmps := configure.Config.GetBool("enable_rtmps") |
|
|
|
|
|
|
|
|
|
var rtmpListen net.Listener |
|
|
|
|
if isRtmps { |
|
|
|
|
certPath := configure.Config.GetString("rtmps_cert") |
|
|
|
|
keyPath := configure.Config.GetString("rtmps_key") |
|
|
|
|
log.Info(certPath) |
|
|
|
|
log.Info(keyPath) |
|
|
|
|
cert, err := tls.LoadX509KeyPair(certPath, keyPath) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Fatal(err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
rtmpListen, err := net.Listen("tcp", rtmpAddr) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Fatal(err) |
|
|
|
|
rtmpListen, err = tls.Listen("tcp", rtmpAddr, &tls.Config{ |
|
|
|
|
Certificates: []tls.Certificate{cert}, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Fatal(err) |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
var err error |
|
|
|
|
rtmpListen, err = net.Listen("tcp", rtmpAddr) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Fatal(err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var rtmpServer *rtmp.Server |
|
|
|
@ -61,7 +83,11 @@ func startRtmp(stream *rtmp.RtmpStream, hlsServer *hls.Server) {
@@ -61,7 +83,11 @@ func startRtmp(stream *rtmp.RtmpStream, hlsServer *hls.Server) {
|
|
|
|
|
log.Error("RTMP server panic: ", r) |
|
|
|
|
} |
|
|
|
|
}() |
|
|
|
|
log.Info("RTMP Listen On ", rtmpAddr) |
|
|
|
|
if isRtmps { |
|
|
|
|
log.Info("RTMPS Listen On ", rtmpAddr) |
|
|
|
|
} else { |
|
|
|
|
log.Info("RTMP Listen On ", rtmpAddr) |
|
|
|
|
} |
|
|
|
|
rtmpServer.Serve(rtmpListen) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|