pion/webrtc · error

invalid nil packet

Error message

invalid nil packet

What it means

WriteRTP rejects a nil *rtp.Packet argument (or a packet with nil inner payload structures); it is a generic nil-guard so the writer never dereferences a nil packet while depacketizing VP8/VP9/AV1 payloads. Note an empty (non-nil) packet payload is silently ignored, not an error.

Source

Thrown at pkg/media/ivfwriter/ivfwriter.go:20

func (i *IVFWriter) WriteRTP(packet *rtp.Packet) error {
	if i.ioWriter == nil {
		return errFileNotOpened
	} else if len(packet.Payload) == 0 {
		return nil
	}

	if i.count == 0 {
		i.firstFrameTimestamp = packet.Timestamp
	}

	var timestamp uint64
	if i.directPTS {
		// Direct PTS mode: use RTP timestamp directly (no millisecond conversion).
		timestamp = uint64(packet.Timestamp - i.firstFrameTimestamp)
	} else {
		// Existing behavior: convert to milliseconds first.
		timestamp = 1000 * uint64(packet.Timestamp-i.firstFrameTimestamp) / i.clockRate
	}

	switch i.codec {
	case codecVP8:
		return i.writeVP8(packet, timestamp)
	case codecVP9:
		return i.writeVP9(packet, timestamp)
	case codecAV1:
		return i.writeAV1(packet, timestamp)
	default:
		return errCodecUnset
	}
}

View on GitHub (pinned to 8c25dc09fa)

Solutions

  1. Check packet != nil before calling WriteRTP
  2. Skip nil packets in the RTP receive loop instead of forwarding them to the writer
  3. If using SampleBuilder, ensure it never emits nil packets
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/media/ivfwriter/ivfwriter.go:20 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pion/webrtc@8c25dc09fa (2026-09-03). Data as JSON: /api/errors/95adeddd8fa26da2. Report an issue: GitHub.