Compare commits

...

3 commits

4 changed files with 369 additions and 86 deletions

View file

@ -1,3 +1,70 @@
# H.264 codecs/tools
ARG X264_REPO=https://code.videolan.org/videolan/x264.git
# H.265 / HEVC codecs/tools
ARG X265_TAG=3.5
ARG X265_REPO=https://bitbucket.org/multicoreware/x265_git.git
# H.266 / VVC codecs/tools
ARG UVG266_TAG=v0.4.1
ARG UVG266_REPO=https://github.com/ultravideo/uvg266.git
ARG VVENC_TAG=v1.9.0
ARG VVENC_REPO=https://github.com/fraunhoferhhi/vvenc.git
ARG VTM_TAG=VTM-21.2
ARG VTM_REPO=https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM.git
# AV1 codecs/tools
ARG AOM_TAG=v3.7.0-rc1
ARG AOM_REPO=https://aomedia.googlesource.com/aom.git
ARG SVT_TAG=v1.6.0
ARG SVT_REPO=https://gitlab.com/AOMediaCodec/SVT-AV1.git
ARG RAV1E_TAG=p20230815
ARG RAV1E_REPO=https://github.com/xiph/rav1e.git
ARG AV1AN_TAG=0.4.1
ARG AV1AN_REPO=https://github.com/master-of-zen/Av1an.git
# MPEG-5 EVC codecs/tools
ARG XEVE_TAG=v0.4.3-3890dae6
ARG XEVE_REPO=https://github.com/mpeg5/xeve.git
# VapourSynth versions
ARG VS3_TAG=R55-API3
ARG VS4_TAG=R62
# AAC codecs/tools
ARG FDKAAC_TAG=master
ARG FDKAAC_REPO=https://github.com/mstorsjo/fdk-aac.git
# Multimedia tools
ARG VMAF_TAG=v2.3.1
ARG VMAF_REPO=https://github.com/Netflix/vmaf.git
ARG MKVTOOLNIX_TAG=release-78.0
ARG MKVTOOLNIX_REPO=https://gitlab.com/mbunkus/mkvtoolnix.git
ARG MEDIAINFO_TAG=v23.07
ARG MEDIAINFOLIB_TAG=v23.07
# Dependencies
ARG BROTLI_TAG=v1.0.9
ARG BROTLI_REPO=https://github.com/google/brotli.git
ARG JXL_TAG=v0.8.2
ARG JXL_REPO=https://github.com/libjxl/libjxl.git
ARG MAGICK_TAG=7.1.1-15
ARG ZIMG_TAG=release-3.0.5
ARG QT5_TAG=5.15.2
ARG ZENLIB_TAG=v0.4.41
FROM debian:bullseye AS dep-base
ENV PYTHON_VERSION=3.9
@ -40,8 +107,8 @@ COPY docker/git-shallow-clone.sh /usr/bin/git-shallow-clone
FROM build-base AS build-x265
ARG X265_TAG=3.5
ARG X265_REPO=https://bitbucket.org/multicoreware/x265_git.git
ARG X265_TAG
ARG X265_REPO
COPY docker/build/x265/multilib.sh /multilib.sh
COPY docker/build/x265/build.sh /build.sh
@ -57,7 +124,7 @@ RUN /build-l-smash.sh
FROM build-lsmash AS build-x264
ARG X264_REPO=https://code.videolan.org/videolan/x264.git
ARG X264_REPO
COPY docker/build/x264/build.sh /build.sh
@ -65,7 +132,7 @@ RUN /build.sh stable
FROM build-lsmash AS build-x264-dev
ARG X264_REPO=https://code.videolan.org/videolan/x264.git
ARG X264_REPO
COPY docker/build/x264/build.sh /build.sh
@ -74,8 +141,8 @@ RUN /build.sh master
FROM build-base AS build-uvg266
ARG UVG266_DEFS=""
ARG UVG266_TAG=v0.4.1
ARG UVG266_REPO=https://github.com/ultravideo/uvg266.git
ARG UVG266_TAG
ARG UVG266_REPO
COPY docker/build/uvg266/build.sh /build.sh
@ -84,8 +151,8 @@ RUN /build.sh
FROM build-base AS build-uvg266-10bit
ARG UVG266_DEFS="-DUVG_BIT_DEPTH=10"
ARG UVG266_TAG=v0.4.1
ARG UVG266_REPO=https://github.com/ultravideo/uvg266.git
ARG UVG266_TAG
ARG UVG266_REPO
COPY docker/build/uvg266/build.sh /build.sh
@ -93,26 +160,35 @@ RUN /build.sh
FROM build-base AS build-vvenc
ARG VVENC_TAG=v1.9.0
ARG VVENC_REPO=https://github.com/fraunhoferhhi/vvenc.git
ARG VVENC_TAG
ARG VVENC_REPO
COPY docker/build/vvenc/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-vtm
ARG VTM_TAG
ARG VTM_REPO
COPY docker/build/vtm/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-aom
ARG AOM_TAG=v3.7.0-rc1
ARG AOM_REPO=https://aomedia.googlesource.com/aom.git
ARG AOM_TAG
ARG AOM_REPO
ARG VMAF_TAG=v2.3.1
ARG VMAF_REPO=https://github.com/Netflix/vmaf.git
ARG VMAF_TAG
ARG VMAF_REPO
ARG BROTLI_TAG=v1.0.9
ARG BROTLI_REPO=https://github.com/google/brotli.git
ARG BROTLI_TAG
ARG BROTLI_REPO
ARG JXL_TAG=v0.8.2
ARG JXL_REPO=https://github.com/libjxl/libjxl.git
ARG JXL_TAG
ARG JXL_REPO
COPY docker/build/vmaf/build.sh /build-vmaf.sh
#COPY docker/build/jxl/build.sh /build-jxl.sh
@ -126,8 +202,8 @@ RUN /build.sh
FROM build-base AS build-svt-av1
ARG SVT_TAG=v1.6.0
ARG SVT_REPO=https://gitlab.com/AOMediaCodec/SVT-AV1.git
ARG SVT_TAG
ARG SVT_REPO
COPY docker/build/svt-av1/build.sh /build.sh
@ -135,8 +211,8 @@ RUN /build.sh
FROM rust:1.71-bullseye AS build-rav1e
ARG RAV1E_TAG=p20230815
ARG RAV1E_REPO=https://github.com/xiph/rav1e.git
ARG RAV1E_TAG
ARG RAV1E_REPO
RUN DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
@ -149,8 +225,8 @@ RUN /build.sh
FROM build-base AS build-fdk-aac
ARG FDKAAC_TAG=master
ARG FDKAAC_REPO=https://github.com/mstorsjo/fdk-aac.git
ARG FDKAAC_TAG
ARG FDKAAC_REPO
COPY docker/build/fdk-aac/build.sh /build.sh
@ -158,8 +234,8 @@ RUN /build.sh
FROM build-lsmash AS build-vapoursynth-deps
ARG MAGICK_TAG=7.1.1-15
ARG ZIMG_TAG=release-3.0.5
ARG MAGICK_TAG
ARG ZIMG_TAG
COPY docker/build/magick/build.sh /build-magick.sh
COPY docker/build/zimg/build.sh /build-zimg.sh
@ -169,7 +245,8 @@ RUN /build-zimg.sh && \
FROM build-vapoursynth-deps AS build-vapoursynth3
ARG VS_TAG=R55-API3
ARG VS3_TAG
ENV VS_TAG=${VS3_TAG}
COPY docker/build/vapoursynth/build.sh /build-vapoursynth.sh
@ -181,6 +258,21 @@ COPY docker/build/vapoursynth3-plugins/build.sh /build-vapoursynth-plugins.sh
RUN /build-vapoursynth-plugins.sh
FROM build-vapoursynth-deps AS build-vapoursynth4
ARG VS4_TAG
ENV VS_TAG=${VS4_TAG}
COPY docker/build/vapoursynth/build.sh /build-vapoursynth.sh
RUN /build-vapoursynth.sh
ENV PYTHONPATH "/usr/lib/python${PYTHON_VERSION}/site-packages:/usr/lib/vapoursynth:$PYTHONPATH"
COPY docker/build/vapoursynth4-plugins/build.sh /build-vapoursynth-plugins.sh
RUN /build-vapoursynth-plugins.sh
FROM build-base AS build-mkvtoolnix
RUN echo "deb-src http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/src.list && \
@ -189,10 +281,10 @@ RUN echo "deb-src http://deb.debian.org/debian bullseye main" > /etc/apt/sources
DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt build-dep -y qtbase-opensource-src
ARG MKVTOOLNIX_TAG=release-78.0
ARG MKVTOOLNIX_REPO=https://gitlab.com/mbunkus/mkvtoolnix.git
ARG MKVTOOLNIX_TAG
ARG MKVTOOLNIX_REPO
ARG QT5_TAG=5.15.2
ARG QT5_TAG
COPY docker/build/qt5/build.sh /build-qt5.sh
COPY docker/build/mkvtoolnix/build.sh /build.sh
@ -202,13 +294,29 @@ RUN /build.sh
FROM build-vapoursynth3 AS build-av1an
FROM build-vapoursynth3 AS build-av1an-vapoursynth3
ARG AV1AN_TAG=a5f69398245436b8c0c49f07bec8ca32cf5df75e
ARG AV1AN_REPO=https://git.gammaspectra.live/WeebDataHoarder/Av1an.git
ARG VMAF_TAG
ARG VMAF_REPO
ARG VMAF_TAG=v2.3.1
ARG VMAF_REPO=https://github.com/Netflix/vmaf.git
ARG AV1AN_TAG
ARG AV1AN_REPO
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
COPY docker/build/vmaf/build.sh /build-vmaf.sh
COPY docker/build/av1an/build.sh /build-av1an.sh
RUN /build-vmaf.sh
RUN /build-av1an.sh
FROM build-vapoursynth4 AS build-av1an-vapoursynth4
ARG VMAF_TAG
ARG VMAF_REPO
ARG AV1AN_TAG
ARG AV1AN_REPO
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
@ -220,8 +328,8 @@ RUN /build-av1an.sh
FROM build-base AS build-xeve
ARG XEVE_TAG=v0.4.3-3890dae6
ARG XEVE_REPO=https://github.com/mpeg5/xeve.git
ARG XEVE_TAG
ARG XEVE_REPO
COPY docker/build/xeve/build.sh /build.sh
@ -229,8 +337,8 @@ RUN /build.sh BASE
FROM build-base AS build-xeve-main
ARG XEVE_TAG=v0.4.3-3890dae6
ARG XEVE_REPO=https://github.com/mpeg5/xeve.git
ARG XEVE_TAG
ARG XEVE_REPO
COPY docker/build/xeve/build.sh /build.sh
@ -238,19 +346,27 @@ RUN /build.sh MAIN
FROM build-base AS build-mediainfo
ARG ZENLIB_TAG=v0.4.41
ARG MEDIAINFO_TAG=v23.07
ARG MEDIAINFOLIB_TAG=v23.07
ARG ZENLIB_TAG
ARG MEDIAINFO_TAG
ARG MEDIAINFOLIB_TAG
COPY docker/build/mediainfo/build.sh /build.sh
RUN /build.sh
FROM dep-base
FROM dep-base AS final
RUN pip3 install git+https://github.com/FichteFoll/Sushi.git@master
RUN curl "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-$(dpkg --print-architecture)-static.tar.xz" > /tmp/ffmpeg.tar.xz && \
cd /tmp && tar -xJf /tmp/ffmpeg.tar.xz && cd ffmpeg-* && \
cp -r model /usr/local/share/ && \
cp ./ffprobe /usr/bin/ffprobe-git && \
cp ./ffmpeg /usr/bin/ffmpeg-git && \
cp ./qt-faststart /usr/bin/qt-faststart-git && \
cd / && rm -r /tmp/ffmpeg*
RUN curl "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-$(dpkg --print-architecture)-static.tar.xz" > /tmp/ffmpeg.tar.xz && \
cd /tmp && tar -xJf /tmp/ffmpeg.tar.xz && cd ffmpeg-* && \
cp -r model /usr/local/share/ && \
cp ./ffprobe /usr/bin/ && \
@ -269,28 +385,46 @@ COPY --from=build-x264-dev /usr/bin/x264 /usr/bin/x264-dev
COPY --from=build-aom /usr/bin/aom* /usr/bin/
COPY --from=build-svt-av1 /usr/bin/SvtAv1* /usr/bin/
COPY --from=build-rav1e /usr/bin/rav1e /usr/bin/rav1e
COPY --from=build-av1an /usr/bin/av1an /usr/bin/av1an
COPY --from=build-av1an /usr/bin/vmaf /usr/bin/vmaf
COPY --from=build-uvg266 /usr/bin/uvg266 /usr/bin/uvg266
COPY --from=build-uvg266-10bit /usr/bin/uvg266 /usr/bin/uvg266-10bit
COPY --from=build-vvenc /usr/bin/vvenc* /usr/bin/
COPY --from=build-vtm /usr/bin/VTM* /usr/bin/
COPY --from=build-xeve /usr/bin/xeveb_app /usr/bin/xeveb
COPY --from=build-xeve-main /usr/bin/xeve_app /usr/bin/xeve
COPY --from=build-fdk-aac /usr/bin/aac-enc /usr/bin/aac-enc
COPY --from=build-vapoursynth-deps /usr/lib/libzimg* /usr/lib/
COPY --from=build-vapoursynth-deps /usr/bin/magick /usr/bin/magick
COPY --from=build-vapoursynth-deps /usr/etc/ImageMagick-7 /usr/etc/ImageMagick-7
COPY --from=build-mkvtoolnix /usr/bin/mkv* /usr/bin/
COPY --from=build-mediainfo /usr/bin/mediainfo /usr/bin/mediainfo
FROM final AS encoder-vapoursynth3
COPY --from=build-av1an-vapoursynth3 /usr/bin/av1an /usr/bin/av1an
COPY --from=build-av1an-vapoursynth3 /usr/bin/vmaf /usr/bin/vmaf
COPY --from=build-vapoursynth3 /usr/bin/vspipe /usr/bin/vspipe
COPY --from=build-vapoursynth3 /usr/lib/python${PYTHON_VERSION}/site-packages/vapoursynth.* /usr/lib/python${PYTHON_VERSION}/site-packages/
COPY --from=build-vapoursynth3 /usr/lib/libvapoursynth* /usr/lib/
COPY --from=build-vapoursynth3 /usr/lib/libzimg* /usr/lib/
COPY --from=build-vapoursynth3 /usr/lib/vapoursynth /usr/lib/vapoursynth
COPY --from=build-vapoursynth3 /usr/lib/libvs* /usr/lib/
COPY --from=build-vapoursynth3 /usr/lib/libffms* /usr/lib/
COPY --from=build-vapoursynth3 /usr/bin/magick /usr/bin/magick
COPY --from=build-vapoursynth3 /usr/etc/ImageMagick-7 /usr/etc/ImageMagick-7
FROM final AS encoder-vapoursynth4
COPY --from=build-mkvtoolnix /usr/bin/mkv* /usr/bin/
COPY --from=build-mediainfo /usr/bin/mediainfo /usr/bin/mediainfo
COPY --from=build-av1an-vapoursynth4 /usr/bin/av1an /usr/bin/av1an
COPY --from=build-av1an-vapoursynth4 /usr/bin/vmaf /usr/bin/vmaf
COPY --from=build-vapoursynth4 /usr/bin/vspipe /usr/bin/vspipe
COPY --from=build-vapoursynth4 /usr/lib/python${PYTHON_VERSION}/site-packages/vapoursynth.* /usr/lib/python${PYTHON_VERSION}/site-packages/
COPY --from=build-vapoursynth4 /usr/lib/libvapoursynth* /usr/lib/
COPY --from=build-vapoursynth4 /usr/lib/vapoursynth /usr/lib/vapoursynth
COPY --from=build-vapoursynth4 /usr/lib/libvs* /usr/lib/
COPY --from=build-vapoursynth4 /usr/lib/libffms* /usr/lib/
FROM encoder-vapoursynth3

View file

@ -6,41 +6,53 @@ $ DOCKER_BUILDKIT=1 docker build -t encoder .
$ docker run -it --rm -v /path/to/mount/on/container:/mnt encoder
```
If you want to use newer VapourSynth API4 instead of API3, use this command instead of the first one:
```bash
$ DOCKER_BUILDKIT=1 docker build -t encoder --target encoder-vapoursynth4 .
```
## Included tools
| Tool | Kind | Notes |
|:------------------------------------------------------------------------------------------------------------------------------------:|:----------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| [ffmpeg](https://johnvansickle.com/ffmpeg/) | General Tools | static build from git snapshot. Can be accessed via `$ ffmpeg` |
| [Sushi](https://github.com/FichteFoll/Sushi) | Subtitle Syncing | Automatic shifter for SRT and ASS subtitle based on audio streams. Can be accessed via `$ sushi` |
| [MKVToolNix 68.0.0](https://gitlab.com/mbunkus/mkvtoolnix/-/tree/release-68.0.0) | Matroska Tools | Creating and working with Matroska files. |
| [MediaInfo v22.06](https://github.com/MediaArea/MediaInfo/tree/v22.06) | General Tools | Convenient unified display of the most relevant technical and tag data for video and audio files. |
| [x264 stable](https://code.videolan.org/videolan/x264/-/tree/stable) | H.264 Encoder | x264, the best and fastest H.264 encoder. Can be accessed via `$ x264` |
| [x264 master](https://code.videolan.org/videolan/x264/-/tree/master) | H.264 Encoder | Can be accessed via `$ x264-dev` |
| [x265 3.5](https://bitbucket.org/multicoreware/x265_git/src/3.5/) | H.265/HEVC Encoder | |
| [aom v3.4.0](https://aomedia.googlesource.com/aom/+/refs/tags/v3.4.0/) | AV1 Encoder/Decoder | Can be accessed via `$ aomenc` or `$ aomdec` |
| [SVT-AV1 v1.1.0](https://gitlab.com/AOMediaCodec/SVT-AV1/-/releases/v1.1.0) | AV1 Encoder/Decoder | Can be accessed via `$ SvtAv1EncApp` or `$ SvtAv1DecApp` |
| [rav1e p20220614](https://github.com/xiph/rav1e/tree/p20220614) | AV1 Encoder | Can be accessed via `$ rav1e` |
| [uvg266 v0.4.0](https://github.com/ultravideo/uvg266/tree/v0.4.0) | H.266/VVC Encoder | Can be accessed via `$ uvg266` or `$ uvg266-10bit` |
| [vvenc v1.4.0](https://github.com/fraunhoferhhi/vvenc/tree/v1.4.0) | H.266/VVC Encoder | Fraunhofer Versatile Video Encoder (VVenC). Can be accessed via `$ vvencapp` or `$ vvencFFapp` |
| [xeve v0.3.4](https://github.com/mpeg5/xeve/tree/v0.4.0) | MPEG-5 EVC Encoder | eXtra-fast Essential Video Encoder, MPEG-5 EVC (Essential Video Coding). Can be accessed via `$ xeveb` or `$ xeve` |
| [FDK-AAC master](https://github.com/mstorsjo/fdk-aac) | AAC-LC/HE/HEv2 Encoder | Fraunhofer FDK AAC code from Android. Can be accessed via `$ aac-enc` |
| [Av1an fork](https://git.gammaspectra.live/WeebDataHoarder/Av1an) | Encoding Tools | Cross-platform command-line AV1 / VP9 / HEVC / H264 encoding framework with per scene quality encoding. Can be accessed via `$ av1an`.<br/>Contains custom changes to add distributed encoding. |
| [vmaf v2.3.1](https://github.com/Netflix/vmaf/tree/v2.3.1) | Processing Tools | Perceptual video quality assessment based on multi-method fusion. Can be accessed via `$ vmaf` |
| [VapourSynth R54](https://github.com/vapoursynth/vapoursynth/tree/R54) | Processing Tools | Can be accessed via `$ vspipe` |
| [L-SMASH-Works](https://github.com/VFR-maniac/L-SMASH-Works) | VapourSynth Plugin | |
| [d2vsource v1.2](https://github.com/dwbuiten/d2vsource/tree/v1.2) | VapourSynth Plugin | D2V parser and decoder for VapourSynth |
| [VapourSynth-TDeintMod r10.1](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod/tree/r10.1) | VapourSynth Plugin | TDeint filter for VapourSynth |
| [fmtconv r28](https://github.com/EleonoreMizo/fmtconv/tree/r28) | VapourSynth Plugin | Format conversion tools for Vapoursynth and Avisynth+ |
| [vapoursynth-mvtools](https://github.com/dubhater/vapoursynth-mvtools/tree/v23) | VapourSynth Plugin | Motion compensation and stuff |
| [VapourSynth-FFT3DFilter 64323f0](https://github.com/myrsloik/VapourSynth-FFT3DFilter/tree/64323f0fdee4dd4fe429ee6287906dbae8e7571c) | VapourSynth Plugin | VapourSynth port of FFT3DFilter |
| [znedi3 r2.1](https://github.com/sekrit-twc/znedi3/tree/r2.1) | VapourSynth Plugin | nnedi3 filter |
| [descale r7](https://github.com/Irrational-Encoding-Wizardry/descale/tree/r7) | VapourSynth Plugin | VapourSynth plugin to undo upscaling |
| [flash3kyuu_deband](https://github.com/SAPikachu/flash3kyuu_deband) | VapourSynth Plugin | A deband library and filter for avisynth/vapoursynth |
| [VapourSynth-BM3D r9](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D/tree/r9) | VapourSynth Plugin | BM3D denoising filter for VapourSynth |
| [VapourSynth-DFTTest r7](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest/tree/r7) | VapourSynth Plugin | DFTTest filter for VapourSynth |
| [VapourSynth-Yadifmod r10.1](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod/tree/r10.1) | VapourSynth Plugin | Yadifmod filter for VapourSynth |
| [ffms2 2.40](https://github.com/FFMS/ffms2/tree/2.40) | VapourSynth Plugin | An FFmpeg based source library and Avisynth/VapourSynth plugin for easy frame accurate access |
| [havsfunc 3b6a80](https://github.com/HomeOfVapourSynthEvolution/havsfunc) | VapourSynth Functions | Holy's ported AviSynth functions for VapourSynth |
| [mvsfunc 90e185](https://github.com/HomeOfVapourSynthEvolution/mvsfunc) | VapourSynth Functions | mawen1250's VapourSynth functions |
| [fvsfunc 29ced9](https://github.com/Irrational-Encoding-Wizardry/fvsfunc) | VapourSynth Functions | Small collection of VapourSynth functions |
| [muvsfunc 6158bf](https://github.com/WolframRhodium/muvsfunc) | VapourSynth Functions | Muonium's VapourSynth functions |
| Tool | Kind | Notes |
|:--------------------------------------------------------------------------------:|:---------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------:|
| [ffmpeg](https://johnvansickle.com/ffmpeg/) | General Tools | static build from latest release. Can be accessed via `$ ffmpeg` |
| [ffmpeg-git](https://johnvansickle.com/ffmpeg/) | General Tools | static build from git snapshot. Can be accessed via `$ ffmpeg-git` |
| [x264 stable](https://code.videolan.org/videolan/x264/-/tree/stable) | H.264 Encoder | x264, the best and fastest H.264 encoder. Can be accessed via `$ x264` |
| [x264 master](https://code.videolan.org/videolan/x264/-/tree/master) | H.264 Encoder | Can be accessed via `$ x264-dev` |
| [x265 3.5](https://bitbucket.org/multicoreware/x265_git/src/3.5/) | H.265 / HEVC Encoder | |
| [uvg266 v0.4.1](https://github.com/ultravideo/uvg266/tree/v0.4.1) | H.266 / VVC Encoder | Can be accessed via `$ uvg266` or `$ uvg266-10bit` |
| [vvenc v1.9.0](https://github.com/fraunhoferhhi/vvenc/tree/v1.9.0) | H.266 / VVC Encoder | Fraunhofer Versatile Video Encoder (VVenC). Can be accessed via `$ vvencapp` or `$ vvencFFapp` |
| [VTM 21.2](https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/tree/VTM-21.2) | H.266 / VVC Encoder/Decoder | VTM reference software for VVC. Can be accessed via `$ VTMEncoder` or `$ VTMDecoder` |
| [aom v3.7.0-rc1](https://aomedia.googlesource.com/aom/+/refs/tags/v3.7.0-rc1/) | AV1 Encoder/Decoder | Can be accessed via `$ aomenc` or `$ aomdec` |
| [SVT-AV1 v1.6.0](https://gitlab.com/AOMediaCodec/SVT-AV1/-/releases/v1.6.0) | AV1 Encoder/Decoder | Can be accessed via `$ SvtAv1EncApp` or `$ SvtAv1DecApp` |
| [rav1e p20230815](https://github.com/xiph/rav1e/tree/p20230815) | AV1 Encoder | Can be accessed via `$ rav1e` |
| [Av1an 0.4.1](https://github.com/master-of-zen/Av1an/tree/0.4.1) | Encoding Tools | Cross-platform command-line AV1 / VP9 / H.265 / H.264 encoding framework with per scene quality encoding. Can be accessed via `$ av1an` |
| [xeve v0.4.3-3890dae6](https://github.com/mpeg5/xeve/tree/v0.4.3-3890dae6) | MPEG-5 EVC Encoder | eXtra-fast Essential Video Encoder, MPEG-5 EVC (Essential Video Coding). Can be accessed via `$ xeveb` or `$ xeve` |
| [VapourSynth R55-API3](https://github.com/vapoursynth/vapoursynth/tree/R55-API3) | Processing Tools | VapourSynth API3. Can be accessed via `$ vspipe` |
| [VapourSynth R62](https://github.com/vapoursynth/vapoursynth/tree/R62) | Processing Tools | VapourSynth API4. Can be accessed via `$ vspipe`. Requires using custom docker build target command. |
| [FDK-AAC master](https://github.com/mstorsjo/fdk-aac) | AAC-LC/HE/HEv2 Encoder | Fraunhofer FDK AAC code from Android. Can be accessed via `$ aac-enc` |
| [Sushi](https://github.com/FichteFoll/Sushi) | Subtitle Syncing | Automatic shifter for SRT and ASS subtitle based on audio streams. Can be accessed via `$ sushi` |
| [vmaf v2.3.1](https://github.com/Netflix/vmaf/tree/v2.3.1) | Processing Tools | Perceptual video quality assessment based on multi-method fusion. Can be accessed via `$ vmaf` |
| [MKVToolNix 78.0](https://gitlab.com/mbunkus/mkvtoolnix/-/tree/release-78.0) | Matroska Tools | Creating and working with Matroska files. |
| [MediaInfo v23.07](https://github.com/MediaArea/MediaInfo/tree/v23.07) | General Tools | Convenient unified display of the most relevant technical and tag data for video and audio files. |
## VapourSynth API3 Extras
| Tool | Kind | Notes |
|:------------------------------------------------------------------------------------------------------------------------------------:|:---------:|:---------------------------------------------------------------------------------------------:|
| [L-SMASH-Works](https://github.com/VFR-maniac/L-SMASH-Works) | Plugin | |
| [d2vsource v1.2](https://github.com/dwbuiten/d2vsource/tree/v1.2) | Plugin | D2V parser and decoder for VapourSynth |
| [VapourSynth-TDeintMod r10.1](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod/tree/r10.1) | Plugin | TDeint filter for VapourSynth |
| [fmtconv r28](https://github.com/EleonoreMizo/fmtconv/tree/r28) | Plugin | Format conversion tools for Vapoursynth and Avisynth+ |
| [vapoursynth-mvtools](https://github.com/dubhater/vapoursynth-mvtools/tree/v23) | Plugin | Motion compensation and stuff |
| [VapourSynth-FFT3DFilter 64323f0](https://github.com/myrsloik/VapourSynth-FFT3DFilter/tree/64323f0fdee4dd4fe429ee6287906dbae8e7571c) | Plugin | VapourSynth port of FFT3DFilter |
| [znedi3 r2.1](https://github.com/sekrit-twc/znedi3/tree/r2.1) | Plugin | nnedi3 filter |
| [descale r7](https://github.com/Irrational-Encoding-Wizardry/descale/tree/r7) | Plugin | VapourSynth plugin to undo upscaling |
| [flash3kyuu_deband](https://github.com/SAPikachu/flash3kyuu_deband) | Plugin | A deband library and filter for avisynth/vapoursynth |
| [VapourSynth-BM3D r9](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D/tree/r9) | Plugin | BM3D denoising filter for VapourSynth |
| [VapourSynth-DFTTest r7](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest/tree/r7) | Plugin | DFTTest filter for VapourSynth |
| [VapourSynth-Yadifmod r10.1](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod/tree/r10.1) | Plugin | Yadifmod filter for VapourSynth |
| [ffms2 2.40](https://github.com/FFMS/ffms2/tree/2.40) | Plugin | An FFmpeg based source library and Avisynth/VapourSynth plugin for easy frame accurate access |
| [havsfunc 3b6a80](https://github.com/HomeOfVapourSynthEvolution/havsfunc) | Functions | Holy's ported AviSynth functions for VapourSynth |
| [mvsfunc 90e185](https://github.com/HomeOfVapourSynthEvolution/mvsfunc) | Functions | mawen1250's VapourSynth functions |
| [fvsfunc 29ced9](https://github.com/Irrational-Encoding-Wizardry/fvsfunc) | Functions | Small collection of VapourSynth functions |
| [muvsfunc 6158bf](https://github.com/WolframRhodium/muvsfunc) | Functions | Muonium's VapourSynth functions |

View file

@ -0,0 +1,114 @@
#!/bin/bash
set -e
set -o pipefail
curl https://raw.githubusercontent.com/dubhater/vapoursynth-fieldhint/v3/src/fieldhint.c | gcc -x c -I /usr/include/vapoursynth \
-shared -o /usr/lib/vapoursynth/fieldhint.so \
-O3 -fPIC \
-
git-shallow-clone "master" https://github.com/VFR-maniac/L-SMASH-Works.git /src/L-SMASH-Works
pushd /src/L-SMASH-Works
cd VapourSynth
./configure --vs-plugindir=/usr/lib/vapoursynth --prefix=/usr
make -j$(nproc)
make install
git-shallow-clone "v1.2" https://github.com/dwbuiten/d2vsource.git /src/d2vsource
pushd /src/d2vsource
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libd2vsource.so /usr/lib/vapoursynth/
git-shallow-clone "r10.1" https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod.git /src/VapourSynth-TDeintMod
pushd /src/VapourSynth-TDeintMod
./autogen.sh
./configure
make -j$(nproc)
cp .libs/libtdeintmod.so /usr/lib/vapoursynth/
git-shallow-clone "r28" https://github.com/EleonoreMizo/fmtconv.git /src/fmtconv
pushd /src/fmtconv
cd build/unix
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libfmtconv.so /usr/lib/vapoursynth/
git-shallow-clone "v23" https://github.com/dubhater/vapoursynth-mvtools.git /src/vapoursynth-mvtools
pushd /src/vapoursynth-mvtools
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libmvtools.so /usr/lib/vapoursynth/
git-shallow-clone "64323f0fdee4dd4fe429ee6287906dbae8e7571c" https://github.com/myrsloik/VapourSynth-FFT3DFilter.git /src/VapourSynth-FFT3DFilter
pushd /src/VapourSynth-FFT3DFilter
mkdir b
pushd b
meson ..
ninja
cp libfft3dfilter.so /usr/lib/vapoursynth/
git-shallow-clone "r2.1" https://github.com/sekrit-twc/znedi3.git /src/znedi3
pushd /src/znedi3
#TODO: remove X86 hardcode
make X86=1 -j$(nproc)
cp vsznedi3.so /usr/lib/vapoursynth/
cp nnedi3_weights.bin /usr/lib/vapoursynth/
git-shallow-clone "r7" https://github.com/Irrational-Encoding-Wizardry/descale.git /src/descale
pushd /src/descale
mkdir b
pushd b
meson ..
ninja
cp libdescale.so /usr/lib/vapoursynth/
cp ../descale.py /usr/lib/vapoursynth/
git-shallow-clone "master" https://github.com/SAPikachu/flash3kyuu_deband.git /src/flash3kyuu_deband
pushd /src/flash3kyuu_deband
sed -i 's/env python/env python3/' ./waf
./waf configure
./waf build
cp build/libf3kdb.so /usr/lib/vapoursynth/
git-shallow-clone "r9" https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D.git /src/VapourSynth-BM3D
pushd /src/VapourSynth-BM3D
mkdir b
pushd b
LDFLAGS=-lfftw3f_threads meson ..
ninja
cp libbm3d.so /usr/lib/vapoursynth/
git-shallow-clone "r7" https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest.git /src/VapourSynth-DFTTest
pushd /src/VapourSynth-DFTTest
mkdir b
pushd b
LDFLAGS=-lfftw3f_threads meson ..
ninja
cp libdfttest.so /usr/lib/vapoursynth/
git-shallow-clone "r10.1" https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod.git /src/VapourSynth-Yadifmod
pushd /src/VapourSynth-Yadifmod
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libyadifmod.so /usr/lib/vapoursynth/
git-shallow-clone "2.40" https://github.com/FFMS/ffms2.git /src/ffms2
pushd /src/ffms2
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
make install
curl https://raw.githubusercontent.com/HomeOfVapourSynthEvolution/havsfunc/3b6a80ce502e6775c70df6bb2d19124de149073f/havsfunc.py > /usr/lib/vapoursynth/havsfunc.py
curl https://raw.githubusercontent.com/HomeOfVapourSynthEvolution/mvsfunc/90e185220901402b974d7364345e0f25e71ab8fe/mvsfunc.py > /usr/lib/vapoursynth/mvsfunc.py
curl https://raw.githubusercontent.com/Irrational-Encoding-Wizardry/fvsfunc/29ced90a3f620844dea0efa8666542298f68f421/fvsfunc.py > /usr/lib/vapoursynth/fvsfunc.py
curl https://raw.githubusercontent.com/WolframRhodium/muvsfunc/6158bf2af1cb85fd9ba44024c52ef3666a2834c1/muvsfunc.py > /usr/lib/vapoursynth/muvsfunc.py
sed -i 's/core\.nnedi3/core\.znedi3/' /usr/lib/vapoursynth/fvsfunc.py

23
docker/build/vtm/build.sh Executable file
View file

@ -0,0 +1,23 @@
#!/bin/bash
set -e
set -o pipefail
git-shallow-clone "${VTM_TAG}" "${VTM_REPO}" /src/vtm
pushd /src/vtm
# Patch -Werror out and remove other build outputs
sed -i 's/warnings-as-errors//g' CMakeLists.txt
sed -i -r 's@add_subdirectory\( "source/App/.*$@@g' CMakeLists.txt
echo 'add_subdirectory( "source/App/EncoderApp" )' >> CMakeLists.txt
echo 'add_subdirectory( "source/App/DecoderApp" )' >> CMakeLists.txt
mkdir b
pushd b
cmake .. \
-DENABLE_HIGH_BITDEPTH=ON \
-DBUILD_SHARED_LIBS=OFF \
-DENABLE_STATIC=ON \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
-DCMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX:PATH=/usr
make -j$(nproc)
cp -v /src/vtm/bin/EncoderAppStatic /usr/bin/VTMEncoder
cp -v /src/vtm/bin/DecoderAppStatic /usr/bin/VTMDecoder