batch-shipyard/recipes/FFmpeg-GPU
Fred Park b6044b3489
Update GPU support
- Update to Docker CE 19.03.1
- Use "native" Docker/containerd GPU support
- Breaking change in jobs configuration to allow arbitrary configuration
- Update docs
- Resolves #293
2019-08-08 20:36:41 +00:00
..
config Update recipes SSH username 2017-11-13 09:25:20 -08:00
README.md Update GPU support 2019-08-08 20:36:41 +00:00

README.md

FFmpeg-GPU

This recipe shows how to run FFmpeg for using hardware-accelerated encoding/transcoding on GPUs using N-series Azure VM instances in an Azure Batch compute pool.

Configuration

Please see refer to this set of sample configuration files for this recipe.

Pool Configuration

The pool configuration should enable the following properties:

  • vm_size must be a GPU enabled VM size. Because FFmpeg is for transcoding audio/video, you should choose an NV VM instance size.
  • vm_configuration is the VM configuration. Please select an appropriate platform_image with GPU as supported by Batch Shipyard.

Global Configuration

The global configuration should set the following properties:

  • docker_images array must have a reference to a valid FFmpeg NVENC GPU-enabled Docker image. The alfpark/ffmpeg:3.2.1-nvenc can be used for this recipe.

Jobs Configuration

The jobs configuration should set the following properties within the tasks array which should have a task definition containing:

  • docker_image should be the name of the Docker image for this container invocation, e.g., alfpark/ffmpeg:3.2.1-nvenc
  • command should contain the command to pass to the Docker run invocation. The following command takes an mp4 video file and transcodes it to H.265/HEVC using NVENC transcode offload on to the GPU: "-i samplevideo.mp4 -c:v hevc_nvenc -preset default output.mp4"
    • samplevideo.mp4 should be a file that is accessible by the task. You can utilize the resource_files on the task configuration for any number of files to be available to the task for processing.
    • hevc_nvenc informs FFmpeg to use the H.256/HEVC NVENC encoder. To encode with H.264 using NVENC specify h264_nvenc instead.
  • gpus can be set to all, however, it is implicitly enabled by Batch Shipyard when executing on a GPU-enabled compute pool and can be omitted.

Dockerfile and supplementary files

The Dockerfile for the Docker image referenced above can be found here.