From 7cb1a2d6b90cf65b1fc1ecd0f58bf34566f3fb50 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Fri, 5 Mar 2021 11:15:27 +0100 Subject: [PATCH] support OBS <= 25 --- internal/rtmputils/metadata.go | 67 ++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 16 deletions(-) diff --git a/internal/rtmputils/metadata.go b/internal/rtmputils/metadata.go index 720972ee..3d696d24 100644 --- a/internal/rtmputils/metadata.go +++ b/internal/rtmputils/metadata.go @@ -57,27 +57,62 @@ func Metadata(conn ConnPair, readTimeout time.Duration) ( return nil, nil, err } - hasVideo := false - if v, ok := md.GetFloat64("videocodecid"); ok { - switch v { - case codecH264: - hasVideo = true - case 0: - default: - return nil, nil, fmt.Errorf("unsupported video codec %v", v) + hasVideo, err := func() (bool, error) { + v, ok := md.GetV("videocodecid") + if !ok { + return false, nil } + switch vt := v.(type) { + case float64: + switch vt { + case 0: + return false, nil + + case codecH264: + return true, nil + } + + case string: + switch vt { + case "avc1": + return true, nil + } + } + + return false, fmt.Errorf("unsupported video codec %v", v) + }() + if err != nil { + return nil, nil, err } - hasAudio := false - if v, ok := md.GetFloat64("audiocodecid"); ok { - switch v { - case codecAAC: - hasAudio = true - case 0: - default: - return nil, nil, fmt.Errorf("unsupported audio codec %v", v) + hasAudio, err := func() (bool, error) { + v, ok := md.GetV("audiocodecid") + if !ok { + return false, nil } + + switch vt := v.(type) { + case float64: + switch vt { + case 0: + return false, nil + + case codecAAC: + return true, nil + } + + case string: + switch vt { + case "mp4a": + return true, nil + } + } + + return false, fmt.Errorf("unsupported audio codec %v", v) + }() + if err != nil { + return nil, nil, err } if !hasVideo && !hasAudio {