mirror of
https://github.com/Monibuca/plugin-rtsp.git
synced 2025-09-28 12:32:09 +08:00
完成音频解析
This commit is contained in:
22
main.go
22
main.go
@@ -153,19 +153,33 @@ func (rtsp *RTSP) run() {
|
|||||||
|
|
||||||
} else if data[1] == 2 {
|
} else if data[1] == 2 {
|
||||||
// audio
|
// audio
|
||||||
cc := data[4] & 0xF
|
|
||||||
rtphdr := 12 + cc*4
|
|
||||||
payload := data[4+rtphdr:]
|
|
||||||
if !aacsent {
|
if !aacsent {
|
||||||
av := NewAVPacket(FLV_TAG_TYPE_AUDIO)
|
av := NewAVPacket(FLV_TAG_TYPE_AUDIO)
|
||||||
av.Payload = append([]byte{0xAF, 0x00}, rtsp.AudioSpecificConfig...)
|
av.Payload = append([]byte{0xAF, 0x00}, rtsp.AudioSpecificConfig...)
|
||||||
rtsp.PushAudio(av)
|
rtsp.PushAudio(av)
|
||||||
aacsent = true
|
aacsent = true
|
||||||
}
|
}
|
||||||
|
cc := data[4] & 0xF
|
||||||
|
rtphdr := 12 + cc*4
|
||||||
|
payload := data[4+rtphdr:]
|
||||||
|
auHeaderLen := (int16(payload[0]) << 8) + int16(payload[1])
|
||||||
|
auHeaderLen = auHeaderLen >> 3
|
||||||
|
auHeaderCount := int(auHeaderLen / 2)
|
||||||
|
var auLenArray []int
|
||||||
|
for iIndex := 0; iIndex < int(auHeaderCount); iIndex++ {
|
||||||
|
auHeaderInfo := (int16(payload[2+2*iIndex]) << 8) + int16(payload[2+2*iIndex+1])
|
||||||
|
auLen := auHeaderInfo >> 3
|
||||||
|
auLenArray = append(auLenArray, int(auLen))
|
||||||
|
}
|
||||||
|
startOffset := 2 + 2*auHeaderCount
|
||||||
|
for _, auLen := range auLenArray {
|
||||||
|
endOffset := startOffset + auLen
|
||||||
av := NewAVPacket(FLV_TAG_TYPE_AUDIO)
|
av := NewAVPacket(FLV_TAG_TYPE_AUDIO)
|
||||||
addHead := []byte{0xAF, 0x01}
|
addHead := []byte{0xAF, 0x01}
|
||||||
av.Payload = append(addHead, payload...)
|
av.Payload = append(addHead, payload[startOffset:endOffset]...)
|
||||||
rtsp.PushAudio(av)
|
rtsp.PushAudio(av)
|
||||||
|
startOffset = startOffset + auLen
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user