ffmpeg and x265 benchmark CMD - help
#1
Question 
Greetings everyone and especial to Selur!

I need help with a command line with ffmpeg and x265.
I made this command line to create a "simple" command line that taxes the CPU to maximum load through a video encoding. (Windows)

Examples:

-working, but inoperable pipe. With temporary file and output file. have to run twice. (input-depth=10 not working)=

  ffmpeg -f lavfi -i nullsrc=s=4096x2160 -r 50 -filter_complex "geq=random(1)*255:128:128"  -t 2 out.y4m|x265 --input out.y4m --y4m --input-depth=8 --keyint=60 --ref=3 --bframes=4 --profile=main --preset placebo --crf 27 -o "video.hevc"


-not working, without temp/output files.=

  ffmpeg -loglevel verbose -y -f lavfi -i nullsrc=s=4096x2160 -r 50 -filter_complex "geq=random(1)*255:128:128" -t 2|x265 - --y4m --input-depth=8 --keyint=60 --ref=3 --bframes=4 --profile=main --preset placebo --crf 27 -o -


-working. only to generate the noise file=

  ffmpeg -f lavfi -i nullsrc=s=4096x2160 -r 50 -filter_complex "geq=random(1)*255:128:128" -c:v libx265 -b:v 5M -pix_fmt yuv420p10le -preset medium -tune grain  -t 20 ouput265_4k50fps10bitleMedium.ts


The purpose for this CLI project is to create a benchmark/stress test for a stability check on overclocked CPUs. I generally have a maxed CPU load on specific 10bit DVB-D TS streams, but it is hard to simulate this exact same load without having access to the source material. The user should not have to download gigabytes of video data to do this benchmark/stability test.

I have tried to simulate this load with a noise generator in ffmpeg (see above). So far, it does not work completely. The problem is, I cant pipe the generated noise video to x264. I guess the problem is a color space issue? I don't know exactly what options I have to use here to connect ffmpeg and x264. All my experiments to correct the problem ended in an error message.

I can make it work with a temporary file, but this is not what I intent to do. Ideally there should not be any files created, so even x265 should output to NUL, if this is possible. There are also some bottlenecks during encoding, so its still not fully working as intended, but this is fine tuning and should be solvable with the encoding options.

Is there a way to refine it to make it more elegant or to ensure to have a maximum CPU load with additional encoding options? I am not very firm in encoding options, so any suggestion in that department would be greatly appreciated.

Maybe there is another way to generate video noise? I also thought on an AviSynth script that outputs random video to feed the x265 encoder, but i couldn't find any function for it, yet.

tl;dr
need a working command line with ffmpeg as noise generator and x265 as encoder (in 10bit). All piped. Ideally without temp files and all routed to NUL

mfg

PS: sadly my old account here was deleted, so this is a new one with the old name. Well, this is what you get when you are inactive for years ... Big Grin
Reply
#2
No accounts were copied on the move from forum.selur.de to forum.selur.net Wink

You probably want:
ffmpeg -f lavfi -i nullsrc=s=4096x2160 -r 50 -filter_complex "geq=random(1)*255:128:128"  -t 2 -pix_fmt yuv420p -vsync 0  -f yuv4mpegpipe - | x265 --input - --y4m --ouput-depth=8 --keyint=60 --ref=3 --bframes=4 --profile=main --preset placebo --crf 27 -o "video.hevc"
assuming you want 4:2:0 output
and
ffmpeg -f lavfi -i nullsrc=s=4096x2160 -r 50 -filter_complex "geq=random(1)*255:128:128"  -t 2 -strict -1 -pix_fmt yuv420p10le -vsync 0  -f yuv4mpegpipe - | x265 --input - --y4m --output-depth=10 --keyint=60 --ref=3 --bframes=4 --profile=main10 --preset placebo --crf 27 -o "video.hevc"
if you want 10bit 4:2:0 output.

Instead of
-o "video.hevc"
use:
-o NUL
on Windows and
-o /dev/null
anywhere else.

Cu Selur
Reply
#3
A typical Selur response, ultra fast and spot on. Thank you very much sir! Smile

It works fine but I want to experiment with it a bit more...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)