1

I am trying to figure out the sweet spot of maximizing FPS of encoding videos into h264/h265. I will be running some videos through Georges Vid.Stab library (https://github.com/georgmartius/vid.stab) to stabilize things like drone of GoPro footage, and others just re-encoding to h265 to reduce filesize / bandwidth used.

I stumbled across the DVE (https://github.com/Sonic-Y3k/dve) project, which is nice except it won't work with stabilizing videos as the process will divide up the original video into many subsets and ask multiple computers to encode them. While they would do the job, when the videos are stitched back together they lose the advantage of the stabilization at the stitching points as they don't have the info needed to say where the start frame "should" be compared to the other servers calculations.

I have also looked at the NVidia Grid, Intel Phi as coprocessors, which would be an option, but I haven't seen anywhere that they are actually supported by ffmpeg at this time.

A GeForce GTX 980 with Maxwell V2 seems like a good option, but I haven't seen any numbers that show the encoding of a file with the GPU accelerator vs without, nor do I know if that is a "good" card or if it is overpriced for what I need, or not enough.

I am currently running a Dell R720xd with 160GB RAM (1333MHz), dual Xeon E5-2690 processors on a RAID 1 with 20TB of storage. I have room for 2 full height / length PCI-E cards, and some half height as well.

I don't mind spending up around $1000 provided the benefits are real.

  • There are two stages here: applying the stabilization and encoding to H.265. You can run the vidstab analysis on the whole file and then in the 2nd command apply it and segment the processed result. This can be rawvideo or more likely a intermediate codec like DnXHD or ProRes..etc. These segmented files can then be encoded in parallel and stitched together. – Gyan Oct 31 '16 at 18:05
  • Thanks, I had considered that but worried that it wouldn't be able to segment the vidstab configuration file so the servers wouldn't know what to do with a 30 minute configuration file when only having access to 2-3 minutes of video. – Alan Nov 1 '16 at 15:24
  • You would be segmenting the file after the vidstab is applied. – Gyan Nov 1 '16 at 17:09
4

There is a special NVIDIA API that allows you to encode to h264/h265 called NVENC. It's now integrated into ffmpeg so using it is quite easy.

But before buying an NVIDIA card you should do/know the following:

  1. Check the NVENC hardware capabilities table from the NVIDIA VIDEO CODEC SDK APPLICATION NOTE - ENCODER cause h265 support is limited in Maxwell V2 card you've mentioned. You can also find average encoding speed (fps) there.
  2. There is an artificial limit of two for parallel encoding processes for GeForce cards (check the previous link for more details). If you want more (actually around 30 simulanious encoding streams) you should buy Quadro or, according to this beautiful answer, one can hack GeForce (hardware in fact is the same as in Quadro) which is, of course, illegal.
  3. With any hardware encoder you'll never get the same quality/size as you can get from x264.
  4. Also there is Intel QuickSync hardware encoder integrated in some of Intel's processors (not in your Xeon unfortunately) which I know nothing about, so you have to research this part yourself.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.