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
- Check packet != nil before calling WriteRTP
- Skip nil packets in the RTP receive loop instead of forwarding them to the writer
- 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.