lisamelton / other_video_transcoding

Other tools to transcode videos.
MIT License
549 stars 25 forks source link

Average FPS? #29

Closed wintervaler closed 3 years ago

wintervaler commented 4 years ago

Well - I'm on coronavirus-inspired rabbithole and I wasn't sure where else to ask this.

Put this down in the “I’m just curious” column. Have you guys done any comparison in terms of average speed with other-transcode across different Intel CPUs?

I’m running my transcodes on an 8th-gen Intel Celeron with a correspondingly low passmark score, and I’m usually averaging somewhere south of ~45 FPS / 1.5-1.9x speed on my Blu-rays (using HEVC - the odd part is it’s not that much different for h.264 - though h.264 is limited to VAAPI as I’ve described in another issue issue post). This is, to be honest, not bad for me considering I bought the Celeron box for $100 and I had no beefy transcoding power before (an hour for Blu-ray conversions beats 3 hours, for sure!)

That said - I assume some are getting way speedier results when transcoding their Blu-rays (I saw some on Twitter saying FPS was in the hundreds? I think I can only crack 100 if it’s a DVD rip that I’m crunching, but never for HD content). I’d love to see how my results compare to a beefier i5 or even an i3, as I could theoretically upgrade the CPU in my transcoding box to a different 8th-gen processor and of course the restless part of my brain is thinking about whether that’s worth it…

I realize there’s variation depending on the movie, but - are there any existing comparisons or anecdotal evidence any of the team would be able to share? I’d be interested in starting to put together a results table on what different processors are capable of, even if it’s not standardized around one specific job/movie title - just general output results on an average transcode job.

lisamelton commented 4 years ago

@wintervaler This is a great question! Thanks for asking.

I typically get 125-175 fps transcoding full-size Blu-ray rips over a slow network connection to 10-bit HEVC using the Nvidia GPU on my GeForce GTX 1080 Ti card. My old Intel Core i7-6700K CPU can't do HEVC but it can get over 300 fps transcoding some Blu-ray rips to H.264. Although typically that number is more like 250 fps.

Is that the kind of information you were looking for?

jaromirrivera commented 4 years ago

I have been trying some transcodes from full-size Blu-ray rips on my MacBook Pro (Core i7 9750H w/ Intel 630 GPU) on Boot Camp and getting 80-100 FPS with 10-Bit HEVC... Transcoding 4k UHD Rips to 10-Bit HEVC is like 19 FPS...

lisamelton commented 4 years ago

@jaromirrivera Wow! That's better HEVC performance than I would have thought you could get with that setup. And, BTW, transcoding UHD content is problematic anyway due to color issues.

khaosx commented 4 years ago

@wintervaler I have an i9 9900k paired with a 1660ti. When I do 10-bit HEVC encodes, I get around 130fps. When I do h.264, I hit in the 160-180fps range, depending on input. I use the nvenc modules for both.

wintervaler commented 4 years ago

These are really helpful and interesting. Thanks for the responses guys! Seems like those Nvidia cards really crank...

khaosx commented 4 years ago

These are really helpful and interesting. Thanks for the responses guys! Seems like those Nvidia cards really crank...

We discovered early on that a good GPU is the key for a transcoding box. It makes WAY more impact than the CPU.

asheimo commented 4 years ago

I run a GTX1060 now but with my previous GTX950 I was getting ~50-150fps depending on input and output. Might be worth looking up something in the 9xx series on eBay, they’re pretty cheap.

samhutchins commented 4 years ago

Ryzen 7 1700X + Nvidia GTX 1660, 125-130 fps for 10-bit HEVC. I've not extensively tested h.264 with this.

FWIW, I got around 100fps using x264 software encoding with that CPU

rhapsodians commented 4 years ago

Typically, we're seeing that the older Pascal NVEnc chips (e.g. 1060/1070/1080, Quadro P1000 etc.) give around the 150-175fps for --hevc --nvenc whereas newer Turning NVEnc chips are slower showing around 130-135fps (even thought they are 'faster' in other areas like h/w accelerated b-frame and fast profile streaming which aren't part of the solution here).

The interesting part is, as far as we can tell through lots of testing, there's little or no difference from the cheapest Pascal card compared to the most expensive. Ditto for Turing. So a $200 1650 Super (Turing) will give almost the same transcoding performance as a $1500 2080 Super.

rhapsodians commented 4 years ago

Any of the Pascal or Turing cards listed here will give performance figures above ... the matrix below is helpful (but avoid the old Volta-based GTX1650)

https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

lisamelton commented 4 years ago

@rhapsodians Yeah, the performance curve is weird. But beneficial for us hobby transcoders with those prices. :)

willie commented 4 years ago

Along the lines of performance discussion, I was wondering what hardware other-transcode would perform the best on; has anyone tried running this with an iOS version of ffmpeg driving VideoToolbox?

lisamelton commented 4 years ago

@willie Not that I know of. And since other-transcode is a command line tool, I suspect it would be problematic.

willie commented 4 years ago

@donmelton I didn't think about the difference between the ffmpeg tool vs the library. I should find a Mac with a T2 chip in it to see how it performs as a metric.

martinpickett commented 4 years ago

A comment on @wintervaler's original question. By default other-transcode uses the CPU to decode the input file before passing that information to the GPU (in your case an integrated GPU) to encode. It is possible on low powered CPUs such as yours, that the bottleneck on performance is the decode rather than the encode. To test this theory you can try running a test with --decode all in your command. This should force other-transcode to use your iGPU to decode as well as encode.

The reason that this is not the default setting is that if you have a high performance CPU you can decode faster on the CPU than on the GPU, so enabling this setting could slow your encode. But for you it could speed it up.

wintervaler commented 4 years ago

@martinpickett That is really useful, thank you. Interestingly, that didn't help my HEVC transcoding speed at all - still hovering a little under 50 fps. But comparing two h.264 encodes - one with --decode all and one without - --decode all ended up more than doubling my output speed, to around 115-125 fps. The test without hardware decoding hovered around 50 fps.

Complicating this is the fact that I must fall back to VAAPI for h.264 transcodes (I'm a Linux user, at least on the transcoding box) while QSV works just fine for HEVC, as mysteriously outlined in a previous other-transcode issue post. So I'll also test VAAPI HEVC encodes and see if there's any diff between those two with hardware decoding and report back.