Giter Site home page Giter Site logo

danilhendrasr / video-decoding-benchmark Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 2.0 44.75 MB

Compare NVIDIA Video Codec SDK's, PyAV's, and OpenCV's performance on video decoding.

CMake 4.07% C++ 77.38% C 0.07% Cuda 0.25% Python 17.74% Shell 0.30% Dockerfile 0.19%
benchmark nvidia nvdec pyav opencv video-decoding cuda gpu video-processing video

video-decoding-benchmark's Introduction

Video Decoding Benchmark

A program to benchmark the performance of NVIDIA NVDEC (through VideoProcessingFramework), PyAV, and OpenCV (without hardware acceleration) on video decoding operation. The following metrics are observed:

  1. Frame Processing Time (the time it takes to decode 1 frame)
  2. CPU Utilization Across All Cores
  3. Memory Utilization
  4. GPU Utilization
  5. GPU Memory Utilization

Prerequisites

Running the Benchmark

  1. Make sure you got all the prerequisites on your system (see section above)
  2. Clone the repo
  3. Download NVIDIA Video Codec SDK and place the zip file in the root directory of this project
  4. Run git lfs pull to download the sample videos from GitHub's Git Large File Storage
  5. Build the docker image
    docker build -t videc-benchmark .
    2 build args are available:
    • PROJECT_PATH, to control where in the image you want this project to be copied to, this arg defaults to /videc-benchmark.
    • VIDEO_CODEC_SDK_VERSION, to specify which version of NVIDIA Video Codec SDK that you've downloaded from step 3, this arg defaults to 11.1.5.
  6. Run the docker image:
    docker run --gpus all -it --pid host videc-benchmark bash
  7. Enter the following command inside the container's terminal:
    scripts/run-benchmark.sh -i ./videos/45-seconds.mp4 -w $x
    Notes:
    • You should replace $x with an integer. The program will use the first $x frames as warmup during the benchmark, meaning it won't collect any data during the processing of the first $x frames.
    • The ./videos/45-seconds.mp4 part is the path to input file. You can look into the videos directory to see files that are available to be used as input.
  8. Copy the benchmark result from the container to the host:
    docker cp <container ID>:/videc-benchmark/benchmark-results ./<directory name>

Existing Report

I've done the benchmark previously and I've compiled a report document. Click here if you need to read it.

video-decoding-benchmark's People

Contributors

danilhendrasr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  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.