Giter Site home page Giter Site logo

plotbitrate's Introduction

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 optionally 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

For using the script from source, install the requirements with pip install -r requirements.txt or use the requirements-dev.txt for development purposes.

Installation

pip install plotbitrate

Useful 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 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 useful 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 would lead to wrong graphs. This behavior can 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

plotbitrate's People

Contributors

jamesgkent avatar pszemus avatar rezun avatar zeroepoch avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.