mirror of
https://github.com/Monibuca/engine.git
synced 2025-10-08 18:10:09 +08:00
fix: aac实际没有写入缓存,ts写入造成的内存泄露
This commit is contained in:
@@ -646,7 +646,7 @@ func PESToTs(frame *MpegtsPESFrame, packet MpegTsPESPacket) (tsPkts []byte, err
|
|||||||
err = errors.New("packetStartCodePrefix != 0x000001")
|
err = errors.New("packetStartCodePrefix != 0x000001")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
bwTsHeader := &bytes.Buffer{}
|
||||||
bwPESPkt := &bytes.Buffer{}
|
bwPESPkt := &bytes.Buffer{}
|
||||||
_, err = WritePESHeader(bwPESPkt, packet.Header)
|
_, err = WritePESHeader(bwPESPkt, packet.Header)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -659,8 +659,7 @@ func PESToTs(frame *MpegtsPESFrame, packet MpegTsPESPacket) (tsPkts []byte, err
|
|||||||
|
|
||||||
var tsHeaderLength int
|
var tsHeaderLength int
|
||||||
for i := 0; bwPESPkt.Len() > 0; i++ {
|
for i := 0; bwPESPkt.Len() > 0; i++ {
|
||||||
bwTsHeader := &bytes.Buffer{}
|
bwTsHeader.Reset()
|
||||||
|
|
||||||
tsHeader := MpegTsHeader{
|
tsHeader := MpegTsHeader{
|
||||||
SyncByte: 0x47,
|
SyncByte: 0x47,
|
||||||
TransportErrorIndicator: 0,
|
TransportErrorIndicator: 0,
|
||||||
@@ -739,15 +738,14 @@ func PESToTs(frame *MpegtsPESFrame, packet MpegTsPESPacket) (tsPkts []byte, err
|
|||||||
// if tmp == 2 {
|
// if tmp == 2 {
|
||||||
// fmt.Println("fuck you mother.")
|
// fmt.Println("fuck you mother.")
|
||||||
// }
|
// }
|
||||||
|
tsPktByteLen := len(tsHeaderByte) + len(tsPayloadByte)
|
||||||
|
|
||||||
tsPktByte := append(tsHeaderByte, tsPayloadByte...)
|
if tsPktByteLen != TS_PACKET_SIZE {
|
||||||
|
err = errors.New(fmt.Sprintf("%s, packet size=%d", "TS_PACKET_SIZE != 188,", tsPktByteLen))
|
||||||
if len(tsPktByte) != TS_PACKET_SIZE {
|
|
||||||
err = errors.New(fmt.Sprintf("%s, packet size=%d", "TS_PACKET_SIZE != 188,", len(tsPktByte)))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
tsPkts = append(tsPkts, tsHeaderByte...)
|
||||||
tsPkts = append(tsPkts, tsPktByte...)
|
tsPkts = append(tsPkts, tsPayloadByte...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@@ -90,7 +90,6 @@ type Engine struct {
|
|||||||
RTPReorder bool
|
RTPReorder bool
|
||||||
EnableAVCC bool //启用AVCC格式,rtmp协议使用
|
EnableAVCC bool //启用AVCC格式,rtmp协议使用
|
||||||
EnableRTP bool //启用RTP格式,rtsp、gb18181等协议使用
|
EnableRTP bool //启用RTP格式,rtsp、gb18181等协议使用
|
||||||
EnableFLV bool //开启FLV格式,hdl协议使用
|
|
||||||
ConsoleURL string //远程控制台地址
|
ConsoleURL string //远程控制台地址
|
||||||
Secret string //远程控制台密钥
|
Secret string //远程控制台密钥
|
||||||
}
|
}
|
||||||
@@ -172,5 +171,5 @@ var Global = &Engine{
|
|||||||
Publish{true, true, false, 10, 0},
|
Publish{true, true, false, 10, 0},
|
||||||
Subscribe{true, true, true, false, 10},
|
Subscribe{true, true, true, false, 10},
|
||||||
HTTP{ListenAddr: ":8080", CORS: true, mux: http.DefaultServeMux},
|
HTTP{ListenAddr: ":8080", CORS: true, mux: http.DefaultServeMux},
|
||||||
false, true, true, true, "wss://console.monibuca.com/ws/v1", "",
|
false, true, true, "wss://console.monibuca.com/ws/v1", "",
|
||||||
}
|
}
|
||||||
|
@@ -285,7 +285,6 @@ func (s *Subscriber) PlayBlock(subType byte) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
// 正常模式下或者纯音频模式下,音频开始播放
|
// 正常模式下或者纯音频模式下,音频开始播放
|
||||||
if s.Audio.ring != nil && s.Config.SubAudio {
|
if s.Audio.ring != nil && s.Config.SubAudio {
|
||||||
@@ -311,9 +310,7 @@ func (s *Subscriber) PlayBlock(subType byte) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
time.Sleep(time.Second)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -68,8 +68,8 @@ func (a *Audio) WriteADTS(adts []byte) {
|
|||||||
|
|
||||||
func (a *Audio) Flush() {
|
func (a *Audio) Flush() {
|
||||||
// AVCC 格式补完
|
// AVCC 格式补完
|
||||||
value := a.Media.RingBuffer.Value
|
value := &a.Media.RingBuffer.Value
|
||||||
if len(value.AVCC) == 0 && (config.Global.EnableAVCC || config.Global.EnableFLV) {
|
if len(value.AVCC) == 0 && (config.Global.EnableAVCC) {
|
||||||
value.AppendAVCC(a.AVCCHead)
|
value.AppendAVCC(a.AVCCHead)
|
||||||
for _, raw := range value.Raw {
|
for _, raw := range value.Raw {
|
||||||
value.AppendAVCC(raw)
|
value.AppendAVCC(raw)
|
||||||
|
@@ -115,7 +115,7 @@ func (vt *Video) Flush() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// AVCC格式补完
|
// AVCC格式补完
|
||||||
if len(rv.AVCC) == 0 && (config.Global.EnableAVCC || config.Global.EnableFLV) {
|
if len(rv.AVCC) == 0 && (config.Global.EnableAVCC) {
|
||||||
var b util.Buffer
|
var b util.Buffer
|
||||||
if cap(rv.AVCC) > 0 {
|
if cap(rv.AVCC) > 0 {
|
||||||
if avcc := rv.AVCC[:1]; len(avcc[0]) == 5 {
|
if avcc := rv.AVCC[:1]; len(avcc[0]) == 5 {
|
||||||
|
Reference in New Issue
Block a user