解析 RTP 包时,将 RTP 的扩展部分解析出来
This commit is contained in:
		| @@ -35,6 +35,8 @@ func (client *RTSPClient) RTPDemuxer(payloadRAW *[]byte) ([]*av.Packet, bool) { | ||||
| 	if client.end-client.offset >= 4*CSRCCnt { | ||||
| 		client.offset += 4 * CSRCCnt | ||||
| 	} | ||||
| 	extensionStart := 0 | ||||
| 	extensionEnd := 0 | ||||
| 	if extension && len(content) < 4+client.offset+2+2 { | ||||
| 		return nil, false | ||||
| 	} | ||||
| @@ -42,6 +44,8 @@ func (client *RTSPClient) RTPDemuxer(payloadRAW *[]byte) ([]*av.Packet, bool) { | ||||
| 		extLen := 4 * int(binary.BigEndian.Uint16(content[4+client.offset+2:])) | ||||
| 		client.offset += 4 | ||||
| 		if client.end-client.offset >= extLen { | ||||
| 			extensionStart = client.offset | ||||
| 			extensionEnd = client.offset + extLen | ||||
| 			client.offset += extLen | ||||
| 		} | ||||
| 	} | ||||
| @@ -58,9 +62,19 @@ func (client *RTSPClient) RTPDemuxer(payloadRAW *[]byte) ([]*av.Packet, bool) { | ||||
|  | ||||
| 	switch int(content[1]) { | ||||
| 	case client.videoID: | ||||
| 		return client.handleVideo(content) | ||||
| 		pck, ok := client.handleVideo(content) | ||||
| 		for _, p := range pck { | ||||
| 			p.Extension = extension | ||||
| 			p.Extensions = content[extensionStart+4 : extensionEnd+4] | ||||
| 		} | ||||
| 		return pck, ok | ||||
| 	case client.audioID: | ||||
| 		return client.handleAudio(content) | ||||
| 		pck, ok := client.handleAudio(content) | ||||
| 		for _, p := range pck { | ||||
| 			p.Extension = extension | ||||
| 			p.Extensions = content[extensionStart+4 : extensionEnd+4] | ||||
| 		} | ||||
| 		return pck, ok | ||||
| 	} | ||||
| 	return nil, false | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 kunmeng
					kunmeng