You can't just butt packets from different streams together, that's true, but that's now what you're doing.
Did you mean to use the word "not" in that sentence instead of "now"? If so, it changes the meaning entirely.
I have opusinfo running on Windows now so it's a lot easier. Here is what I get writing just one opus file. No warnings, no errors:
Processing file "OpusTestStreamChris.opus"...
New logical stream (#1, serial: 00000001): type opus
Encoded with libopus 1.1
User comments section follows...
ENCODER=opusenc from opus-tools 0.1.8
ENCODER_OPTIONS=--serial 1 --quiet --comp 0 --ignorelength
Opus stream 1:
Pre-skip: 316
Playback gain: 0 dB
Channels: 1
Original sample rate: 44100Hz
Packet duration: 20.0ms (max), 20.0ms (avg), 20.0ms (min)
Page duration: 1000.0ms (max), 510.0ms (avg), 20.0ms (min)
Total data length: 9951 bytes (overhead: 9.51%)
Playback length: 0m:00.999s
Average bitrate: 79.61 kb/s, w/o overhead: 72.04 kb/s
Logical stream 1 ended
Here is what I get writing things twice to the same file. It's the same code executed twice, same input file and all. Just butting two files together. No HTTP headers anywhere.
Processing file "OpusTestStreamChris.opus"...
New logical stream (#1, serial: 00000001): type opus
Encoded with libopus 1.1
User comments section follows...
ENCODER=opusenc from opus-tools 0.1.8
ENCODER_OPTIONS=--serial 1 --quiet --comp 0 --ignorelength
Opus stream 1:
Pre-skip: 316
Playback gain: 0 dB
Channels: 1
Original sample rate: 44100Hz
Packet duration: 20.0ms (max), 20.0ms (avg), 20.0ms (min)
Page duration: 1000.0ms (max), 510.0ms (avg), 20.0ms (min)
Total data length: 9951 bytes (overhead: 9.51%)
Playback length: 0m:00.999s
Average bitrate: 79.61 kb/s, w/o overhead: 72.04 kb/s
Logical stream 1 ended
WARNING: illegally placed page(s) for logical stream 1
This indicates a corrupt Ogg file: Page found for stream after EOS flag.
WARNING: sequence number gap in stream 1. Got page 1 when expecting page 4. Indi
cates missing data.