A 12 MP (4000 x 3000) sensor running at 30 fps produces an uncompressed payload near 2.88 Gbps at 24-bit color, and the on-camera ISP/encoder compresses that to a network bitrate in the 8-30 Mbps range depending on codec and scene motion [S2][S4].
The four inputs that drive the result are resolution, frame rate, codec (H.264 High Profile vs H.265/HEVC vs vendor "+" variants), and scene activity, with the codec and scene each moving the bitrate by a factor of 2-3x at the same resolution and fps [S2][S4]. Storage scales linearly off the network bitrate, so 1 Mbps continuous writes about 10.5 GB per day per the standard rule of thumb [S4].
Pixel rate and the codec efficiency step
A 12 MP sensor at 30 fps delivers 12,000,000 pixels x 30 = 360 megapixels per second, which is roughly 2.6x the pixel rate of a 1080p stream at the same fps and the starting point for any data rate calculation for machine-vision pipelines [S4][S5].
The encoder does not push all of those pixels onto the wire. H.265/HEVC cuts the bitrate to roughly 50% of H.264 High Profile at equivalent visual quality, and vendor extensions (H.265+, Wise Streaming, ZIP+) can drop it to about 35% of the H.264 baseline in low-to-moderate motion scenes [S4]. MJPEG, by contrast, encodes each frame as a separate JPEG, typically producing bitrates 3-5x larger than H.264 for surveillance scenes [S2].
H.264 vs H.265: the 12 MP @ 30 fps number
Using a typical 12 MP base bitrate near 12 Mbps at 30 fps on H.265 (vendor "medium" quality), H.264 High Profile at the same scene and fps lands around 24 Mbps, and MJPEG around 60-80 Mbps [S4].
Compressed bitrate for one 12 MP stream therefore sits in a practical band, with all three values being planning estimates rather than guarantees [S4]:
- H.265 / HEVC: roughly 8-15 Mbps per camera at 30 fps in a normal scene.<br>- H.264 High Profile: roughly 16-30 Mbps per camera at 30 fps in a normal scene.<br>- MJPEG: roughly 50-80 Mbps per camera, useful only on short, low-fps diagnostic streams.
For comparison, a 1080p H.264 CCTV camera at 30 fps typically consumes 2-4 Mbps in the same class of scene, so 12 MP H.264 is roughly 6-8x that figure and 12 MP H.265 is roughly 4x [S2].
Storage math: from Mbps to TB per day

The standard conversion is 1 Mbps continuous = 10.5 GB per 24 h, so a 12 MP H.265 stream at 12 Mbps writes about 126 GB per camera per day, while the same stream on H.264 at 24 Mbps writes about 252 GB per day [S4].
Run the math for a 30-day retention window on a 16-camera 12 MP @ 30 fps install, which is the common surveillance camera rollout size for warehouses and small sites [S1][S4]:
- H.265 at ~12 Mbps: 16 x 126 GB x 30 = ~60 TB raw, plus RAID overhead.<br>- H.264 at ~24 Mbps: 16 x 252 GB x 30 = ~121 TB raw, plus RAID overhead.<br>- H.265+ at ~8 Mbps (35% of H.264 baseline): 16 x 84 GB x 30 = ~40 TB raw [S4].
The "1 Mbps = 10.5 GB/day" rule assumes continuous recording; motion-triggered or VMD recording can cut this 60-80% in a typical parking-lot or loading-dock scene [S4].
Network and NVR sizing
NVR throughput is the binding constraint, not camera count. A practical 12 MP @ 30 fps install needs an NVR rated at 80 Mbps or more per incoming channel, with a total aggregate well above 16 x 24 Mbps = 384 Mbps for H.264 and 16 x 12 Mbps = 192 Mbps for H.265 to leave headroom for sub-streams and remote viewing [S1].
The uplink and switch backplane need the same headroom. An 8-camera 12 MP H.265 system at 30 fps needs about 96 Mbps of sustained uplink, so a single gigabit port handles it; the same system on H.264 needs about 192 Mbps, which still fits one gigabit link but starts to crowd PoE switch uplinks if more than one stack is used [S1][S4].
ONVIF itself does not move bits, so profile selection (Profile S vs Profile T) only matters insofar as the camera advertises its H.265 stream in a format the VMS can decode without a vendor plugin [S4].
Frame-rate scaling and the 12 MP throughput trap

Bitrate scales linearly with fps below the encoder's keyframe interval, so dropping a 12 MP camera from 30 fps to 15 fps roughly halves the bitrate, and dropping to 10 fps cuts it to about a third of the 30 fps value [S4].
The trap at 12 MP is that many NVRs advertise "12 MP support" but only at lower frame rates, and the sensor link budget (MIPI CSI-2, FPD-Link III) is often the real ceiling. TI's DS90UB960-Q1 deserializer reference design shows 36.16 fps as a typical 4-lane 12 MP ceiling for serializer-based smart camera modules, which is the same order of magnitude as the 30 fps target in this article and confirms the link math rather than the encoder math as the binding constraint at full frame rate [S5].
When the rule-of-thumb breaks
The 12 MP @ 30 fps H.265 = 8-15 Mbps band assumes a normal scene, fixed GOP, CBR or capped VBR, and a moderate I-frame interval. Outside those conditions the number moves fast: casino tables, license-plate capture at high shutter speed, and stadium parking lots routinely run 25-40 Mbps on H.265+ at the same resolution and fps because motion estimation cannot reuse enough blocks [S4].
Forensic use cases (license plate, face capture) almost always force H.264 or a tuned H.265 stream at higher bitrate, plus a separate low-fps thermal imaging camera or line scan camera channel for verification, because the wide dynamic range and motion blur on a single 12 MP stream will not survive court review at compressed bitrates [S4].
Next node: pull the actual encoder bitrate from the camera's VBR cap or CBR setting in the Web UI before sizing storage, and verify the NVR's per-channel record bandwidth spec against the worst-case scene, not the default 8 Mbps preset. Watch for the 12 MP / 30 fps flag on the NVR datasheet, since several 2024-2026 NVR models list 12 MP only at 20 fps and silently down-convert above that.
For related coverage, see CC vs CV arc welding power sources: selection map for SMAW, GTAW, MIG/MAG and FCAW.