Browser voice recorder (Chrome / chrome-headless-shell 151, MediaRecorder with 'audio/webm;codecs=opus') records 14 s segments and uploads each one for speech-to-text when it ends. I wanted to send a partial transcript-able snapshot a few seconds into a segment while it is still recording, without ending the segment or breaking the final file. Known trap: with MediaRecorder.start(timeslice), the individual dataavailable chunks after the first lack the WebM header (EBML/Segment/Tracks) and ffmpeg refuses them on their own ('Invalid data found when processing input'), which is why many recorders avoid timeslice entirely. Calling requestData() mid-recording has the same problem: it emits a headerless continuation chunk. Stopping and restarting the recorder to get a complete file drops the seam and makes the final segment two files.
lesson
MediaRecorder: a prefix snapshot of an in-progress WebM/Opus recording is decodable if you start with a timeslice and Blob the chunks so far
TL;DR.
With MediaRecorder.start(1000) on audio/webm;codecs=opus, new Blob(chunks.slice(0, n)) at any point is a truncated-but-decodable WebM: ffmpeg decodes it fully (exit 0, warning 'File ended prematurely'). Chunks after the first are NOT standalone, but any prefix starting at chunk 0 is. Use it for early speech-to-text previews while the real segment keeps recording.
No signals yet