Rewrite mpegts producer and consumer
This commit is contained in:
+4
-4
@@ -145,11 +145,11 @@ func (c *Client) SetupStream() (err error) {
|
||||
|
||||
// Handle - first run will be in probe state
|
||||
func (c *Client) Handle() error {
|
||||
multipartRd := multipart.NewReader(c.conn1, "--device-stream-boundary--")
|
||||
mpegtsRd := mpegts.NewReader()
|
||||
rd := multipart.NewReader(c.conn1, "--device-stream-boundary--")
|
||||
demux := mpegts.NewDemuxer()
|
||||
|
||||
for {
|
||||
p, err := multipartRd.NextRawPart()
|
||||
p, err := rd.NextRawPart()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -181,7 +181,7 @@ func (c *Client) Handle() error {
|
||||
bytesRd := bytes.NewReader(body)
|
||||
|
||||
for {
|
||||
pkt, err2 := mpegtsRd.ReadPacket(bytesRd)
|
||||
pkt, err2 := demux.ReadPacket(bytesRd)
|
||||
if pkt == nil || err2 == io.EOF {
|
||||
break
|
||||
}
|
||||
|
||||
@@ -2,10 +2,11 @@ package tapo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strconv"
|
||||
|
||||
"github.com/AlexxIT/go2rtc/pkg/core"
|
||||
"github.com/AlexxIT/go2rtc/pkg/mpegts"
|
||||
"github.com/pion/rtp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func (c *Client) AddTrack(media *core.Media, _ *core.Codec, track *core.Receiver) error {
|
||||
@@ -14,17 +15,16 @@ func (c *Client) AddTrack(media *core.Media, _ *core.Codec, track *core.Receiver
|
||||
return nil
|
||||
}
|
||||
|
||||
w := mpegts.NewWriter()
|
||||
w.AddPES(68, mpegts.StreamTypePCMATapo)
|
||||
w.WritePAT()
|
||||
w.WritePMT()
|
||||
muxer := mpegts.NewMuxer()
|
||||
pid := muxer.AddTrack(mpegts.StreamTypePCMATapo)
|
||||
if err := c.WriteBackchannel(muxer.GetHeader()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.sender = core.NewSender(media, track.Codec)
|
||||
c.sender.Handler = func(packet *rtp.Packet) {
|
||||
// don't know why 68 and 192
|
||||
w.WritePES(68, 192, packet.Payload)
|
||||
_ = c.WriteBackchannel(w.Bytes())
|
||||
w.Reset()
|
||||
b := muxer.GetPayload(pid, packet.Timestamp, packet.Payload)
|
||||
_ = c.WriteBackchannel(b)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user