Skip to content

romansavrulin/ffmpeg-cuda-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NVIDIA accelerated ffmpeg with docker 19.x

Build Status Dockerhub link

Inspired by https://github.com/dl-container-registry/ffmpeg

Features

NVENCODE (nvenc) and NVDECODE (formerly CUVID) are packaged in the NVIDIA Video Codec SDK.

Hardware Accelerated Encoders:

List options of an encoder using ffmpeg -h encoder=XXXX

  • h264_nvenc, nvenc, nvenc_h264
  • nvenc_hevc, hevc_nvenc

Hardware Accelerated Decoders:

List options of a decoder using ffmpeg -h decoder=XXXX

  • h264_cuvid
  • hevc_cuvid
  • mjpeg_cuvid
  • mpeg1_cuvid
  • mpeg2_cuvid
  • mpeg4_cuvid
  • vc1_cuvid
  • vp8_cuvid
  • vp9_cuvid

Hardware Accelerated Filters:

List options of a filter using ffmpeg -h filter=XXXX

  • hwupload_cuda
  • scale_cuda
  • scale_npp
  • thumnail_cuda

Build

docker build -t ffmpeg .

Usage

Run the container mounting the current directory to /workspace processing input.mp4 to output.mp4 without any hardware acceleration

docker run --rm -it \
    --volume $PWD:/workspace \
    ffmpeg -i input.mp4 output.avi
docker run --rm -it --gpus all \
    -e NVIDIA_VISIBLE_DEVICES=all \
    -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video \
    --volume $PWD:/workspace \
    ffmpeg \
      -hwaccel_device 0 \
      -hwaccel cuvid \
      -c:v h264_cuvid \
      -i input.mp4 \
      -c:v hevc_nvenc
      out.mkv

Get a shell prompt inside the container, useful for debugging:

docker run --rm -it --gpus all \
    -e NVIDIA_VISIBLE_DEVICES=all \
    -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video \
    --volume $PWD:/workspace \
    --entrypoint bash
    ffmpeg

Resources