From e8901ea4b8c2f0ae83d9fe54346879ef20144785 Mon Sep 17 00:00:00 2001 From: Takidog Date: Mon, 25 Aug 2025 22:18:20 +0800 Subject: [PATCH] Fix audio-only crash on sendVideoPacket --- internal/webrtc/whep.go | 5 +++++ internal/webrtc/whep_test.go | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 internal/webrtc/whep_test.go diff --git a/internal/webrtc/whep.go b/internal/webrtc/whep.go index 148980c8..ba0bbfde 100644 --- a/internal/webrtc/whep.go +++ b/internal/webrtc/whep.go @@ -161,6 +161,11 @@ func WHEP(offer, streamKey string) (string, string, error) { } func (w *whepSession) sendVideoPacket(rtpPkt *rtp.Packet, layer string, timeDiff int64, sequenceDiff int, codec videoTrackCodec, isKeyframe bool) { + // Skip if video track is not available (e.g., audio-only) + if w.videoTrack == nil || w.videoTrack.writeStream == nil { + return + } + if w.currentLayer.Load() == "" { w.currentLayer.Store(layer) } else if layer != w.currentLayer.Load() { diff --git a/internal/webrtc/whep_test.go b/internal/webrtc/whep_test.go new file mode 100644 index 00000000..7a4f4971 --- /dev/null +++ b/internal/webrtc/whep_test.go @@ -0,0 +1,12 @@ +package webrtc + +import "testing" + +func TestAudioOnly(t *testing.T) { + session := &whepSession{ + videoTrack: nil, + timestamp: 50000, + } + + session.sendVideoPacket(nil, "", 0, 0, 0, true) +}