You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
Sean Johnson 1cf96bb29a
Updated README to point to the new consolidated repository
5 months ago
CHANGELOG.md Update CHANGELOG.md 9 months ago
Dockerfile removed cuvid and 32bit library path 6 months ago
README.md Updated README to point to the new consolidated repository 5 months ago
mkvpropedit.tgz initial commit 11 months ago

README.md

docker-transcode-nvidia

THIS REPOSITORY HAS MOVED!!!!

About

Don Melton of Video Transcoding fame has brought his expertise to hardware accelerated transcoding in the form of Other Video Transcoding. While Don covers the installation and usage of other-transcode for all normal desktop platforms, this repository's focus is using other-transcode as a Docker container.

I have leaned heavily on Julien Rottenberg's ffmpeg Dockerfiles. Basically I've taken them, pulled out some of the extraneous ffmpeg compile options, added in the other-transcode dependencies, and finally bundled in other-transcode itself.

Hardware acceleration being hardware dependent, I again stole an idea from Julien Rottenberg's repositories, and narrowed the scope of each container to a specific hardware target. This container is for NVidia GPUs, and uses NVENC.

The container image version is hard aligned to other-transcode, with numerical suffixes representing container modifications not directly related to other-transcode such as changes in FFmpeg compile options.

Requirements

  • The latest NVidia drivers from NVidia, not the ones bundled with the running Linux Distribution, should be used.

  • The latest Docker-CE, not the Docker bundled with the running Linux Distribution should be used. This is to provide the best compatibility with the NVidia Container Toolkit.

  • The NVidia Container Toolkit must be installed. It's very important to restart the Docker daemon after installation as it updates the Docker configuration.

Usage

In its current form, this container is setup to directly run other-transcode. As such, the the nvidia-docker runtime must be installed, as well as the current directory bind mounted. In order to keep other-transcode from attempting to overwrite the source file that's being transcoded, the current working directory is considered the output directory, and source file(s) are placed in a child directory. In short something like this:

working_dir
\_src
  \_source_file.mkv

where working_dir is $(pwd).

Using that setup, to transcode source_file.mkv with the default H264 encoding, the Docker command looks like this when run from working_dir:

docker run --rm --gpus all -v $(pwd):$(pwd) -w $(pwd) \ 
  ttys0/other-transcode-nvidia \
  src/source_file.mkv

If you want to pass other-transcode options, do so just as if other-transcode was being run outside of the container.

For example, encode with HEVC the Docker command would be:

docker run --rm --gpus all -v $(pwd):$(pwd) -w $(pwd) \
  ttys0/other-transcode-nvidia \
  --hevc src/source_file.mkv

If you have an NVidia card with a Turing family processor, and you're using HEVC encoding you should consider adding a --nvenc-temporal-aq option to give a small bump in quality.

Gotchas

  • As I try to shave down the required FFmpeg compile options to only those that get used in video transcoding, I may inadvertently remove some that are actually needed. If you find a codec missing that is "normally" available with FFmpeg please make an issue, and I'll add it back in.

  • This has only been tested with Ubuntu 18.04.