Add Handbake 1.7+ to docker image / help me to alter image
Im trying to do just that myself and the problem is that when i add to docker additional paramaeters string: /bin/bash -c 'add-apt-repository --yes ppa:ubuntuhandbook1/handbrake && apt update && apt install -y handbrake-cli' containers stops after execution I found out that to circumvent stopping execution i need to add at the end && /run/service/tdarr_server/run but this triggers second copy of the server to launch, and im trying to avoid that. Is there a more elegant solution. Im using unraid.
Meanwhile use my docker tdarr node, it supports Dolby Vision and QSV in handbrake https://hub.docker.com/repository/docker/journeym/tdarr_node/general
I've added HB 1.7 for next version, can try here:
HandBrake 1.7.1 (2024050600) - Linux x86_64 - https://handbrake.fr/
haveagitgat/tdarr_acc:dev_2.18.01_2024_05_06T09_58_43z
haveagitgat/tdarr_node_acc:dev_2.18.01_2024_05_06T09_58_43z
Does it have libdovi?
@HaveAGitGat FYI, Handbrake is on 1.7.3. Might wanna update to that.
@journeym no I only had to add libass9 to get it to work. Haven’t checked if handbrake installs that automatically.
@supersnellehenk ty
Have updated to HB 1.7.3:
docker.io/haveagitgat/tdarr_acc:dev_2.18.01_2024_05_07T05_41_43z
docker.io/haveagitgat/tdarr_node_acc:dev_2.18.01_2024_05_07T05_41_43z
@journeym do you have install steps for libdovi? Had a browse but couldn't find some straightforward ones.
@journeym do you have install steps for libdovi? Had a browse but couldn't find some straightforward ones.
I belive their official flatpack does not support libdovi for now https://github.com/HandBrake/HandBrake/issues/5813, and i, personally didnt like flatpack arhitecture.
So it's basically build form source now, which is (https://handbrake.fr/docs/en/latest/developer/install-dependencies-ubuntu.html) + (https://github.com/HandBrake/HandBrake/issues/6390) dependencies and then (https://handbrake.fr/docs/en/latest/developer/build-linux.html)
Ran into error trying to use that on focal:
HandBrake/HandBrake-docs#8 292.2 : [99/99] rm -f src/libdav1d.a && gcc-ar csrD src/libdav1d.a 'src/25a6634@@dav1d@sta/cpuid.obj' 'src/25a6634@@dav1d@sta/msac.obj' 'src/25a6634@@dav1d@sta/pal.obj' 'src/25a6634@@dav1d@sta/refmvs.obj' 'src/25a6634@@dav1d@sta/itx_avx512.obj' 'src/25a6634@@dav1d@sta/cdef_avx2.obj' 'src/25a6634@@dav1d@sta/itx_avx2.obj' 'src/25a6634@@dav1d@sta/looprestoration_avx2.obj' 'src/25a6634@@dav1d@sta/cdef_sse.obj' 'src/25a6634@@dav1d@sta/itx_sse.obj' 'src/25a6634@@dav1d@sta/cdef_avx512.obj' 'src/25a6634@@dav1d@sta/filmgrain_avx512.obj' 'src/25a6634@@dav1d@sta/ipred_avx512.obj' 'src/25a6634@@dav1d@sta/loopfilter_avx512.obj' 'src/25a6634@@dav1d@sta/looprestoration_avx512.obj' 'src/25a6634@@dav1d@sta/mc_avx512.obj' 'src/25a6634@@dav1d@sta/filmgrain_avx2.obj' 'src/25a6634@@dav1d@sta/ipred_avx2.obj' 'src/25a6634@@dav1d@sta/loopfilter_avx2.obj' 'src/25a6634@@dav1d@sta/mc_avx2.obj' 'src/25a6634@@dav1d@sta/filmgrain_sse.obj' 'src/25a6634@@dav1d@sta/ipred_sse.obj' 'src/25a6634@@dav1d@sta/loopfilter_sse.obj' 'src/25a6634@@dav1d@sta/looprestoration_sse.obj' 'src/25a6634@@dav1d@sta/mc_sse.obj' 'src/25a6634@@dav1d@sta/cdef16_avx512.obj' 'src/25a6634@@dav1d@sta/filmgrain16_avx512.obj' 'src/25a6634@@dav1d@sta/ipred16_avx512.obj' 'src/25a6634@@dav1d@sta/itx16_avx512.obj' 'src/25a6634@@dav1d@sta/loopfilter16_avx512.obj' 'src/25a6634@@dav1d@sta/looprestoration16_avx512.obj' 'src/25a6634@@dav1d@sta/mc16_avx512.obj' 'src/25a6634@@dav1d@sta/cdef16_avx2.obj' 'src/25a6634@@dav1d@sta/filmgrain16_avx2.obj' 'src/25a6634@@dav1d@sta/ipred16_avx2.obj' 'src/25a6634@@dav1d@sta/itx16_avx2.obj' 'src/25a6634@@dav1d@sta/loopfilter16_avx2.obj' 'src/25a6634@@dav1d@sta/looprestoration16_avx2.obj' 'src/25a6634@@dav1d@sta/mc16_avx2.obj' 'src/25a6634@@dav1d@sta/cdef16_sse.obj' 'src/25a6634@@dav1d@sta/filmgrain16_sse.obj' 'src/25a6634@@dav1d@sta/ipred16_sse.obj' 'src/25a6634@@dav1d@sta/itx16_sse.obj' 'src/25a6634@@dav1d@sta/loopfilter16_sse.obj' 'src/25a6634@@dav1d@sta/looprestoration16_sse.obj' 'src/25a6634@@dav1d@sta/mc16_sse.obj' 'src/25a6634@@dav1d@sta/cdf.c.o' 'src/25a6634@@dav1d@sta/cpu.c.o' 'src/25a6634@@dav1d@sta/data.c.o' 'src/25a6634@@dav1d@sta/decode.c.o' 'src/25a6634@@dav1d@sta/dequant_tables.c.o' 'src/25a6634@@dav1d@sta/getbits.c.o' 'src/25a6634@@dav1d@sta/intra_edge.c.o' 'src/25a6634@@dav1d@sta/itx_1d.c.o' 'src/25a6634@@dav1d@sta/lf_mask.c.o' 'src/25a6634@@dav1d@sta/lib.c.o' 'src/25a6634@@dav1d@sta/log.c.o' 'src/25a6634@@dav1d@sta/mem.c.o' 'src/25a6634@@dav1d@sta/msac.c.o' 'src/25a6634@@dav1d@sta/obu.c.o' 'src/25a6634@@dav1d@sta/pal.c.o' 'src/25a6634@@dav1d@sta/picture.c.o' 'src/25a6634@@dav1d@sta/qm.c.o' 'src/25a6634@@dav1d@sta/ref.c.o' 'src/25a6634@@dav1d@sta/refmvs.c.o' 'src/25a6634@@dav1d@sta/scan.c.o' 'src/25a6634@@dav1d@sta/tables.c.o' 'src/25a6634@@dav1d@sta/thread_task.c.o' 'src/25a6634@@dav1d@sta/warpmv.c.o' 'src/25a6634@@dav1d@sta/wedge.c.o' 'src/25a6634@@dav1d@sta/x86_cpu.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/cdef_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/cdef_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/fg_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/filmgrain_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/ipred_prepare_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/ipred_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/itx_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/lf_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/loopfilter_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/looprestoration_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/lr_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/mc_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/recon_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/cdef_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/cdef_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/fg_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/filmgrain_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/ipred_prepare_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/ipred_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/itx_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/lf_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/loopfilter_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/looprestoration_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/lr_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/mc_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/recon_tmpl.c.o'
HandBrake/HandBrake-docs#8 292.2 : touch contrib/libdav1d/.stamp.libdav1d.build
HandBrake/HandBrake-docs#8 292.3 -------------------------------------------------------------------------------
HandBrake/HandBrake-docs#8 292.3 time end: Thu May 9 04:17:52 2024
HandBrake/HandBrake-docs#8 292.3 duration: 25 seconds (25.99s)
HandBrake/HandBrake-docs#8 292.3 result: FAILURE (code 2)
HandBrake/HandBrake-docs#8 292.3 -------------------------------------------------------------------------------
HandBrake/HandBrake-docs#8 292.3 Build is finished!
HandBrake/HandBrake-docs#8 292.3 You may now cd into ./build and examine the output.
Will update to jammy in future (tried as simple base image change but ran into further errors).
2.18.01 with 1.7.3 released. @journeym I'll deal with libdovi separately when updating to Jammy
Ran into error trying to use that on focal:
HandBrake/HandBrake-docs#8 292.2 : [99/99] rm -f src/libdav1d.a && gcc-ar csrD src/libdav1d.a 'src/25a6634@@dav1d@sta/cpuid.obj' 'src/25a6634@@dav1d@sta/msac.obj' 'src/25a6634@@dav1d@sta/pal.obj' 'src/25a6634@@dav1d@sta/refmvs.obj' 'src/25a6634@@dav1d@sta/itx_avx512.obj' 'src/25a6634@@dav1d@sta/cdef_avx2.obj' 'src/25a6634@@dav1d@sta/itx_avx2.obj' 'src/25a6634@@dav1d@sta/looprestoration_avx2.obj' 'src/25a6634@@dav1d@sta/cdef_sse.obj' 'src/25a6634@@dav1d@sta/itx_sse.obj' 'src/25a6634@@dav1d@sta/cdef_avx512.obj' 'src/25a6634@@dav1d@sta/filmgrain_avx512.obj' 'src/25a6634@@dav1d@sta/ipred_avx512.obj' 'src/25a6634@@dav1d@sta/loopfilter_avx512.obj' 'src/25a6634@@dav1d@sta/looprestoration_avx512.obj' 'src/25a6634@@dav1d@sta/mc_avx512.obj' 'src/25a6634@@dav1d@sta/filmgrain_avx2.obj' 'src/25a6634@@dav1d@sta/ipred_avx2.obj' 'src/25a6634@@dav1d@sta/loopfilter_avx2.obj' 'src/25a6634@@dav1d@sta/mc_avx2.obj' 'src/25a6634@@dav1d@sta/filmgrain_sse.obj' 'src/25a6634@@dav1d@sta/ipred_sse.obj' 'src/25a6634@@dav1d@sta/loopfilter_sse.obj' 'src/25a6634@@dav1d@sta/looprestoration_sse.obj' 'src/25a6634@@dav1d@sta/mc_sse.obj' 'src/25a6634@@dav1d@sta/cdef16_avx512.obj' 'src/25a6634@@dav1d@sta/filmgrain16_avx512.obj' 'src/25a6634@@dav1d@sta/ipred16_avx512.obj' 'src/25a6634@@dav1d@sta/itx16_avx512.obj' 'src/25a6634@@dav1d@sta/loopfilter16_avx512.obj' 'src/25a6634@@dav1d@sta/looprestoration16_avx512.obj' 'src/25a6634@@dav1d@sta/mc16_avx512.obj' 'src/25a6634@@dav1d@sta/cdef16_avx2.obj' 'src/25a6634@@dav1d@sta/filmgrain16_avx2.obj' 'src/25a6634@@dav1d@sta/ipred16_avx2.obj' 'src/25a6634@@dav1d@sta/itx16_avx2.obj' 'src/25a6634@@dav1d@sta/loopfilter16_avx2.obj' 'src/25a6634@@dav1d@sta/looprestoration16_avx2.obj' 'src/25a6634@@dav1d@sta/mc16_avx2.obj' 'src/25a6634@@dav1d@sta/cdef16_sse.obj' 'src/25a6634@@dav1d@sta/filmgrain16_sse.obj' 'src/25a6634@@dav1d@sta/ipred16_sse.obj' 'src/25a6634@@dav1d@sta/itx16_sse.obj' 'src/25a6634@@dav1d@sta/loopfilter16_sse.obj' 'src/25a6634@@dav1d@sta/looprestoration16_sse.obj' 'src/25a6634@@dav1d@sta/mc16_sse.obj' 'src/25a6634@@dav1d@sta/cdf.c.o' 'src/25a6634@@dav1d@sta/cpu.c.o' 'src/25a6634@@dav1d@sta/data.c.o' 'src/25a6634@@dav1d@sta/decode.c.o' 'src/25a6634@@dav1d@sta/dequant_tables.c.o' 'src/25a6634@@dav1d@sta/getbits.c.o' 'src/25a6634@@dav1d@sta/intra_edge.c.o' 'src/25a6634@@dav1d@sta/itx_1d.c.o' 'src/25a6634@@dav1d@sta/lf_mask.c.o' 'src/25a6634@@dav1d@sta/lib.c.o' 'src/25a6634@@dav1d@sta/log.c.o' 'src/25a6634@@dav1d@sta/mem.c.o' 'src/25a6634@@dav1d@sta/msac.c.o' 'src/25a6634@@dav1d@sta/obu.c.o' 'src/25a6634@@dav1d@sta/pal.c.o' 'src/25a6634@@dav1d@sta/picture.c.o' 'src/25a6634@@dav1d@sta/qm.c.o' 'src/25a6634@@dav1d@sta/ref.c.o' 'src/25a6634@@dav1d@sta/refmvs.c.o' 'src/25a6634@@dav1d@sta/scan.c.o' 'src/25a6634@@dav1d@sta/tables.c.o' 'src/25a6634@@dav1d@sta/thread_task.c.o' 'src/25a6634@@dav1d@sta/warpmv.c.o' 'src/25a6634@@dav1d@sta/wedge.c.o' 'src/25a6634@@dav1d@sta/x86_cpu.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/cdef_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/cdef_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/fg_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/filmgrain_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/ipred_prepare_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/ipred_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/itx_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/lf_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/loopfilter_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/looprestoration_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/lr_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/mc_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_8@sta/recon_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/cdef_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/cdef_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/fg_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/filmgrain_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/ipred_prepare_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/ipred_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/itx_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/lf_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/loopfilter_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/looprestoration_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/lr_apply_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/mc_tmpl.c.o' 'src/25a6634@@dav1d_bitdepth_16@sta/recon_tmpl.c.o' HandBrake/HandBrake-docs#8 292.2 : touch contrib/libdav1d/.stamp.libdav1d.build HandBrake/HandBrake-docs#8 292.3 ------------------------------------------------------------------------------- HandBrake/HandBrake-docs#8 292.3 time end: Thu May 9 04:17:52 2024 HandBrake/HandBrake-docs#8 292.3 duration: 25 seconds (25.99s) HandBrake/HandBrake-docs#8 292.3 result: FAILURE (code 2) HandBrake/HandBrake-docs#8 292.3 ------------------------------------------------------------------------------- HandBrake/HandBrake-docs#8 292.3 Build is finished! HandBrake/HandBrake-docs#8 292.3 You may now cd into ./build and examine the output.Will update to jammy in future (tried as simple base image change but ran into further errors).
Error usually is somwhere before that. If you have time, provide full build output.
To compile handbrake latest with libdovi support on ubuntu:latest
RUN apt-get update && apt-get install -y
curl
ffmpeg
autoconf
automake
build-essential
cmake
git
libass-dev
libbz2-dev
libfontconfig-dev
libfreetype-dev
libfribidi-dev
libharfbuzz-dev
libjansson-dev
liblzma-dev
libmp3lame-dev
libnuma-dev
libogg-dev
libopus-dev
libsamplerate0-dev
libspeex-dev
libtheora-dev
libtool
libtool-bin
libturbojpeg0-dev
libvorbis-dev
libx264-dev
libxml2-dev
libvpx-dev
m4
make
meson
nasm
ninja-build
patch
pkg-config
tar
zlib1g-dev
libva-dev
libdrm-dev
libtesseract-dev
libssl-dev
mkvtoolnix RUN ln /usr/lib/x86_64-linux-gnu/libtesseract.so /usr/lib/x86_64-linux-gnu/libtesseract.so.4 RUN curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh -s -- -y ENV PATH="/root/.cargo/bin:${PATH}" RUN cargo install cargo-c RUN mkdir /app RUN cd /app/ && git clone https://github.com/HandBrake/HandBrake.git RUN cd /app/HandBrake/ && ./configure --disable-gtk --enable-libdovi --enable-qsv --launch-jobs=$(nproc) --launch --force RUN cd /app/HandBrake/ && make --directory=build install
Any chance libdovi gets added to your docker?
I build a new image based on your https://github.com/HaveAGitGat/Tdarr/blob/master/docker/Dockerfile.base with libdovi support i didnt use the .final dockerfile, so i made quite a few modifications, and cant make pull request so here is it https://github.com/journeym/Tdarr/blob/master/docker/Dockerfile.base
In the latest version DOVI support for handbrake is working