seven
This commit is contained in:
parent
dc4b6ad168
commit
6d88368a1b
2 changed files with 21 additions and 8 deletions
|
|
@ -11,9 +11,9 @@ import (
|
|||
)
|
||||
|
||||
type Frame struct {
|
||||
Data []byte
|
||||
Data []byte
|
||||
Elapsed uint32
|
||||
}
|
||||
|
||||
type RTPRelay struct {
|
||||
close bool
|
||||
listener net.PacketConn
|
||||
|
|
@ -50,6 +50,8 @@ func (r *RTPRelay) readLoop() {
|
|||
|
||||
frameBuffer := bytes.Buffer{}
|
||||
|
||||
var elapsed uint32 // <-- store last timestamp
|
||||
|
||||
for {
|
||||
r.listener.SetReadDeadline(time.Now().Add(10 * time.Second))
|
||||
|
||||
|
|
@ -86,12 +88,15 @@ func (r *RTPRelay) readLoop() {
|
|||
case 0x0001:
|
||||
frameBuffer.Write(payload)
|
||||
case 0x0002:
|
||||
if len(payload) >= 16 {
|
||||
elapsed = binary.LittleEndian.Uint32(payload[12:])
|
||||
}
|
||||
// Emit a full H264 frame
|
||||
if frameBuffer.Len() > 0 {
|
||||
cp := append([]byte{}, frameBuffer.Bytes()...)
|
||||
r.Frames <- Frame{Data: cp}
|
||||
frameBuffer.Reset()
|
||||
}
|
||||
cp := append([]byte{}, frameBuffer.Bytes()...)
|
||||
r.Frames <- Frame{Data: cp, Elapsed: elapsed}
|
||||
frameBuffer.Reset()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue