Browse Source

new option streamDeadAfter

pull/31/head v0.8.7
aler9 5 years ago
parent
commit
f01bb9685f
  1. 4
      conf.go
  2. 2
      conf.yml
  3. 5
      server-client.go
  4. 5
      streamer.go

4
conf.go

@ -34,6 +34,7 @@ type conf struct { @@ -34,6 +34,7 @@ type conf struct {
PostScript string `yaml:"postScript"`
ReadTimeout time.Duration `yaml:"readTimeout"`
WriteTimeout time.Duration `yaml:"writeTimeout"`
StreamDeadAfter time.Duration `yaml:"streamDeadAfter"`
AuthMethods []string `yaml:"authMethods"`
authMethodsParsed []gortsplib.AuthMethod
Pprof bool `yaml:"pprof"`
@ -120,6 +121,9 @@ func loadConf(fpath string, stdin io.Reader) (*conf, error) { @@ -120,6 +121,9 @@ func loadConf(fpath string, stdin io.Reader) (*conf, error) {
if conf.WriteTimeout == 0 {
conf.WriteTimeout = 5 * time.Second
}
if conf.StreamDeadAfter == 0 {
conf.StreamDeadAfter = 15 * time.Second
}
if len(conf.AuthMethods) == 0 {
conf.AuthMethods = []string{"basic", "digest"}

2
conf.yml

@ -15,6 +15,8 @@ postScript: @@ -15,6 +15,8 @@ postScript:
readTimeout: 5s
# timeout of write operations
writeTimeout: 5s
# time after which a stream is considered dead
streamDeadAfter: 15s
# supported authentication methods
authMethods: [basic, digest]
# enable pprof on port 9999 to monitor performance

5
server-client.go

@ -15,7 +15,6 @@ import ( @@ -15,7 +15,6 @@ import (
const (
_CLIENT_CHECK_STREAM_INTERVAL = 5 * time.Second
_CLIENT_STREAM_DEAD_AFTER = 15 * time.Second
_CLIENT_RECEIVER_REPORT_INTERVAL = 10 * time.Second
)
@ -332,7 +331,7 @@ func (c *serverClient) runRecord() bool { @@ -332,7 +331,7 @@ func (c *serverClient) runRecord() bool {
case <-checkStreamTicker.C:
for trackId := range c.streamTracks {
if time.Since(c.rtcpReceivers[trackId].lastFrameTime()) >= _CLIENT_STREAM_DEAD_AFTER {
if time.Since(c.rtcpReceivers[trackId].lastFrameTime()) >= c.p.conf.StreamDeadAfter {
c.log("ERR: stream is dead")
c.conn.NetConn().Close()
<-readDone
@ -388,7 +387,7 @@ func (c *serverClient) runRecord() bool { @@ -388,7 +387,7 @@ func (c *serverClient) runRecord() bool {
case <-checkStreamTicker.C:
for trackId := range c.streamTracks {
if time.Since(c.rtcpReceivers[trackId].lastFrameTime()) >= _CLIENT_STREAM_DEAD_AFTER {
if time.Since(c.rtcpReceivers[trackId].lastFrameTime()) >= c.p.conf.StreamDeadAfter {
c.log("ERR: stream is dead")
c.conn.NetConn().Close()
<-readDone

5
streamer.go

@ -16,7 +16,6 @@ import ( @@ -16,7 +16,6 @@ import (
const (
_STREAMER_RETRY_INTERVAL = 5 * time.Second
_STREAMER_CHECK_STREAM_INTERVAL = 5 * time.Second
_STREAMER_STREAM_DEAD_AFTER = 15 * time.Second
_STREAMER_KEEPALIVE_INTERVAL = 60 * time.Second
_STREAMER_RECEIVER_REPORT_INTERVAL = 10 * time.Second
)
@ -431,7 +430,7 @@ outer: @@ -431,7 +430,7 @@ outer:
case <-checkStreamTicker.C:
for trackId := range s.clientSdpParsed.Medias {
if time.Since(s.rtcpReceivers[trackId].lastFrameTime()) >= _STREAMER_STREAM_DEAD_AFTER {
if time.Since(s.rtcpReceivers[trackId].lastFrameTime()) >= s.p.conf.StreamDeadAfter {
s.log("ERR: stream is dead")
ret = true
break outer
@ -634,7 +633,7 @@ outer2: @@ -634,7 +633,7 @@ outer2:
case <-checkStreamTicker.C:
for trackId := range s.clientSdpParsed.Medias {
if time.Since(s.rtcpReceivers[trackId].lastFrameTime()) >= _STREAMER_STREAM_DEAD_AFTER {
if time.Since(s.rtcpReceivers[trackId].lastFrameTime()) >= s.p.conf.StreamDeadAfter {
s.log("ERR: stream is dead")
ret = true
break outer2

Loading…
Cancel
Save