mirror of
https://github.com/bluenviron/mediamtx
synced 2025-02-20 21:46:56 +00:00
fix freeze
This commit is contained in:
parent
baf7abc9a6
commit
9887abc51a
2
go.mod
2
go.mod
@ -5,7 +5,7 @@ go 1.15
|
||||
require (
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
|
||||
github.com/aler9/gortsplib v0.0.0-20201214220650-27636bc8102d
|
||||
github.com/aler9/gortsplib v0.0.0-20201215190704-e5b126007572
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/fsnotify/fsnotify v1.4.9
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||
|
4
go.sum
4
go.sum
@ -2,8 +2,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
||||
github.com/aler9/gortsplib v0.0.0-20201214220650-27636bc8102d h1:2ZoBLngSzfy/n4FawfA//Gbwu7xkIswOo7trGKtSZyU=
|
||||
github.com/aler9/gortsplib v0.0.0-20201214220650-27636bc8102d/go.mod h1:8P09VjpiPJFyfkVosyF5/TY82jNwkMN165NS/7sc32I=
|
||||
github.com/aler9/gortsplib v0.0.0-20201215190704-e5b126007572 h1:7tZCOaqiBURhVXE0xR6jNz6T7UX/LUKUKl0qsZBQwGU=
|
||||
github.com/aler9/gortsplib v0.0.0-20201215190704-e5b126007572/go.mod h1:8P09VjpiPJFyfkVosyF5/TY82jNwkMN165NS/7sc32I=
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
|
@ -113,8 +113,6 @@ type Client struct {
|
||||
streamTracks map[int]*streamTrack
|
||||
rtcpReceivers map[int]*rtcpreceiver.RtcpReceiver
|
||||
udpLastFrameTimes []*int64
|
||||
writeFrameEnable bool
|
||||
writeFrameMutex sync.Mutex
|
||||
onReadCmd *externalcmd.Cmd
|
||||
onPublishCmd *externalcmd.Cmd
|
||||
|
||||
@ -775,10 +773,17 @@ func (c *Client) run() {
|
||||
|
||||
switch c.state {
|
||||
case statePlay:
|
||||
if c.streamProtocol == gortsplib.StreamProtocolTCP {
|
||||
c.conn.EnableFrames(false)
|
||||
}
|
||||
c.stopPlay()
|
||||
c.state = statePrePlay
|
||||
|
||||
case stateRecord:
|
||||
if c.streamProtocol == gortsplib.StreamProtocolTCP {
|
||||
c.conn.EnableFrames(false)
|
||||
c.conn.EnableReadTimeout(false)
|
||||
}
|
||||
c.stopRecord()
|
||||
c.state = statePreRecord
|
||||
}
|
||||
@ -951,10 +956,6 @@ func (c *Client) checkState(allowed map[state]struct{}) error {
|
||||
}
|
||||
|
||||
func (c *Client) startPlay() {
|
||||
if c.streamProtocol == gortsplib.StreamProtocolTCP {
|
||||
c.writeFrameEnable = true
|
||||
}
|
||||
|
||||
c.state = statePlay
|
||||
c.path.OnClientPlay(c)
|
||||
|
||||
@ -973,25 +974,11 @@ func (c *Client) startPlay() {
|
||||
}
|
||||
|
||||
if c.streamProtocol == gortsplib.StreamProtocolTCP {
|
||||
c.writeFrameMutex.Lock()
|
||||
c.writeFrameEnable = true
|
||||
c.writeFrameMutex.Unlock()
|
||||
|
||||
c.conn.EnableReadFrames(true)
|
||||
c.conn.EnableReadTimeout(false)
|
||||
c.conn.EnableFrames(true)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) stopPlay() {
|
||||
if c.streamProtocol == gortsplib.StreamProtocolTCP {
|
||||
c.conn.EnableReadFrames(false)
|
||||
c.conn.EnableReadTimeout(false)
|
||||
|
||||
c.writeFrameMutex.Lock()
|
||||
c.writeFrameEnable = false
|
||||
c.writeFrameMutex.Unlock()
|
||||
}
|
||||
|
||||
if c.path.Conf().RunOnRead != "" {
|
||||
c.onReadCmd.Close()
|
||||
}
|
||||
@ -1053,7 +1040,7 @@ func (c *Client) startRecord() {
|
||||
if c.streamProtocol == gortsplib.StreamProtocolUDP {
|
||||
go c.backgroundRecordUDP()
|
||||
} else {
|
||||
c.conn.EnableReadFrames(true)
|
||||
c.conn.EnableFrames(true)
|
||||
c.conn.EnableReadTimeout(true)
|
||||
go c.backgroundRecordTCP()
|
||||
}
|
||||
@ -1068,10 +1055,6 @@ func (c *Client) stopRecord() {
|
||||
c.serverUDPRtp.RemovePublisher(c.ip(), track.rtpPort, c)
|
||||
c.serverUDPRtcp.RemovePublisher(c.ip(), track.rtcpPort, c)
|
||||
}
|
||||
|
||||
} else {
|
||||
c.conn.EnableReadFrames(false)
|
||||
c.conn.EnableReadTimeout(false)
|
||||
}
|
||||
|
||||
if c.path.Conf().RunOnPublish != "" {
|
||||
@ -1173,11 +1156,7 @@ func (c *Client) OnReaderFrame(trackID int, streamType base.StreamType, buf []by
|
||||
}
|
||||
|
||||
} else {
|
||||
c.writeFrameMutex.Lock()
|
||||
if c.writeFrameEnable {
|
||||
c.conn.WriteFrame(trackID, streamType, buf)
|
||||
}
|
||||
c.writeFrameMutex.Unlock()
|
||||
c.conn.WriteFrame(trackID, streamType, buf)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user