Encoding-Quality-Testing
Created with the voctoquality repo.
Reference content
Reference content is either our own (https://media.ccc.de) or from Xiph (https://media.xiph.org/video/derf/).
The specific sources are found in https://github.com/voc/voctoquality/blob/master/data/sources.json
All the reference content is converted to 8bit 1080p25.
Software
- ffmpeg-4.1.4 (same as in buster)
- libvmaf-1.3.15
- libvpx-1.8.2 (bullseye)
- libx264-2:0.155.2917+git0a84d98-2 (bullseye)
Testing VAAPI vs. software encoding for live streaming
The codec settings are the ones currently in use by the C3VOC for live streaming.
See https://github.com/voc/voctoquality/blob/master/data/profiles/voc_streaming.py for the specific ffmpeg options.
The codecs are tested with bitrates from 1Mbit/s to 5.2Mbit/s.
Graphs
Comments
Platform | Label | Hardware Codecs | Comments |
---|---|---|---|
Intel 6th Gen (i7-6600U) | skylake | h.264, h.265 | h.264 scores better than our VP9 and x264 streaming settings and is pretty fast h.265 even scores a little bit higher but is considerably slower |
Intel 8th Gen (i7-8665U) | whiskeylake | h.264, h.265, VP9 | h.264 and h.265 results worse but faster than skylake, have to check whats up with that VP9 scores worse than H.264 and has broken rate-control for <2mbit/s |
AMD Navi (RX 5700 XT) + Ryzen 2nd Gen (R5-2600) | navi10 | h.264, h.265 | h.264 is worse than x264 on veryfast… h.265 produces 1920×1088 output? |
Nvidia Turing (RTX2080 Super) | turing | h.264, h.265 | nvidia-driver-460, cuda-toolkit 9.1.85 best h.265 encode, h.264 behind Intel |
Finding a Tracker VP9 Profile
HD-Profile
Goals:
- improve quality over previous libvpx (VP8) profile
- don't increase encoding time too much
- smaller size but similar quality as x264 master
Notes:
- realtime + speed ⇐ 3: slower and worse than quality good
-i $ref -c:v libvpx-vp9 -quality:v good -crf:v 30 -b:v 6000k -maxrate:v 8000k -minrate:v 2000k -row-mt 1 -frame-parallel:v 1 -tile-columns:v 2
SD-Profile
- worse parallelization and therefore speed than HD-profile
- worse rate-control than HD-profile (doesn't reach target bitrate)
- bufsize doesn't change anything
- no threads parallelizes best
- frame-parallel doesn't work (frame too small?)
- bitrate with crf is more like maxrate