Skip to content

Commit b84c19f

Browse files
committed
testing
1 parent 7a563b0 commit b84c19f

File tree

5 files changed

+78
-10
lines changed

5 files changed

+78
-10
lines changed

example/test/main.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package main
2+
3+
import (
4+
"github.com/deepch/vdk/format/ts"
5+
"log"
6+
"os"
7+
)
8+
9+
func main() {
10+
f, _ := os.Open("edb9708f29b24ba9b175808d6b9df9c6541e25766d4a40209a8f903948b72f3f.ts")
11+
m := ts.NewDemuxer(f)
12+
var i int
13+
for {
14+
p, err := m.ReadPacket()
15+
if err != nil {
16+
return
17+
}
18+
if p.IsKeyFrame {
19+
i = 0
20+
}
21+
log.Println(i, p.Time, p.Data[4:10], len(p.Data))
22+
i++
23+
24+
}
25+
}

format/mp4f/muxer.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package mp4f
33
import (
44
"bufio"
55
"fmt"
6+
"log"
67
"os"
78
"time"
89

@@ -238,14 +239,15 @@ func (self *Muxer) WriteTrailer() (err error) {
238239
return
239240
}
240241

241-
func (element *Muxer) WriteHeader(streams []av.CodecData) (err error) {
242+
func (element *Muxer) WriteHeader(streams []av.CodecData) error {
242243
element.streams = []*Stream{}
243244
for _, stream := range streams {
244-
if err = element.newStream(stream); err != nil {
245-
return
245+
if err := element.newStream(stream); err != nil {
246+
log.Println("WriteHeader", err)
246247
}
247248
}
248-
return
249+
250+
return nil
249251
}
250252

251253
func (element *Muxer) GetInit(streams []av.CodecData) (string, []byte) {
@@ -285,6 +287,9 @@ func (element *Muxer) GetInit(streams []av.CodecData) (string, []byte) {
285287
}
286288

287289
func (element *Muxer) WritePacket(pkt av.Packet, GOP bool) (bool, []byte, error) {
290+
if pkt.Idx+1 > int8(len(element.streams)) {
291+
return false, nil, nil
292+
}
288293
stream := element.streams[pkt.Idx]
289294
if GOP {
290295
ts := time.Duration(0)

format/rtsp/client.go

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,10 @@ const (
4040
)
4141

4242
type Client struct {
43-
DebugRtsp bool
44-
DebugRtp bool
45-
Headers []string
43+
DebugRtsp bool
44+
DebugRtp bool
45+
DisableAudio bool
46+
Headers []string
4647

4748
SkipErrRtpBlock bool
4849

@@ -1076,12 +1077,44 @@ func (self *Stream) handleRtpPacket(packet []byte) (err error) {
10761077
err = fmt.Errorf("rtp: packet too short")
10771078
return
10781079
}
1079-
payloadOffset := 12 + int(packet[0]&0xf)*4
1080+
1081+
timestamp := binary.BigEndian.Uint32(packet[4:8])
1082+
1083+
/*
1084+
Test offset
1085+
*/
1086+
Padding := (packet[0]>>5)&1 == 1
1087+
Extension := (packet[0]>>4)&1 == 1
1088+
CSRCCnt := int(packet[0] & 0x0f)
1089+
1090+
RTPHeaderSize := 12
1091+
1092+
payloadOffset := RTPHeaderSize
1093+
end := len(packet)
1094+
if end-payloadOffset >= 4*CSRCCnt {
1095+
payloadOffset += 4 * CSRCCnt
1096+
}
1097+
1098+
if Extension && end-payloadOffset >= 4 {
1099+
extLen := 4 * int(binary.BigEndian.Uint16(packet[payloadOffset+2:]))
1100+
payloadOffset += 4
1101+
if end-payloadOffset >= extLen {
1102+
payloadOffset += extLen
1103+
}
1104+
}
1105+
1106+
if Padding && end-payloadOffset > 0 {
1107+
paddingLen := int(packet[end-1])
1108+
if end-payloadOffset >= paddingLen {
1109+
end -= paddingLen
1110+
}
1111+
}
1112+
10801113
if payloadOffset > len(packet) {
10811114
err = fmt.Errorf("rtp: packet too short")
10821115
return
10831116
}
1084-
timestamp := binary.BigEndian.Uint32(packet[4:8])
1117+
10851118
payload := packet[payloadOffset:]
10861119

10871120
/*

format/rtsp/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package rtsp

format/ts/demuxer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,11 @@ func (self *Stream) payloadEnd() (n int, err error) {
284284
b := make([]byte, 4+len(nalu))
285285
pio.PutU32BE(b[0:4], uint32(len(nalu)))
286286
copy(b[4:], nalu)
287-
self.addPacket(b, time.Duration(0), (1000*time.Millisecond)/time.Duration(self.fps))
287+
fps := self.fps
288+
if self.fps == 0 {
289+
fps = 25
290+
}
291+
self.addPacket(b, time.Duration(0), (1000*time.Millisecond)/time.Duration(fps))
288292
n++
289293
}
290294
}

0 commit comments

Comments
 (0)