Media Recording
Some players never hand over a file. The video arrives as media buffers inside the page, the stream is encrypted, or the site simply hides every request worth grabbing. FlowPick's recorder covers that gap: it captures the video while you watch it and saves an ordinary MP4 or WebM file.
There are two modes, and they solve different problems. MSE (Buffer Mode) copies the media data the player feeds to the browser, so nothing is re-encoded. MSR (Screen Recording) records rendered pixels and audio, which works on almost anything you can see, at the cost of a re-encode.
Screenshot placeholder:
media-recorder-mode-dialog.png— the FlowPick popup toolbar with the camera (Recording Mode) button highlighted, and the Recording Mode dialog open with the MSR and MSE options visible.
Choosing a Mode
| MSE (Buffer Mode) | MSR (Screen Recording) | |
|---|---|---|
| What it captures | Media buffers the player appends to the page | Rendered pixels plus shared audio |
| Quality | Identical to the source stream, no re-encode | Re-encoded from what you see, up to 4K |
| File size | Close to the source bitrate | Larger, encoded on the fly (1–10 Mbps) |
| Source tab | Reloaded once, then played automatically | Left alone, only its playback state is tracked |
| Audio | Taken from the media buffers | Tab audio, or whatever you share in the picker |
| Output | .mp4, or .webm for WebM sources | .webm |
| Best for | Download-blocked players without DRM | Sources MSE cannot capture, or a whole page |
Start with MSE. It is faster, it keeps the original quality, and it produces a file that plays everywhere. Switch to MSR when the recorder reports no captured data, when the merged file refuses to play, or when you need something MSE cannot reach — a player that writes frames directly to a canvas, for instance.
Before You Start
- Chrome or Edge 102+ for full support. MSR's automatic tab capture uses the
tabCaptureAPI, which Firefox does not implement, so Firefox falls back to the browser's own source picker. - Start from the extension. The recorder tab needs a live channel to the extension; opening the recorder page directly gives you
No recording channel was found. - The active tab is the source. FlowPick records the tab you are looking at when you open the popup, so switch to the video first.
- Keep both tabs open. The source tab and the recorder tab must stay alive for the whole session. Closing either one ends the recording, and the recorder warns you before you navigate away.
- One recording per tab. Starting a second recording for the same tab shuts down the previous session.
- DRM content cannot be recorded. If the stream is protected with EME (Netflix, Disney+, and similar), what the player appends is encrypted, so the captured file will not play.
- Mind your RAM. Captured data lives in the recorder tab's memory until you stop. A two-hour recording holds two hours of data; for long sessions, record in parts and download each one.
MSE (Buffer Mode)
Open the page and start the video once
Confirm the player works in your browser, then pause it.
Click the FlowPick icon
Then click the camera button in the popup toolbar.
Select MSE (Buffer Mode)
Tick Set as default mode if you want to keep this as your default, then click Start Recording.
Wait for the recorder to take over
FlowPick reloads the source tab and starts playback for you. The recorder shows Waiting for playback, then switches to Recording as soon as media data arrives.
Click Stop and prepare files
Preview the result, then click Download recording.
Screenshot placeholder:
media-recorder-mse-live.png— the recorder page in MSE mode while capturing: source title, "Recording" badge with elapsed time, the REC pill, and the Duration / Captured / Tracks counters.
What Happens Behind the Scenes
MSE players (hls.js, dash.js, Shaka Player, and most custom players) push segments into a SourceBuffer. FlowPick hooks that path before the player is created, so every segment a page appends is copied out to the recorder as it plays:
- The hook must be in place before the player creates its
MediaSource, which is why the source tab is reloaded when the session starts - Each track (
video/mp4,audio/mp4,video/webm, …) is captured separately and listed under Captured tracks on the recorder page - The container initialization segment (the
ftyp/moovheader for MP4, the EBML header for WebM) is kept and attached to the beginning of each track, so the merged file is playable even if you started recording in the middle of a video
Recording Follows Playback
The recorder is not a screen recorder: it only sees data while the player is actually streaming. Pause the video and the recorder goes back to Waiting for playback; press play and it resumes. A paused video therefore costs you no recording time and no memory.
Two practical consequences:
- Speed things up with playback speed. Watching at 2× collects the same data in half the wall-clock time.
- Skipping ahead is fine. Dragging the progress bar past the buffered range makes the player request segments faster, and those segments are captured too — as long as the player does not switch resolution while doing it.
Pick One Resolution and Keep It
Switching quality mid-playback (or letting an adaptive player do it for you) makes the player rebuild its tracks. FlowPick treats each rebuild as a separate capture, and the merged file is built from the largest coherent capture — so the parts recorded before and after the switch do not end up in one timeline. Set the quality to a fixed resolution before you start.
Why the Source Tab Reloads
The capture hook has to run in the page before the player does, and only a fresh page load guarantees that. FlowPick reloads the source tab, re-enables capture, and triggers playback so you do not have to switch tabs yourself. Refresh the source tab during a recording and you lose everything captured so far.
MSR (Screen Recording)
Open the page and start the video
Start playback so the player initializes, then pause it.
Click the FlowPick icon
Then click the camera button and select MSR (Screen Recording).
Click Start Recording
On Chrome and Edge, FlowPick captures the tab for you — no picker. If the API is unavailable (Firefox, or a lost permission), the recorder shows Choose what to record instead and asks you to pick a tab, window, or screen.
Click Stop and prepare files
Then download the .webm file.
Screenshot placeholder:
media-recorder-msr-picker.png— the browser's source picker with Share tab audio enabled, next to the recorder page showing the "Choose source and record" button.
Automatic Tab Capture
On Chromium browsers, MSR records the source tab without any dialog. The stream ID comes from the extension, so you get the tab's own audio along with its video, and the recorder plays that audio back locally so you can still hear the video while recording.
The Fallback Source Picker
When automatic tab capture is not available, the recorder hands control to the browser's picker:
- Choose this tab if the video plays in the source tab and you want its audio
- Choose window or entire screen if you need to capture more than one tab
- Tick Share tab audio (or Share system audio) if you want sound. Without it, the recording is silent — and this cannot be fixed after the fact
Auto-Crop
MSR records the video area, not the whole tab. The extension outlines the playing video on the source page with a FlowPick MSR recording area marker, and the recorder crops to that rectangle — so sidebars, comment feeds, and black bars stay out of your file. If the page has no playable video element, the full capture area is used instead.
Screenshot placeholder:
media-recorder-msr-region.png— a video page with the "FlowPick MSR recording area" outline drawn over the player, captioned to show what the crop keeps.
Output Size
MSR re-encodes pixels, so the file is sized by resolution rather than by the source bitrate. Recording samples the capture at 30 fps (a 60 fps tab capture would roughly double the file size for very little visible gain) and picks a bitrate tier:
| Capture area | Video bitrate |
|---|---|
| Up to 640 × 360 | 1 Mbps |
| Up to 1280 × 720 | 2 Mbps |
| Up to 1920 × 1080 | 3.5 Mbps |
| Up to 2560 × 1440 | 6 Mbps |
| Larger | 10 Mbps |
Audio is encoded at 128 Kbps. A 10-minute 1080p recording lands around 270 MB.
While You Record
- Pause when the video pauses. Both modes follow the source tab's playback state, so pausing the video also pauses the recording and freezes the elapsed timer.
- Do not close either tab. Keep the recorder open until the file is ready; closing it mid-session throws the capture away.
- Watch the counters. Captured shows how much data has arrived and Tracks how many media tracks are being captured. If Captured stays at 0 B while the video plays, MSE is not seeing anything — stop and try MSR.
- Avoid full-range seeking with quality switches. Fast, aggressive seeking across resolution boundaries is the most common way to end up with a file that only contains part of the video.
- Record what you need. There is no trim step in the recorder, but the output file can be trimmed with Video Trimmer afterwards.
The Result File
File Names
The recorder names the file after the source tab's page title, with characters that are invalid in file names replaced and the title capped at 100 characters. Extensions follow the mode: .mp4 for MSE on MP4 sources, .webm for MSE on WebM sources and for every MSR recording.
How Tracks Are Merged
When you stop an MSE recording, the recorder picks the most complete group of tracks it captured and muxes video and audio into a single file:
- Groups that contain a proper MP4 initialization segment are preferred over groups that do not
- An audio track that never received its initialization segment is dropped, and the merge is logged to the console — a video-only file is better than a broken one
- The merge writes playable metadata into the output, which is why even a partial capture plays in a normal player
Preview and Save
The finished file is previewed inside the recorder page, and it stays in the tab's memory until you download it. Click Download recording before you close the tab — a closed tab or a browser restart discards the result.
Screenshot placeholder:
media-recorder-complete.png— the recorder page in its complete state: green success badge, file card with name, embedded preview player, and the Download recording button.
Troubleshooting
| What you see | What it means | What to do |
|---|---|---|
No recording channel was found | The recorder page could not reach the extension within 10 seconds | Start the recording again from the extension popup instead of opening the page directly |
The recording session has expired | The session ID no longer matches an active recording | Start a new recording from the popup |
The source tab was closed before any media data was captured | The source tab is gone | Reopen the page and record again |
No recording data was produced | Nothing was captured — usually a player that does not use MediaSource, or a very short session | Try MSR (Screen Recording) instead |
The captured tracks could not be combined into a playable file | The capture is missing initialization data or mixes incompatible segments | Re-record with a fixed quality, avoiding seeks during the first seconds |
Screen sharing was cancelled or not allowed | The picker was dismissed, or capture was denied | Retry and allow the source; grant tab-capture permission if asked |
This browser does not support screen recording | The browser lacks MediaRecorder or capture APIs | Use a current Chrome, Edge, or Firefox |
The recording could not be stopped cleanly | The stop command failed between the page and the extension | Download whatever the recorder previewed, then start a fresh session |
| Captured stays at 0 B | MSE saw no appends — often DRM, encrypted buffers, or a canvas-based player | Switch to MSR |
MediaSource after an error, and a clean load fixes it.Frequently Asked Questions
Can I record a live stream?
Not reliably. MSE capture records whatever the player buffers while you record, but a live stream has no end-of-stream marker, so the merged file often will not play back correctly. MSR can record a live view, but the result ends when you stop.
Why is my recording silent?
Either the source has no separate audio track that MSE could capture, or — in MSR — audio sharing was not enabled in the picker. In the second case, nothing can be recovered from the finished file and you have to record again.
Why does my file only contain part of the video?
The player switched resolution, rebuilt its MediaSource, or the page inserted an ad. Each rebuild starts a new capture, and only one coherent group is merged. Pin the quality to a single resolution and avoid seeking across resolution changes.
Does recording slow down the browser?
MSE capture only copies buffers the page already produced, so the overhead is mostly memory. MSR re-encodes video in real time, which does cost CPU — the higher the capture resolution, the more it costs. If MSR makes playback stutter, capture a smaller area or use MSE instead.
Is anything uploaded?
No. Both modes run entirely in your browser: MSE data moves between the page, the extension, and the recorder tab on your machine, and MSR is encoded locally. Nothing is sent to a server, and FlowPick has no copy of your recording.
Can I record a paid streaming service?
No. Streaming services encrypt their media with DRM, so what gets captured is encrypted data that no player can open. FlowPick does not attempt to bypass DRM.
Privacy
Recording stays on your device from start to finish. Captured buffers travel only between the source tab, the extension's background process, and the recorder tab; the screen stream in MSR never leaves the page either. FlowPick stores nothing on a server and keeps no copy of your files.
Search & Filter
URL search (fuzzy and regex), type and size filters in the FlowPick popup, and how to combine them to locate resources quickly.
Online Tools
M3U8/HLS and MPD/DASH streaming downloaders that work without installing extensions — get stream URL, paste it, select quality, download with one click.