Code refactoring for #1450
This commit is contained in:
@@ -223,8 +223,9 @@ func parseArgs(s string) *ffmpeg.Args {
|
||||
s += "?video&audio"
|
||||
}
|
||||
s += "&source=ffmpeg:" + url.QueryEscape(source)
|
||||
// change codec not matched error level to debug
|
||||
s += "&" + string(streams.CodecNotMatchedErrorCode) + "=" + zerolog.DebugLevel.String()
|
||||
for _, v := range query["query"] {
|
||||
s += "&" + v
|
||||
}
|
||||
args.Input = inputTemplate("rtsp", s, query)
|
||||
} else if i = strings.Index(s, "?"); i > 0 {
|
||||
switch s[:i] {
|
||||
|
||||
+10
-11
@@ -147,6 +147,7 @@ func tcpHandler(conn *rtsp.Conn) {
|
||||
var closer func()
|
||||
|
||||
trace := log.Trace().Enabled()
|
||||
level := zerolog.WarnLevel
|
||||
|
||||
conn.Listen(func(msg any) {
|
||||
if trace {
|
||||
@@ -188,20 +189,18 @@ func tcpHandler(conn *rtsp.Conn) {
|
||||
conn.PacketSize = uint16(core.Atoi(s))
|
||||
}
|
||||
|
||||
// param name like ffmpeg style https://ffmpeg.org/ffmpeg-protocols.html
|
||||
if s := query.Get("log_level"); s != "" {
|
||||
if lvl, err := zerolog.ParseLevel(s); err == nil {
|
||||
level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// will help to protect looping requests to same source
|
||||
conn.Connection.Source = query.Get("source")
|
||||
|
||||
if err := stream.AddConsumer(conn); err != nil {
|
||||
logEvent := log.Warn()
|
||||
|
||||
if err, ok := err.(*streams.ErrorWithErrorCode); ok {
|
||||
level, parseErr := zerolog.ParseLevel(query.Get(err.Code()))
|
||||
if parseErr == nil {
|
||||
logEvent = log.WithLevel(level)
|
||||
}
|
||||
}
|
||||
|
||||
logEvent.Err(err).Str("stream", name).Msg("[rtsp]")
|
||||
log.WithLevel(level).Err(err).Str("stream", name).Msg("[rtsp]")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -239,7 +238,7 @@ func tcpHandler(conn *rtsp.Conn) {
|
||||
|
||||
if err := conn.Accept(); err != nil {
|
||||
if err != io.EOF {
|
||||
log.Warn().Err(err).Caller().Send()
|
||||
log.WithLevel(level).Err(err).Caller().Send()
|
||||
}
|
||||
if closer != nil {
|
||||
closer()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package streams
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"github.com/AlexxIT/go2rtc/pkg/core"
|
||||
@@ -124,7 +125,7 @@ func formatError(consMedias, prodMedias []*core.Media, prodErrors []error) error
|
||||
}
|
||||
|
||||
if len(text) != 0 {
|
||||
return &ErrorWithErrorCode{MultipleErrorCode, "streams: " + text}
|
||||
return errors.New("streams: " + text)
|
||||
}
|
||||
|
||||
// 2. Return "codecs not matched"
|
||||
@@ -147,11 +148,11 @@ func formatError(consMedias, prodMedias []*core.Media, prodErrors []error) error
|
||||
}
|
||||
}
|
||||
|
||||
return &ErrorWithErrorCode{CodecNotMatchedErrorCode, "streams: codecs not matched: " + prod + " => " + cons}
|
||||
return errors.New("streams: codecs not matched: " + prod + " => " + cons)
|
||||
}
|
||||
|
||||
// 3. Return unknown error
|
||||
return &ErrorWithErrorCode{UnknownErrorCode, "streams: unknown error"}
|
||||
return errors.New("streams: unknown error")
|
||||
}
|
||||
|
||||
func appendString(s, elem string) string {
|
||||
@@ -163,24 +164,3 @@ func appendString(s, elem string) string {
|
||||
}
|
||||
return s + ", " + elem
|
||||
}
|
||||
|
||||
type ErrorCode string
|
||||
|
||||
const (
|
||||
CodecNotMatchedErrorCode ErrorCode = "codecNotMatched"
|
||||
MultipleErrorCode ErrorCode = "multiple"
|
||||
UnknownErrorCode ErrorCode = "unknown"
|
||||
)
|
||||
|
||||
type ErrorWithErrorCode struct {
|
||||
code ErrorCode
|
||||
message string
|
||||
}
|
||||
|
||||
func (e *ErrorWithErrorCode) Error() string {
|
||||
return e.message
|
||||
}
|
||||
|
||||
func (e *ErrorWithErrorCode) Code() string {
|
||||
return string(e.code)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user