Add FmtpLine for DVRIP H264 codec
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -335,7 +336,27 @@ func (c *Client) AddVideoTrack(mediaCode byte, payload []byte) {
|
|||||||
Name: streamer.CodecH264,
|
Name: streamer.CodecH264,
|
||||||
ClockRate: 90000,
|
ClockRate: 90000,
|
||||||
PayloadType: streamer.PayloadTypeRAW,
|
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:
|
case 3:
|
||||||
codec = &streamer.Codec{
|
codec = &streamer.Codec{
|
||||||
Name: streamer.CodecH265,
|
Name: streamer.CodecH265,
|
||||||
|
|||||||
Reference in New Issue
Block a user