Skip to main content

PlotBitrate

FFProbe Bitrate Graph

This project contains a script for plotting the bitrate of an audio or video stream over time. To get the frame bitrate data ffprobe is used from the ffmpeg package. The ffprobe data is streamed to python as xml frame metadata and optionaly sorted by frame type. Matplotlib is used to plot the overall bitrate or each frame type on the same graph with lines for the peak and mean bitrates. The resulting bitrate graph can be saved as an image.

Possible outputs are:

  • Image types (png, svg, pdf, ...)
  • Raw frame data (csv, xml)

Requirements:

  • Python >= 3.5
  • FFMpeg >= 1.2 with the ffprobe command
  • Matplotlib python 3 library (install: python3 -m pip install -U --user matplotlib)

Installation

pip install rezun-plotbitrate

Usefull Options

The raw frame data can be stored in an xml file with the option -f xml_raw, which the graph can be plotted from. This is useful if the graph is should be shown multiple times with different options, as the source file doesn't need to be scanned again.

The option --downscale (or -d) is usefull if the video is very long and an overview of the bitrate fluctuation is sufficient and zooming in is not necessary. This behavior resembles that of the tool "Bitrate Viewer". With this option, videos will be shown as a downscaled graph, meaning not every second is being displayed. Multiple seconds will be grouped together and the max value will be drawn. This downscaling is not applied when viewing individual frame types as this woud lead to wrong graphs. This behavior cann be adjusted with the --max-display-values option. The default value is 700, meaning that at most 700 individual seconds/bars are drawn.

Usage Examples

Show video stream bitrate in a window with progress.

plotbitrate input.mkv

Show downscaled video stream bitrate in a window.

plotbitrate -d input.mkv

Show video stream bitrate for each frame type in a window.

plotbitrate -t input.mkv

Save video stream bitrate to an SVG file.

plotbitrate -o output.svg input.mkv

Show audio stream bitrate in a window.

plotbitrate -s audio input.mkv

Save raw ffproble frame data as xml file.

plotbitrate -f xml_raw -o frames.xml input.mkv

Show bitrate graph from raw xml.

plotbitrate frames.xml

Metadata

Release files for rezun-plotbitrate 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for rezun-plotbitrate 1.0.6
File Interpreter ABI Platform
rezun_plotbitrate-1.0.6-py3-none-any.whl Python 3 none any Details

Release files / rezun_plotbitrate-1.0.6-py3-none-any.whl

Download URL rezun_plotbitrate-1.0.6-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c873b65cfc7e3a0f1895773ea881ce07e311c7e89fee0063232f2adbe659d6ff
BLAKE2b-256 checksum
How to use checksums
6d642ba5e0faf9cc9c20951800a250296f0da7d94b9dbca27d1b197aebcb978c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.7

Release history Release notifications | RSS feed

This release

1.0.6 This release

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page