gpu video transcodingVideo Transcoding on GPU

NVIDIA CUDA technology is a key for high performance imaging applications. It could be also applied to accelerate video transcoding solutions on GPU. We are developing highly optimized video transcoding software with GPU-accelerated video processing pipeline that significantly outperforms conventional CPU video processing pipelines in widely spread transcoding applications.

Video transcoding task should be solved to play video smoothly on different devices. That is why we need to convert source video to a new file with different quality, compression, format, etc. Usually it's done on CPU with FFmpeg software which supports huge number of codecs, filters and formats. One more important solution is Quick Sync Video from Intel, which is a dedicated hardware core on the processor die. NVIDIA GPUs have hardware-based NVENC module which is capable to encode and decode video with h.264 and h265 algorithms and much more. Performance of that solution is much higher than realtime. Moreover, one can process several streams on just one GPU at the same time. Such a solution is now a part of FFmpeg package and it also includes resize and multiple output resolutions as well.

FFmpeg and NVENC are great, but they are unable to deal with MXF files which have internal JPEG2000 compression. Such an options does exist at FFmpeg to do J2K decoding with CPU-based OpenJPEG library, which is very slow. Open JPEG is now multithreaded decoder, but it's still far from working in realtime even for 2K resolutions. You can try VLC or Windows Media Player to play MXF files on PC to see that they just can't do that smoothly. That's why we need to transcode source files from MXF format to MP4 with h264 compression.

Now we can do that on GPU by utilizing Fastvideo J2K decoder and NVIDIA NVENC encoder. As soon as NVENC can work in parallel with CUDA cores, we can do J2K decoding and h264 encoding at the same time. This is the way to improve total performance of transcoding.

GPU Transcoder Features

  • JPEG2000 decoding on GPU
  • High performance transcoding engine to process UHD 4K video in realtime
  • Video processing options: rotate, resize, sharp, color spaces, gamma, various output video formats, etc.
  • Scalable solution
  • Low latency output
  • Optional integration with FFmpeg
  • Compatibility with Windows-7/8/10 and Linux Ubuntu/CentOS/RHEL

MXF transcoding pipeline for J2K sources

  • MXF import and parsing
  • JPEG2000 decoding on GPU
  • Optional video processing: resize, sharp, color correction, bit depth and color space transforms, etc.
  • Output video encoding with NVENC for multiple resolutions

We have implemented that software as a part of our Image & Video Processing SDK. Our customers has opportunity to utilize GPU-accelerated SDK components to boost transcoding in their applications as a part of video processing pipeline.

Roadmap for GPU Live Transcoding

  • Date of release - Q1/2019
  • Further optimizations for transcoding pipeline
  • Live transcoding for raw data
  • Transcoder with built-in denoising option
  • Multi-process and multi-GPU solutions for transcoding

CPU vs GPU Video Encoding for H.264

We need to point out to some important differences at H.264 encoding on GPU and CPU. This is important scenario for transcoding solutions when initial and final streams are compressed according to H264 algorithm. GPU-based video encoding is usually optimised for high bitrate streaming rather than for playback. That's GPU encoding is usually done without B-Frames with constant bitrate. CPU-based x264 is mostly intended for playback and storage.

Contact Form

This form collects your name and email. Check out our Privacy Policy on how we protect and manage your personal data.