Comments (6)
Instead of just documenting the speed, it might be useful with a separate comparison table/setup for "very fast" encoder settings. Currently there's two tables, one for offline use (with no limitation on runtime) and one for interactive use, where it is ok as long as it runs faster than realtime (is there any specification on what system is used for testing this, or does it vary?).
For some usecases it might be useful to know how different codecs behave with settings aimed at encoding much faster than realtime (e.g. processing of large numbers of streams in parallel on a single machine, or for aiming at very weak machines), so a comparison at speeds roughly comparable to x264 veryfast/ultrafast would be nice as well. In such a comparison, the OpenH264 results would probably look slightly less bad, since it's mostly comparable to x264 ultrafast, and doesn't have any settings for slower encodes and better quality/smaller files, other than enabling loopfilter and cabac.
from compare-codecs.
The table that considers encoding speed is the third table on the "results" page ("interactive results").
So far, I have not included openh264 here, because I wanted to get the simplest use case first.
But that use case also tries to encode at various rates, so the problems with rate control persist.
Note: I don't trust anything printed by the codec itself if I can avoid it. Encode CPU time is measured by calling times() before and after the encode and looking at the "child CPU usage".
from compare-codecs.
Correction: openh264 is already included in the third table.
Example result (against x264 baseline):
Typically, x264 encodes in between 6 and 9 seconds; openh264 encodes in approx 6 seconds.
Closing issue, since we've already considered the encoding speed.
from compare-codecs.
Yes I saw the real-time table, thanks; as mentioned above, sometimes it may be useful to have encoding faster than real-time, which may mean saving computational resources to other processing.
How about listing the running time retrieved from times() onto the results page as a reference? just as the info of "Typically, x264 encodes in between 6 and 9 seconds; openh264 encodes in approx 6 seconds." as a side note?
from compare-codecs.
The encode time is available in the mouse-over for each encoding.
I think it's worthwhile having one page per codec describing the codec, but I'd like to keep opinion text at a minimum in the results page itself - it is very hard to auto-update text like this.
The openh264 actually performs at a speed comparable to x264_base; consider these encode times on a 10-second clip (Cactus):
openh264 (CPU time is 3rd column, following are parameters)
d41d8cd98f00 -624.699000 11.38
4711dec1f2db 34.568000 11.8 -rc 2
b26cbc85d66f -624.699000 14.22 -rc 0
8769710044e3 -627.386000 14.77 -rc 1
b4cceb434567 -3997.671000 17.67 -rc -1
x264_base:
57b346db6a49 29.134960 8.87 --preset ultrafast --profile baseline --rc-lookahead 30 --tune psnr
377d87d68045 36.281970 11.5 --preset superfast --profile baseline --tune psnr
cc80e52b2f1c 36.692960 19.86 --preset veryfast --profile baseline --rc-lookahead 30 --tune psnr
So on this clip, openh264's performance is somewhere between --veryfast and --superfast, but quite a bit slower than --ultrafast.
(to reproduce this display with your own compare-codecs install:
list_config_results --codec x264_base --component encode_cputime 10000 video/mpeg_video/Cactus_1920x1080_50.yuv | sort -n -k 3
Numbers may depend on which tests you've run.)
from compare-codecs.
Thanks for the info. It is good to have detailed speed info. Yes the speed number varies with different sequences.
from compare-codecs.
Related Issues (20)
- Make Numpy warnings into errors
- Need to detect and delete illegal configurations from storage HOT 1
- RT mode configurations should disable multi-pass modes.
- ChangeValue should be CreateVariant
- Share results from different sites HOT 1
- AllEncoderFilenames returns bare filenames, not paths HOT 1
- MJPEG issue at certain settings HOT 1
- Clean out or ignore illegal parameters from shared repo
- Encoder version should be stored in results
- Database should store encodes with same parameter, differing versions
- Pages should offer a way to display different encoder versions' results HOT 1
- The run_all_tests script doesn't pick up all tests
- Support .y4m
- test_*BlackFrame* in various codecs can be centralized
- Verify_scores needs to use old DB to find "best"
- Split encoder.py
- Change "raise encoder.Error" into more specific error classes.
- Use aq-mode=3 as VP9 parameter in RT
- Investigate performance comparisions between VP9 in 1.3 and 1.6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from compare-codecs.