testing
This commit is contained in:
		| @@ -3,6 +3,7 @@ package mp4f | ||||
| import ( | ||||
| 	"bufio" | ||||
| 	"fmt" | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| @@ -238,14 +239,15 @@ func (self *Muxer) WriteTrailer() (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func (element *Muxer) WriteHeader(streams []av.CodecData) (err error) { | ||||
| func (element *Muxer) WriteHeader(streams []av.CodecData) error { | ||||
| 	element.streams = []*Stream{} | ||||
| 	for _, stream := range streams { | ||||
| 		if err = element.newStream(stream); err != nil { | ||||
| 			return | ||||
| 		if err := element.newStream(stream); err != nil { | ||||
| 			log.Println("WriteHeader", err) | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (element *Muxer) GetInit(streams []av.CodecData) (string, []byte) { | ||||
| @@ -285,6 +287,9 @@ func (element *Muxer) GetInit(streams []av.CodecData) (string, []byte) { | ||||
| } | ||||
|  | ||||
| func (element *Muxer) WritePacket(pkt av.Packet, GOP bool) (bool, []byte, error) { | ||||
| 	if pkt.Idx+1 > int8(len(element.streams)) { | ||||
| 		return false, nil, nil | ||||
| 	} | ||||
| 	stream := element.streams[pkt.Idx] | ||||
| 	if GOP { | ||||
| 		ts := time.Duration(0) | ||||
|   | ||||
| @@ -40,9 +40,10 @@ const ( | ||||
| ) | ||||
|  | ||||
| type Client struct { | ||||
| 	DebugRtsp bool | ||||
| 	DebugRtp  bool | ||||
| 	Headers   []string | ||||
| 	DebugRtsp    bool | ||||
| 	DebugRtp     bool | ||||
| 	DisableAudio bool | ||||
| 	Headers      []string | ||||
|  | ||||
| 	SkipErrRtpBlock bool | ||||
|  | ||||
| @@ -1076,12 +1077,44 @@ func (self *Stream) handleRtpPacket(packet []byte) (err error) { | ||||
| 		err = fmt.Errorf("rtp: packet too short") | ||||
| 		return | ||||
| 	} | ||||
| 	payloadOffset := 12 + int(packet[0]&0xf)*4 | ||||
|  | ||||
| 	timestamp := binary.BigEndian.Uint32(packet[4:8]) | ||||
|  | ||||
| 	/* | ||||
| 		Test offset | ||||
| 	*/ | ||||
| 	Padding := (packet[0]>>5)&1 == 1 | ||||
| 	Extension := (packet[0]>>4)&1 == 1 | ||||
| 	CSRCCnt := int(packet[0] & 0x0f) | ||||
|  | ||||
| 	RTPHeaderSize := 12 | ||||
|  | ||||
| 	payloadOffset := RTPHeaderSize | ||||
| 	end := len(packet) | ||||
| 	if end-payloadOffset >= 4*CSRCCnt { | ||||
| 		payloadOffset += 4 * CSRCCnt | ||||
| 	} | ||||
|  | ||||
| 	if Extension && end-payloadOffset >= 4 { | ||||
| 		extLen := 4 * int(binary.BigEndian.Uint16(packet[payloadOffset+2:])) | ||||
| 		payloadOffset += 4 | ||||
| 		if end-payloadOffset >= extLen { | ||||
| 			payloadOffset += extLen | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if Padding && end-payloadOffset > 0 { | ||||
| 		paddingLen := int(packet[end-1]) | ||||
| 		if end-payloadOffset >= paddingLen { | ||||
| 			end -= paddingLen | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if payloadOffset > len(packet) { | ||||
| 		err = fmt.Errorf("rtp: packet too short") | ||||
| 		return | ||||
| 	} | ||||
| 	timestamp := binary.BigEndian.Uint32(packet[4:8]) | ||||
|  | ||||
| 	payload := packet[payloadOffset:] | ||||
|  | ||||
| 	/* | ||||
|   | ||||
							
								
								
									
										1
									
								
								format/rtsp/server.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								format/rtsp/server.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| package rtsp | ||||
| @@ -284,7 +284,11 @@ func (self *Stream) payloadEnd() (n int, err error) { | ||||
| 						b := make([]byte, 4+len(nalu)) | ||||
| 						pio.PutU32BE(b[0:4], uint32(len(nalu))) | ||||
| 						copy(b[4:], nalu) | ||||
| 						self.addPacket(b, time.Duration(0), (1000*time.Millisecond)/time.Duration(self.fps)) | ||||
| 						fps := self.fps | ||||
| 						if self.fps == 0 { | ||||
| 							fps = 25 | ||||
| 						} | ||||
| 						self.addPacket(b, time.Duration(0), (1000*time.Millisecond)/time.Duration(fps)) | ||||
| 						n++ | ||||
| 					} | ||||
| 				} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 deepch
					deepch