https://github.com/livekit/webrtc-vmaf
VMAF benchmarking tool for WebRTC codecs
https://github.com/livekit/webrtc-vmaf
Last synced: 11 months ago
JSON representation
VMAF benchmarking tool for WebRTC codecs
- Host: GitHub
- URL: https://github.com/livekit/webrtc-vmaf
- Owner: livekit
- License: apache-2.0
- Created: 2023-07-03T01:12:30.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-23T00:01:08.000Z (almost 3 years ago)
- Last Synced: 2023-08-23T03:56:22.939Z (almost 3 years ago)
- Language: Python
- Homepage: https://livekit.io/webrtc/bitrate-guide
- Size: 15.6 KB
- Stars: 3
- Watchers: 12
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WebRTC VMAF Analysis Tool
This tool is designed to perform [VMAF analysis](https://github.com/Netflix/vmaf) for WebRTC video codecs.
WebRTC video, due to its real-time requirements, is often less efficient compared to the encoder's full potential. Part of the reason is due to the limited number of frames that can be kept in the encoder's frame buffer. As a result, when video is encoded with a low-latency profile, it tends to forgo some bitrate efficiency compared to the maximum capabilities of the codecs.
This presents a dilemma for WebRTC application developers: what bitrates should be used to ensure high-quality encoding?
`webrtc-vmaf` is a python script that answers that question:
- takes in a source video, and encodes it using a real-time profile, similar to settings used in WebRTC
- computes VMAF score comparing the encoded version to the original input
- performs resizing and framerate adjustments dynamically
- supports all video codecs used in WebRTC: H.264, VP8, VP9, and AV1
## Installation
Requires Python 3 and FFMPEG to be installed
```
git clone https://github.com/livekit/webrtc-vmaf.git
```
## Usage
### Computing VMAF for a single input
```
% ./webrtc-vmaf.py --bitrate 1500 --width 1280 --height 720 --codec vp9
computing VMAF for vp9 at 1500
FourPeople_1280x720_60.webm: 92.25438 fps: 281
VMAF: 92.25438 fps: 281
```
### Computing VMAF for multiple input files
If multiple files are given, it would also generate an average VMAF score for the different inputs.
```
% ./webrtc-vmaf.py --bitrate 1500 --width 1280 --height 720 --codec av1
```
### Comparing different bitrates
You can also pass in multiple bitrate flags for it to compute VMAF scores for them separately
```
% ./webrtc-vmaf.py --bitrate 1200 --bitrate 1300 --bitrate 1400 \
--width 1280 --height 720 \
--codec av1
```
### Using example clips
`download_files.sh` will download about 10GB of source clips from xiph.org. The clips are organized
into four categories:
- video conferencing
- sports
- gaming
- natural