Blog personal donde guardo mis notas sobre tecnología

Handbrake en tu servidor NAS

Carlos M.

En anteriores artículos hemos visto varios programas para poder transcodificar vídeos en nuestro servidor NAS, pero si los anteriores programas no te convencen o no son de tu agrado, tenemos otra solución, handdrake, el famoso software de transcodificación de vídeo multiplataforma y open source.

Haciendo uso de docker podemos instarlo en nuestro servidor (Synology, Raspberry, minipc, etc)

Docker #

Podemos hacer la instalación utilizando la imagen de jlesage/handbrake

docker run -d \
       --name=handbrake \
       -p 5800:5800 \
       -p USER_ID = 100
       -p GROUP_ID = 101
       -v /volume1/docker/handbrake/:/config:rw \
       -v /volume1/video:/storage:ro \
       -v /volume1/descargas/input:/watch:rw \
       -v /volume1/descargas/output:/output:rw \
       jlesage/handbrake

Docker-Compose #

Si prefieres hacerlo con docker-compose

version: '3'
services:
  handbrake:
   container_name: tdarr
   image: jlesage/handbrake
   build: .
   ports:
     - "5800:5800"
   volumes:
     - "/volume1/docker/handbrake/:/config:rw"
     - "/volume1/video:/storage:ro"
     - "/volume1/descargas/input:/watch:rw"
     - "/volume1/descargas/output:/output:rw"
   environment:
     - TZ=Europe/Madrid
     - USER_ID=1026
     - GROUP_ID=100

Ahora solo necesitas abrir tu navegador web favorito en el puerto 5800 o en el que hayas configurado para poder empezar a trabajar con handdrake

Esta es una configuración bastante sencilla pero en el repositorio de jlesage/handbrake puedes ver todas las opciones disponibles

También está disponible un modo totalmente automatizado: colocas los archivos en una carpeta de vigilancia y handdrake los procesa automáticamente.

QSV #

Si dispones de un procesador Intel puedes utilizar Intel Quick Sync Video ya que handdrake pueda utilizar QSV, el dispositivo /dev/dri debe estar expuesto al contenedor. Esto se hace agregando el parámetro --device/dev/dri al comando docker run.

docker run -d \
       --name=handbrake \
       -p 5800:5800 \
       -p USER_ID = 1026
       -p GROUP_ID = 101
       -v /volume1/docker/handbrake/:/config:rw \
       -v /volume1/video:/storage:ro \
       -v /volume1/descargas/input:/watch:rw \
       -v /volume1/descargas/output:/output:rw \
       --device /dev/dri/renderD128:/dev/dri/renderD128 \
       --device /dev/dri/card0:/dev/dri/card0 \
       jlesage/handbrake

Cuando QSV está habilitado correctamente, handdrake ofrece el siguiente codificador de vídeo:

Si este codificador no aparece en la lista, puede que necesites alguna configuración adicional, como ejecutar el contenedor con permisos root (USER_ID = 0)

También podemos dar en el host permisos de lectura/escritura para todos en el dispositivo /dev/dri:

sudo chmod a + wr /dev/dri/*

O cambiar en el host el grupo que posee el dispositivo /dev/dri. Por ejemplo, para cambiar el grupo a video:

sudo chown root:video /dev/dri /*

Espero que te haya gustado, pasa un gran día.