[FFmpeg-user] libvpx-vp9 (and libx264) not using all 4 real cores (no HT CPU)

D dcmhoybdpzkh at web.de
Fri Nov 27 13:29:31 CET 2015

Nevermind, libx264 isn't doing much better:

ffmpeg-git-20151124-64bit-static$ time ./ffmpeg -i a.mp4 -c:v libx264 
-crf 23 -threads 1 -c:a libvorbis b.mp4
real    9m14.621s

ffmpeg-git-20151124-64bit-static$ time ./ffmpeg -i a.mp4 -c:v libx264 
-crf 23 -threads 2 -c:a libvorbis b.mp4
real    4m50.477s
(up to here it scales well)

ffmpeg-git-20151124-64bit-static$ time ./ffmpeg -i a.mp4 -c:v libx264 
-crf 23 -threads 3 -c:a libvorbis b.mp4
real    3m44.058s

ffmpeg-git-20151124-64bit-static$ time ./ffmpeg -i a.mp4 -c:v libx264 
-crf 23 -threads 4 -c:a libvorbis b.mp4
real    3m22.623s

You can at least reply how your system performs using >=4 real cores.

On 26.11.2015 19:06, D wrote:
> Thanks. I added these options. However, I forgot to see and mention 
> that in both cases the output b.webm is corrupted.
> ffmpeg's output file is not corrupted but the 4-core usage is only at 
> the mentioned ~250%.
> So, yeah, vpxenc uses ~350% but file output is always corrupted and 
> ffmpeg uses only ~250% and file is not corrupted.
> Another problem is the filesize:
> Good -- 144MB: $ ./ffmpeg -i a.mp4 -c:v libvpx-vp9 -crf 23 -cpu-used 2 
> -threads 4 -c:a libvorbis a.webm
> Bad -- 18.8MB: $ ./vpxenc a.mp4 -o a.webm --codec=vp9 -w 1920 -h 1080 
> -p 1 --cpu-used=2 --threads=4 --end-usage=vbr --end-usage=cq 
> --cq-level=23
> The output file was still corrupted when trying a different input 
> file. No problems using ffmpeg (except for the only ~250% 4-core usage 
> of course). So, there's this other new problem now.
> Some of the settings I tried were from here: 
> http://www.webmproject.org/docs/encoder-parameters/ "10. Sample 
> Command Lines". You think they should be working. I tried e.g. adding 
> and removing "--i420" and "--yv12" both with "--codec=vp8" and 
> "--codec=vp9" and removing some of the other parameter but not a 
> single $vpxenc command produced a valid, non-corrupt, file.
> ---
> Now same test with latest master:
> $ make distclean
> $ git pull
> $ git checkout master
> $ ./configure
> $ make -j4
> I did less tries this time because if it produced a corrupt file on 
> the first command, the same is going to happen with other commands.
> Anyway this command e.g. did not work:
> /libvpx$ ./vpxenc a.mp4 -o a.webm --codec=vp9 -w 1920 -h 1080 -p 1 -t 
> 4  --good --cpu-used=2 --end-usage=vbr --end-usage=cq --cq-level=23
> Don't know why it's not working. May someone post their working 
> commands. Or as already asked, see how much % top displays with the 
> ffmpeg commands in the first post (a >=4-core CPU is needed).
> I'm not sure if VP9-v1.5 should not be more like VP9-v0.5-alpha.
> On 26.11.2015 16:59, Moritz Barsnick wrote:
>> On Thu, Nov 26, 2015 at 15:14:16 +0100, D wrote:
>>> It seems that --cpu-used is a bit similar to the -crf option. And
>> ffmpeg's "-crf" maps to vpxenc's "--cq-level=" and, in your use case,
>> "--end-usage=cq".
>> ffmpeg's "-cpu-used" maps to vpxenc's "--cpu-used".
>> I think "-threads" maps directly.
>> How do I know? I checked the source. ;-) If you use "-loglevel debug"
>> to ffmpeg, the libvpx encoder will also dump quite a lot of information
>> about the configuration it is using!
>> Just to make sure you have comparable options...
>> Moritz
>> _______________________________________________
>> ffmpeg-user mailing list
>> ffmpeg-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-user

More information about the ffmpeg-user mailing list