Compare commits

...

3 Commits

Author SHA1 Message Date
langhuihui
2e9cf9a4ca 重连机制修复 2020-07-11 21:54:59 +08:00
langhuihui
67da93d8e2 增加重连时的判断 2020-07-09 22:04:00 +08:00
unknown
cb733b368f 增加重连功能 2020-07-09 20:06:35 +08:00
2 changed files with 27 additions and 5 deletions

View File

@@ -7,8 +7,6 @@ import (
"encoding/binary"
"errors"
"fmt"
. "github.com/Monibuca/engine/v2"
. "github.com/Monibuca/plugin-rtp"
"io"
"net"
"net/url"
@@ -16,6 +14,9 @@ import (
"strconv"
"strings"
"time"
. "github.com/Monibuca/engine/v2"
. "github.com/Monibuca/plugin-rtp"
)
// PullStream 从外部拉流
@@ -229,7 +230,11 @@ func (client *RTSP) requestStream() (err error) {
if audioInfo, ok := client.SDPMap["audio"]; ok {
client.AControl = audioInfo.Control
client.ACodec = audioInfo.Codec
client.WriteASC(audioInfo.Config)
if len(audioInfo.Config) < 2 {
Printf("Setup audio err codec not support: %s", client.ACodec)
} else {
client.WriteASC(audioInfo.Config)
}
var _url = ""
if strings.Index(strings.ToLower(client.AControl), "rtsp://") == 0 {
_url = client.AControl
@@ -272,7 +277,20 @@ func (client *RTSP) requestStream() (err error) {
func (client *RTSP) startStream() {
//startTime := time.Now()
//loggerTime := time.Now().Add(-10 * time.Second)
defer client.Stop()
defer func() {
if client.Err() == nil && config.Reconnect {
Printf("reconnecting:%s", client.URL)
client.RTSPClientInfo = RTSPClientInfo{}
if err := client.requestStream(); err != nil {
Println(err)
client.Stop()
return
}
go client.startStream()
} else {
client.Stop()
}
}()
for client.Err() == nil {
//if client.OptionIntervalMillis > 0 {
// if time.Since(startTime) > time.Duration(client.OptionIntervalMillis)*time.Millisecond {
@@ -314,6 +332,9 @@ func (client *RTSP) startStream() {
pack = &RTPPack{
Type: RTP_TYPE_AUDIO,
}
if client.ACodec == "" {
continue
}
case client.aRTPControlChannel:
pack = &RTPPack{
Type: RTP_TYPE_AUDIOCONTROL,

View File

@@ -22,7 +22,8 @@ var config = struct {
AutoPull bool
RemoteAddr string
Timeout int
}{":554", false, "rtsp://localhost/${streamPath}", 0}
Reconnect bool
}{":554", false, "rtsp://localhost/${streamPath}", 0,false}
func init() {
InstallPlugin(&PluginConfig{