This message was deleted.
# helpdesk
s
This message was deleted.
d
here is the code that I wrote :
Copy code
func 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)
		}
	}
}
d
@dry-farmer-50272, The RTP packets definitely carry a proper timestamp. the problem is those cannot be stored in a H.264 bitstream. to save files properly, take a look at TrackEgress