fix codec and track
This commit is contained in:
		| @@ -120,7 +120,7 @@ func Dial(options RTSPClientOptions) (*RTSPClient, error) { | ||||
| 		if (i2.AVType != VIDEO && i2.AVType != AUDIO) || (client.options.DisableAudio && i2.AVType == AUDIO) { | ||||
| 			continue | ||||
| 		} | ||||
| 		err = client.request(SETUP, map[string]string{"Transport": "RTP/AVP/TCP;unicast;interleaved=" + strconv.Itoa(ch) + "-" + strconv.Itoa(ch+1)}, client.control+i2.Control, false, false) | ||||
| 		err = client.request(SETUP, map[string]string{"Transport": "RTP/AVP/TCP;unicast;interleaved=" + strconv.Itoa(ch) + "-" + strconv.Itoa(ch+1)}, client.ControlTrack(i2.Control), false, false) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @@ -150,6 +150,13 @@ func Dial(options RTSPClientOptions) (*RTSPClient, error) { | ||||
| 	return client, nil | ||||
| } | ||||
|  | ||||
| func (client *RTSPClient) ControlTrack(track string) string { | ||||
| 	if strings.Contains(track, "rtsp://") { | ||||
| 		return track | ||||
| 	} | ||||
| 	return client.control + track | ||||
| } | ||||
|  | ||||
| func (client *RTSPClient) startStream() { | ||||
| 	defer func() { | ||||
| 		client.Signals <- SignalStreamRTPStop | ||||
| @@ -469,7 +476,6 @@ func (client *RTSPClient) RTPDemuxer(payloadRAW *[]byte) ([]*av.Packet, bool) { | ||||
| 			switch { | ||||
| 			case naluType >= 1 && naluType <= 5: | ||||
| 				client.Println("Fix Stream IDX") | ||||
|  | ||||
| 				retmap = append(retmap, &av.Packet{ | ||||
| 					Data:            append(binSize(len(nal)), nal...), | ||||
| 					CompositionTime: time.Duration(1) * time.Millisecond, | ||||
| @@ -527,7 +533,7 @@ func (client *RTSPClient) RTPDemuxer(payloadRAW *[]byte) ([]*av.Packet, bool) { | ||||
| func (client *RTSPClient) CodecUpdateSPS(val []byte) { | ||||
| 	if bytes.Compare(val, client.sps) != 0 { | ||||
| 		if len(client.sps) > 0 && len(client.pps) > 0 { | ||||
| 			codecData, err := h264parser.NewCodecDataFromSPSAndPPS(client.sps, client.pps) | ||||
| 			codecData, err := h264parser.NewCodecDataFromSPSAndPPS(val, client.pps) | ||||
| 			if err != nil { | ||||
| 				client.Println("Parse Codec Data Error", err) | ||||
| 				return | ||||
| @@ -550,7 +556,7 @@ func (client *RTSPClient) CodecUpdateSPS(val []byte) { | ||||
| func (client *RTSPClient) CodecUpdatePPS(val []byte) { | ||||
| 	if bytes.Compare(val, client.pps) != 0 { | ||||
| 		if len(client.sps) > 0 && len(client.pps) > 0 { | ||||
| 			codecData, err := h264parser.NewCodecDataFromSPSAndPPS(client.sps, client.pps) | ||||
| 			codecData, err := h264parser.NewCodecDataFromSPSAndPPS(client.sps, val) | ||||
| 			if err != nil { | ||||
| 				client.Println("Parse Codec Data Error", err) | ||||
| 				return | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Andrey Semochkin
					Andrey Semochkin