Opus.Encoder in prism-media outputs raw Opus packets directly, no OGG wrapping. OggDemuxer was breaking the stream by trying to unwrap a non-existent OGG container. Pipeline was: PCM → Encoder → OggDemuxer → Discord (broken) Pipeline now: PCM → Encoder → Discord (correct) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>