rtmp2rtsp add utest

pull/266/head
ZSC714725 2 years ago
parent 411ba82181
commit ee561b96a0

@ -52,6 +52,10 @@ a=tool:%s
sdpStr += audioSdpStr
}
if videoSdpStr == "" && audioSdpStr == "" {
return ctx, fmt.Errorf("invalid video and audio info, sdp:%s", sdpStr)
}
raw := []byte(strings.ReplaceAll(sdpStr, "\n", "\r\n"))
ctx, err = ParseSdp2LogicContext(raw)
return

@ -0,0 +1,154 @@
package sdp
import (
"testing"
"github.com/q191201771/lal/pkg/base"
"github.com/q191201771/naza/pkg/assert"
)
var avcsps = []byte{
0x67, 0x64, 0x00, 0x20, 0xac, 0xd9, 0x40, 0xc0, 0x29, 0xb0, 0x11, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x32, 0x0f, 0x18, 0x31, 0x96,
}
var avcpps = []byte{
0x68, 0xeb, 0xec, 0xb2, 0x2c,
}
var hevcsps = []byte{
0x42, 0x01, 0x01, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x50, 0x50, 0x40, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x07, 0x82,
}
var hevcpps = []byte{
0x44, 0x01, 0xc1, 0x72, 0xb0, 0x62, 0x40,
}
var hevcvps = []byte{
0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x78, 0x91, 0x14, 0x09,
}
var asc = []byte{
0x12, 0x10,
}
func TestSdpPack(t *testing.T) {
{
// avc和aac
video := VideoInfo{
VideoPt: base.AvPacketPtAvc,
Sps: avcsps,
Pps: avcpps,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtAac,
SamplingFrequency: 44100,
Asc: asc,
}
sdpctx, err := Pack(video, audio)
assert.Equal(t, nil, err)
assert.Equal(t, avcsps, sdpctx.Sps)
assert.Equal(t, avcpps, sdpctx.Pps)
assert.Equal(t, asc, sdpctx.Asc)
}
{
// video和audio无效
video := VideoInfo{
VideoPt: base.AvPacketPtUnknown,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtUnknown,
}
_, err := Pack(video, audio)
assert.IsNotNil(t, err)
}
{
// 只有video
video := VideoInfo{
VideoPt: base.AvPacketPtAvc,
Sps: avcsps,
Pps: avcpps,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtUnknown,
}
sdpctx, err := Pack(video, audio)
assert.Equal(t, nil, err)
assert.Equal(t, avcsps, sdpctx.Sps)
assert.Equal(t, avcpps, sdpctx.Pps)
assert.Equal(t, nil, sdpctx.Asc)
}
{
// 只有audio
video := VideoInfo{
VideoPt: base.AvPacketPtUnknown,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtAac,
SamplingFrequency: 44100,
Asc: asc,
}
sdpctx, err := Pack(video, audio)
assert.Equal(t, nil, err)
assert.Equal(t, nil, sdpctx.Sps)
assert.Equal(t, nil, sdpctx.Pps)
assert.Equal(t, asc, sdpctx.Asc)
}
{
// g711a
video := VideoInfo{
VideoPt: base.AvPacketPtUnknown,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtG711A,
SamplingFrequency: 44100,
}
sdpctx, err := Pack(video, audio)
assert.Equal(t, nil, err)
assert.Equal(t, nil, sdpctx.Sps)
assert.Equal(t, nil, sdpctx.Pps)
assert.Equal(t, nil, sdpctx.Asc)
assert.Equal(t, base.AvPacketPtG711A, sdpctx.audioPayloadTypeBase)
assert.Equal(t, 44100, sdpctx.AudioClockRate)
}
{
// g711u
video := VideoInfo{
VideoPt: base.AvPacketPtUnknown,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtG711U,
SamplingFrequency: 44100,
}
sdpctx, err := Pack(video, audio)
assert.Equal(t, nil, err)
assert.Equal(t, nil, sdpctx.Sps)
assert.Equal(t, nil, sdpctx.Pps)
assert.Equal(t, nil, sdpctx.Asc)
assert.Equal(t, base.AvPacketPtG711U, sdpctx.audioPayloadTypeBase)
assert.Equal(t, 44100, sdpctx.AudioClockRate)
}
{
// hevc和aac
video := VideoInfo{
VideoPt: base.AvPacketPtHevc,
Sps: hevcsps,
Pps: hevcpps,
Vps: hevcvps,
}
audio := AudioInfo{
AudioPt: base.AvPacketPtAac,
SamplingFrequency: 44100,
Asc: asc,
}
sdpctx, err := Pack(video, audio)
assert.Equal(t, nil, err)
assert.Equal(t, hevcsps, sdpctx.Sps)
assert.Equal(t, hevcpps, sdpctx.Pps)
assert.Equal(t, hevcvps, sdpctx.Vps)
assert.Equal(t, asc, sdpctx.Asc)
}
}
Loading…
Cancel
Save