mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-12-24 13:48:04 +08:00
fix: rtp audio
This commit is contained in:
@@ -106,11 +106,9 @@ func (s *ReuseArray[T]) Reset() {
|
||||
*s = (*s)[:0]
|
||||
}
|
||||
|
||||
func (s *ReuseArray[T]) Reduce() ReuseArray[T] {
|
||||
func (s *ReuseArray[T]) Reduce() {
|
||||
ss := *s
|
||||
ss = ss[:len(ss)-1]
|
||||
*s = ss
|
||||
return ss
|
||||
*s = ss[:len(ss)-1]
|
||||
}
|
||||
|
||||
func (s *ReuseArray[T]) Remove(item *T) bool {
|
||||
|
||||
@@ -459,22 +459,24 @@ func (p *MP4Plugin) StartRecord(ctx context.Context, req *mp4pb.ReqStartRecord)
|
||||
Fragment: fragment,
|
||||
FilePath: filePath,
|
||||
}
|
||||
if stream, ok := p.Server.Streams.SafeGet(req.StreamPath); ok {
|
||||
job := p.Record(stream, recordConf, nil)
|
||||
res.Data = uint64(uintptr(unsafe.Pointer(job.GetTask())))
|
||||
} else {
|
||||
sub, err := p.Subscribe(ctx, req.StreamPath)
|
||||
if err == nil && sub != nil {
|
||||
if stream, ok := p.Server.Streams.SafeGet(req.StreamPath); ok {
|
||||
job := p.Record(stream, recordConf, nil)
|
||||
res.Data = uint64(uintptr(unsafe.Pointer(job.GetTask())))
|
||||
} else {
|
||||
err = pkg.ErrNotFound
|
||||
}
|
||||
} else {
|
||||
var stream *m7s.Publisher
|
||||
var ok bool
|
||||
if stream, ok = p.Server.Streams.SafeGet(req.StreamPath); !ok {
|
||||
var sub *m7s.Subscriber
|
||||
sub, err = p.Subscribe(ctx, req.StreamPath)
|
||||
if err != nil || sub == nil {
|
||||
err = pkg.ErrNotFound
|
||||
return
|
||||
}
|
||||
defer sub.Stop(task.ErrAutoStop)
|
||||
if stream, ok = p.Server.Streams.SafeGet(req.StreamPath); !ok {
|
||||
err = pkg.ErrNotFound
|
||||
return
|
||||
}
|
||||
}
|
||||
job := p.Record(stream, recordConf, nil)
|
||||
res.Data = uint64(job.GetTaskPointer())
|
||||
err = job.WaitStarted()
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -98,19 +98,18 @@ func (r *RTPCtx) GetRTPCodecParameter() webrtc.RTPCodecParameters {
|
||||
return r.RTPCodecParameters
|
||||
}
|
||||
|
||||
func (r *RTPData) Append(ctx *RTPCtx, ts uint32, payload []byte) *rtp.Packet {
|
||||
func (r *RTPData) Append(ctx *RTPCtx, ts uint32, payload []byte) (packet *rtp.Packet) {
|
||||
ctx.SequenceNumber++
|
||||
r.Packets = append(r.Packets, rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
SequenceNumber: ctx.SequenceNumber,
|
||||
Timestamp: ts,
|
||||
SSRC: ctx.SSRC,
|
||||
PayloadType: uint8(ctx.PayloadType),
|
||||
},
|
||||
Payload: payload,
|
||||
})
|
||||
return &r.Packets[len(r.Packets)-1]
|
||||
packet = r.Packets.GetNextPointer()
|
||||
packet.Header = rtp.Header{
|
||||
Version: 2,
|
||||
SequenceNumber: ctx.SequenceNumber,
|
||||
Timestamp: ts,
|
||||
SSRC: ctx.SSRC,
|
||||
PayloadType: uint8(ctx.PayloadType),
|
||||
}
|
||||
packet.Payload = payload
|
||||
return
|
||||
}
|
||||
|
||||
var _ IAVFrame = (*AudioFrame)(nil)
|
||||
@@ -119,12 +118,6 @@ type AudioFrame struct {
|
||||
RTPData
|
||||
}
|
||||
|
||||
func (r *AudioFrame) Parse(data IAVFrame) (err error) {
|
||||
input := data.(*AudioFrame)
|
||||
r.Packets = append(r.Packets[:0], input.Packets...)
|
||||
return
|
||||
}
|
||||
|
||||
func payloadLengthInfoDecode(buf []byte) (int, int, error) {
|
||||
lb := len(buf)
|
||||
l := 0
|
||||
|
||||
Reference in New Issue
Block a user