prepend SPS and PPS once when remuxing H264 streams

This avoids missing frames when reading with RTSP and the original
stream has NALU groups with multiple IDRs in it.
This commit is contained in:
aler9
2022-10-09 23:39:08 +02:00
parent 31d9429c18
commit 8aa719eda5
2 changed files with 27 additions and 19 deletions

View File

@@ -116,7 +116,10 @@ func TestRTMPServerPublishRead(t *testing.T) {
MessageStreamID: 0x1000000,
IsKeyFrame: true,
H264Type: flvio.AVC_NALU,
Payload: []byte{0x00, 0x00, 0x00, 0x04, 0x05, 0x02, 0x03, 0x04},
Payload: []byte{
0x00, 0x00, 0x00, 0x04, 0x05, 0x02, 0x03, 0x04, // IDR 1
0x00, 0x00, 0x00, 0x04, 0x05, 0x02, 0x03, 0x04, // IDR 2
},
})
require.NoError(t, err)
@@ -128,12 +131,14 @@ func TestRTMPServerPublishRead(t *testing.T) {
IsKeyFrame: true,
H264Type: flvio.AVC_NALU,
Payload: []byte{
0x00, 0x00, 0x00, 0x19, 0x67, 0x42, 0xc0, 0x28,
0xd9, 0x00, 0x78, 0x02, 0x27, 0xe5, 0x84, 0x00,
0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00,
0xf0, 0x3c, 0x60, 0xc9, 0x20, 0x00, 0x00, 0x00,
0x04, 0x08, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00,
0x04, 0x05, 0x02, 0x03, 0x04,
0x00, 0x00, 0x00, 0x19, // SPS
0x67, 0x42, 0xc0, 0x28, 0xd9, 0x00, 0x78, 0x02,
0x27, 0xe5, 0x84, 0x00, 0x00, 0x03, 0x00, 0x04,
0x00, 0x00, 0x03, 0x00, 0xf0, 0x3c, 0x60, 0xc9,
0x20,
0x00, 0x00, 0x00, 0x04, 0x08, 0x06, 0x07, 0x08, // PPS
0x00, 0x00, 0x00, 0x04, 0x05, 0x02, 0x03, 0x04, // IDR 1
0x00, 0x00, 0x00, 0x04, 0x05, 0x02, 0x03, 0x04, // IDR 2
},
}, msg1)
})