Add FmtpLine for DVRIP H264 codec

This commit is contained in:
Alexey Khit
2023-02-11 12:47:36 +03:00
parent a72fa7fb23
commit 57b49d735e
+21
View File
@@ -5,6 +5,7 @@ import (
"crypto/md5"
"encoding/base64"
"encoding/binary"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
@@ -335,7 +336,27 @@ func (c *Client) AddVideoTrack(mediaCode byte, payload []byte) {
Name: streamer.CodecH264,
ClockRate: 90000,
PayloadType: streamer.PayloadTypeRAW,
FmtpLine: "packetization-mode=1",
}
for {
size := 4 + int(binary.BigEndian.Uint32(payload))
switch h264.NALUType(payload) {
case h264.NALUTypeSPS:
codec.FmtpLine += ";profile-level-id=" + hex.EncodeToString(payload[5:8])
codec.FmtpLine += ";sprop-parameter-sets=" + base64.StdEncoding.EncodeToString(payload[4:size])
case h264.NALUTypePPS:
codec.FmtpLine += "," + base64.StdEncoding.EncodeToString(payload[4:size])
}
if size < len(payload) {
payload = payload[size:]
} else {
break
}
}
case 3:
codec = &streamer.Codec{
Name: streamer.CodecH265,