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 207062c398
Updated README to point to the new consolidated repository
5 months ago
CHANGELOG.md I forgot to update the Changelog with the release, so here it is. 9 months ago
Dockerfile bumping to v0.3.1 of other_transcode 9 months ago
README.md Updated README to point to the new consolidated repository 5 months ago
mkvpropedit.tgz stripped out mkvpropedit linux binary cause AppImage is a PITA 1 year ago

README.md

docker-transcode-vaapi

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 Intel GPUs, and uses VAAPI.

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

  • An Intel GPU. Kaby Lake or better is recommended.

  • Exclusive use of the /dev/dri device.

Usage

In its current form, this container is setup to directly run other-transcode. 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 --device /dev/dri:/dev/dri -v $(pwd):$(pwd) -w $(pwd) \ 
  ttys0/other-transcode-vaapi \
  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, to change the target bitrate to 6000Kbs the Docker command would be:

docker run --rm --device /dev/dri:/dev/dri -v $(pwd):$(pwd) -w $(pwd) \
  ttys0/other-transcode-vaapi \
  --target 6000 src/source_file.mkv

Gotchas

  • HEVC is NOT well supported by VAAPI, and SHOULD BE AVOIDED when using this container!! If you really want to transcode with HEVC on a Linux system your best bet is to use an NVidia card. In that case, the NVidia other-transcode container is a good option.

  • 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.