mirror of
				https://github.com/AlexxIT/go2rtc.git
				synced 2025-10-31 11:46:26 +08:00 
			
		
		
		
	Rewrite MJPEG consumer
This commit is contained in:
		| @@ -2,19 +2,21 @@ package mjpeg | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"io" | ||||
|  | ||||
| 	"github.com/AlexxIT/go2rtc/pkg/core" | ||||
| 	"github.com/pion/rtp" | ||||
| ) | ||||
|  | ||||
| type Consumer struct { | ||||
| 	core.Listener | ||||
|  | ||||
| 	UserAgent  string | ||||
| 	RemoteAddr string | ||||
|  | ||||
| 	medias []*core.Media | ||||
| 	sender *core.Sender | ||||
|  | ||||
| 	wr *core.WriteBuffer | ||||
|  | ||||
| 	send int | ||||
| } | ||||
|  | ||||
| @@ -34,11 +36,16 @@ func (c *Consumer) GetMedias() []*core.Media { | ||||
| } | ||||
|  | ||||
| func (c *Consumer) AddTrack(media *core.Media, _ *core.Codec, track *core.Receiver) error { | ||||
| 	if c.wr == nil { | ||||
| 		c.wr = core.NewWriteBuffer(nil) | ||||
| 	} | ||||
|  | ||||
| 	if c.sender == nil { | ||||
| 		c.sender = core.NewSender(media, track.Codec) | ||||
| 		c.sender.Handler = func(packet *rtp.Packet) { | ||||
| 			c.Fire(packet.Payload) | ||||
| 			c.send += len(packet.Payload) | ||||
| 			if n, err := c.wr.Write(packet.Payload); err == nil { | ||||
| 				c.send += n | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if track.Codec.IsRTP() { | ||||
| @@ -50,10 +57,17 @@ func (c *Consumer) AddTrack(media *core.Media, _ *core.Codec, track *core.Receiv | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *Consumer) WriteTo(wr io.Writer) (int64, error) { | ||||
| 	return c.wr.WriteTo(wr) | ||||
| } | ||||
|  | ||||
| func (c *Consumer) Stop() error { | ||||
| 	if c.sender != nil { | ||||
| 		c.sender.Close() | ||||
| 	} | ||||
| 	if c.wr != nil { | ||||
| 		_ = c.wr.Close() | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alexey Khit
					Alexey Khit