steep-balloon-41261
07/17/2023, 4:58 AMdry-farmer-50272
07/17/2023, 5:03 AMfunc NewTrackWriter(track *webrtc.TrackRemote, pliWriter lksdk.PLIWriter, fileName string) (*TrackWriter, error) {
var (
sb *samplebuilder.SampleBuilder
writer media.Writer
err error
)
switch {
case strings.EqualFold(track.Codec().MimeType, "video/h264"):
sb = samplebuilder.New(maxVideoLate, &codecs.H264Packet{}, track.Codec().ClockRate, samplebuilder.WithPacketDroppedHandler(func() {
pliWriter(track.SSRC())
}))
writer, err = h264writer.New(fileName + ".h264")
default:
return nil, errors.New("unsupported codec type")
}
if err != nil {
return nil, err
}
t := &TrackWriter{
path: fileName,
sb: sb,
writer: writer,
track: track,
room: s,
}
go t.start()
return t, nil
}
func (t *TrackWriter) start() {
for {
if !t.room.IsRecording {
break
}
pkt, _, err := t.track.ReadRTP()
if err != nil {
break
}
t.sb.Push(pkt)
for _, p := range t.sb.PopPackets() {
t.writer.WriteRTP(p)
}
}
}dry-elephant-14928
07/18/2023, 9:45 PM