rtmp: add additional message types

This commit is contained in:
aler9 2022-05-14 00:52:11 +02:00
parent 180db31166
commit 1f6d92bc3a
2 changed files with 35 additions and 25 deletions

View File

@ -10,4 +10,14 @@ const (
MessageTypeAcknowledge MessageType = 3
MessageTypeSetWindowAckSize MessageType = 5
MessageTypeSetPeerBandwidth MessageType = 6
MessageTypeUserControl MessageType = 4
MessageTypeDataAMF3 MessageType = 15
MessageTypeCommandAMF3 MessageType = 17
MessageTypeDataAMF0 MessageType = 18
MessageTypeCommandAMF0 MessageType = 20
MessageTypeAudio MessageType = 8
MessageTypeVideo MessageType = 9
)

View File

@ -153,7 +153,7 @@ func TestReadTracks(t *testing.T) {
})
err = mw.Write(&base.Message{
ChunkStreamID: 3,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: byts,
})
require.NoError(t, err)
@ -193,7 +193,7 @@ func TestReadTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(3), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err := flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -224,7 +224,7 @@ func TestReadTracks(t *testing.T) {
// C->S releaseStream
err = mw.Write(&base.Message{
ChunkStreamID: 3,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: flvio.FillAMF0ValsMalloc([]interface{}{
"releaseStream",
float64(2),
@ -237,7 +237,7 @@ func TestReadTracks(t *testing.T) {
// C->S FCPublish
err = mw.Write(&base.Message{
ChunkStreamID: 3,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: flvio.FillAMF0ValsMalloc([]interface{}{
"FCPublish",
float64(3),
@ -250,7 +250,7 @@ func TestReadTracks(t *testing.T) {
// C->S createStream
err = mw.Write(&base.Message{
ChunkStreamID: 3,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: flvio.FillAMF0ValsMalloc([]interface{}{
"createStream",
float64(4),
@ -263,7 +263,7 @@ func TestReadTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(3), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -276,7 +276,7 @@ func TestReadTracks(t *testing.T) {
// C->S publish
err = mw.Write(&base.Message{
ChunkStreamID: 8,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
MessageStreamID: 1,
Body: flvio.FillAMF0ValsMalloc([]interface{}{
"publish",
@ -292,7 +292,7 @@ func TestReadTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(5), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -333,7 +333,7 @@ func TestReadTracks(t *testing.T) {
})
err = mw.Write(&base.Message{
ChunkStreamID: 4,
Type: 0x12,
Type: base.MessageTypeDataAMF0,
MessageStreamID: 1,
Body: byts,
})
@ -354,7 +354,7 @@ func TestReadTracks(t *testing.T) {
body := append([]byte{flvio.FRAME_KEY<<4 | flvio.VIDEO_H264, 0, 0, 0, 0}, b[:n]...)
err = mw.Write(&base.Message{
ChunkStreamID: 6,
Type: flvio.TAG_VIDEO,
Type: base.MessageTypeVideo,
MessageStreamID: 1,
Body: body,
})
@ -369,7 +369,7 @@ func TestReadTracks(t *testing.T) {
require.NoError(t, err)
err = mw.Write(&base.Message{
ChunkStreamID: 4,
Type: flvio.TAG_AUDIO,
Type: base.MessageTypeAudio,
MessageStreamID: 1,
Body: append([]byte{
flvio.SOUND_AAC<<4 | flvio.SOUND_44Khz<<2 | flvio.SOUND_16BIT<<1 | flvio.SOUND_STEREO,
@ -400,7 +400,7 @@ func TestReadTracks(t *testing.T) {
})
err = mw.Write(&base.Message{
ChunkStreamID: 4,
Type: 0x12,
Type: base.MessageTypeDataAMF0,
MessageStreamID: 1,
Body: byts,
})
@ -421,7 +421,7 @@ func TestReadTracks(t *testing.T) {
body := append([]byte{flvio.FRAME_KEY<<4 | flvio.VIDEO_H264, 0, 0, 0, 0}, b[:n]...)
err = mw.Write(&base.Message{
ChunkStreamID: 6,
Type: flvio.TAG_VIDEO,
Type: base.MessageTypeVideo,
MessageStreamID: 1,
Body: body,
})
@ -443,7 +443,7 @@ func TestReadTracks(t *testing.T) {
body := append([]byte{flvio.FRAME_KEY<<4 | flvio.VIDEO_H264, 0, 0, 0, 0}, b[:n]...)
err = mw.Write(&base.Message{
ChunkStreamID: 6,
Type: flvio.TAG_VIDEO,
Type: base.MessageTypeVideo,
MessageStreamID: 1,
Body: body,
})
@ -532,7 +532,7 @@ func TestWriteTracks(t *testing.T) {
})
err = mw.Write(&base.Message{
ChunkStreamID: 3,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: byts,
})
require.NoError(t, err)
@ -572,7 +572,7 @@ func TestWriteTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(3), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err := flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -611,7 +611,7 @@ func TestWriteTracks(t *testing.T) {
// C->S createStream
err = mw.Write(&base.Message{
ChunkStreamID: 3,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: flvio.FillAMF0ValsMalloc([]interface{}{
"createStream",
float64(2),
@ -624,7 +624,7 @@ func TestWriteTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(3), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -657,7 +657,7 @@ func TestWriteTracks(t *testing.T) {
})
err = mw.Write(&base.Message{
ChunkStreamID: 8,
Type: 0x14,
Type: base.MessageTypeCommandAMF0,
Body: byts,
})
require.NoError(t, err)
@ -667,7 +667,7 @@ func TestWriteTracks(t *testing.T) {
require.NoError(t, err)
require.Equal(t, base.Chunk0{
ChunkStreamID: base.ControlChunkStreamID,
Type: 4,
Type: base.MessageTypeUserControl,
BodyLen: 6,
Body: []byte{0x00, 0x04, 0x00, 0x00, 0x00, 0x01},
}, c0)
@ -677,7 +677,7 @@ func TestWriteTracks(t *testing.T) {
require.NoError(t, err)
require.Equal(t, base.Chunk0{
ChunkStreamID: base.ControlChunkStreamID,
Type: 4,
Type: base.MessageTypeUserControl,
BodyLen: 6,
Body: []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
}, c0)
@ -686,7 +686,7 @@ func TestWriteTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(5), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -704,7 +704,7 @@ func TestWriteTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(5), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -722,7 +722,7 @@ func TestWriteTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(5), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{
@ -740,7 +740,7 @@ func TestWriteTracks(t *testing.T) {
err = c0.Read(conn, 65536)
require.NoError(t, err)
require.Equal(t, uint8(5), c0.ChunkStreamID)
require.Equal(t, base.MessageType(0x14), c0.Type)
require.Equal(t, base.MessageTypeCommandAMF0, c0.Type)
arr, err = flvio.ParseAMFVals(c0.Body, false)
require.NoError(t, err)
require.Equal(t, []interface{}{