Inspired by https://github.com/dl-container-registry/ffmpeg
NVENCODE (nvenc) and NVDECODE (formerly CUVID) are packaged in the NVIDIA Video Codec SDK.
List options of an encoder using ffmpeg -h encoder=XXXX
h264_nvenc,nvenc,nvenc_h264nvenc_hevc,hevc_nvenc
List options of a decoder using ffmpeg -h decoder=XXXX
h264_cuvidhevc_cuvidmjpeg_cuvidmpeg1_cuvidmpeg2_cuvidmpeg4_cuvidvc1_cuvidvp8_cuvidvp9_cuvid
List options of a filter using ffmpeg -h filter=XXXX
hwupload_cudascale_cudascale_nppthumnail_cuda
docker build -t ffmpeg .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.avidocker 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.mkvGet 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