Ir al contenido principal
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Procesamiento posterior de TV en vivo

Procesamiento posterior de grabaciones

Jellyfin soporta procesamiento posterior de programas de TV en vivo grabados. Esto se puede usar para transcodificar la grabación a un formato específico que no requiera transcodificación durante la reproducción, extraer subtítulos, eliminar comerciales y más.

nota

Existen varias formas de configurar tu script de procesamiento posterior, y esto deberá adaptarse principalmente a tu caso de uso particular.

A continuación se describe una forma de hacer el procesamiento posterior, pero pueden existir otras formas (quizás más eficientes) de ejecutar tu procesador posterior.

Experimenta con esto para adaptarlo a tus necesidades. Investiga, publica preguntas en el Foro de Jellyfin o en otros lugares, y otros podrán ayudarte. ¡El registro de logs es tu aliado! Asegúrate de que tu(s) script(s) registren adecuadamente en un archivo u otro lugar para solucionar cualquier problema que puedas encontrar, ya que cualquier salida a stdout/stderror no será visible en los registros de Jellyfin.

Configuración de procesamiento posterior de grabaciones DVR en el Panel de Jellyfin

Jellyfin ejecuta automáticamente el script que especifiques en la configuración DVR del Panel de administración con un parámetro de línea de comandos de la ruta del archivo cuando finaliza la grabación.

En la configuración de Procesamiento posterior de grabaciones DVR del Panel de Jellyfin:

Configura "Aplicación de procesamiento posterior" con tu script shell que llama al procesador posterior real (detalles de este script de procesador posterior 'real' a continuación). En este ejemplo, sería /path/to/run_post_process.sh

Configura "Argumentos de línea de comandos del procesador posterior" como "{path}".

Configuración de DVR para procesamiento posterior de TV en vivo

Con la configuración anterior, el servidor ejecuta este comando al ejecutar el procesador posterior:

"/path/to/run_post_process.sh" "\"/path/to/LiveTV/Shows/Series/Season/Episode.ts\""

Script Shell de Ejecución del Procesador Posterior (ejecutado directamente por el Servidor Jellyfin)

La interpretación de comillas es uno de los aspectos más difíciles de gestionar al usar un script de procesamiento posterior. Por esto, una forma sencilla de ejecutar tu procesador posterior es que Jellyfin inicie un script shell "ejecutor", que luego llama a tu script de procesador posterior real. Este script shell puede colocarse en la configuración de Jellyfin y tener un entorno shell "limpio" donde sea más fácil configurar, revisar registros y más.

En el script de ejemplo a continuación:

  • El registro de logs está habilitado, y se crea un archivo de registro en alguna ubicación accesible por tu instancia de Jellyfin.

  • El primer argumento de línea de comandos, $1, se escribe en el archivo de registro (principalmente para depuración). Este argumento será una ruta al programa a procesar. Tiene el formato /path/to/LiveTV/Shows/Series/Season/Episode.ts

  • Luego se llama al script Python de procesador posterior real record_post_process.py con un argumento de línea de comandos del nombre del archivo.

Ejemplo de script run_post_processor.sh

Enlace al Gist de GitHub de run_post_processor.sh

#!/bin/sh
exec > "/path/to/logging/directory/logs/$(date +"%Y-%m-%d_%H-%M-%S")-run_post_process-sh.log" 2>&1
echo $1
/usr/local/bin/python3 /path/to/record_post_process.py "$1"

Script Python de Procesador Posterior (ejecutado por run_post_processor.sh)

En este ejemplo, un script Python es donde ocurre toda la acción. Elegí usar Python principalmente por su adaptabilidad y varias extensiones y paquetes de terceros que lo hacen ideal para un script de procesamiento posterior. Este script puede personalizarse para adaptarse a tus requisitos individuales.

En el script de ejemplo:

  • El registro de logs está habilitado, y se crea un archivo de registro en alguna ubicación accesible por tu instancia de Jellyfin.

  • Se verifican los argumentos de línea de comandos; si no se proporciona ningún argumento, el script finaliza.

  • Se determinan variables para elementos como la ruta completa del archivo sin transcodificar, el nombre base, el archivo a transcodificar con extensión, el nombre y ruta del archivo transcodificado, entre otros.

  • Se crea y ejecuta el comando de FFMPEG.

    • En este ejemplo se usa el códec de video h264_videotoolbox y el audio se copia del origen. Modifica el comando de ffmpeg según tus necesidades.
  • El archivo sin transcodificar se mueve fuera del directorio Series/Temporada hacia una carpeta inaccesible para Jellyfin llamada OLDFILES (Esta parte también podría configurarse para eliminar el archivo original).

Un ejemplo de script record_post_process.py

Este script es demasiado extenso para publicar aquí, por lo que se proporciona un enlace a un repositorio de GitHub. Los comentarios describen lo que hace cada sección.

Enlace de GitHub a record_post_process.py

Profundizando

¡Una vez que tengas funcionando el postprocesamiento básico, hay mucho más que puedes hacer!

Algunas ideas: