Ir al contenido

Notas de soporte · Docker

Docker: dónde queda el subtítulo que genera Quven

Un probador generó un subtítulo en Docker y no apareció junto a la película. El montaje de solo lectura rechazó la copia; la 1.1.22 cambia ese montaje.

Un monitor curvo que muestra un terminal que fija QUVEN_MEDIA_READ_ONLY=true en el archivo .env y reinicia Docker Compose

Un probador que ejecuta Quven Server en Docker sobre Ubuntu nos escribió esta semana con una pregunta que no habíamos respondido en ningún sitio, y es una pregunta razonable. Había pedido al reproductor un subtítulo para una película que no tenía ninguno, el servidor generó uno a partir de los diálogos, el reproductor lo mostró como generado a partir del audio y se reprodujo sin problemas. Después abrió la carpeta de la película en el anfitrión, esperando encontrar el archivo de subtítulos junto al vídeo, y no había nada. ¿Dónde había ido a parar? Nunca se había escrito junto a la película.

El registro de su servidor tenía la respuesta en dos líneas consecutivas. La primera dice que el subtítulo generado se guardó para el flujo de audio que eligió, y la segunda es un aviso de que la copia portátil de un subtítulo transcrito no pudo escribirse y de que el servidor conserva la suya. Debajo está el motivo: IOException: Read-only file system, en una ruta bajo /media.

Dos copias, y solo una de ellas es necesaria

Cuando Quven produce un subtítulo, guarda el resultado en su propio almacén. En una instalación normal, ese almacén está bajo la carpeta de datos de la aplicación, y en el contenedor está dentro del volumen quven-data. Cada cliente reproduce el subtítulo desde allí, y por eso el reproductor del probador mostró la pista y la reprodujo sin dificultad.

Por separado, el servidor intenta escribir una segunda copia junto al vídeo, como un archivo auxiliar corriente. Quven nunca la vuelve a leer, pero esa copia existe en tu beneficio: significa que el texto puede viajar con la película si trasladas la carpeta a otra máquina o se la das a alguien que no usa Quven. Si la escritura falla, el servidor registra el aviso de arriba y continúa su trabajo. Esa copia carece de ajuste propio, y la reproducción es completamente independiente de ella.

Lo mismo vale para todos los subtítulos que produce Quven, sea cual sea la forma en que se haya producido: una pista traducida a otro idioma, un subtítulo de imagen reconocido como texto y una pista corregida en el editor de subtítulos siguen el mismo camino, guardados en el volumen de datos y copiados junto a la película cuando la carpeta lo permite.

Por qué la carpeta no lo permitió

El archivo Compose publicado hasta la 1.1.21 monta tus medios con read_only: true, y fue deliberado. Es la garantía de que el servidor puede catalogar y reproducir tu biblioteca sin poder modificar un solo byte, pase lo que pase dentro del contenedor. Pero esa misma línea también impide la copia auxiliar, y la guía describe ahora tanto la copia como el ajuste que la controla.

Qué hemos cambiado

Desde la 1.1.22, el archivo Compose publicado monta tus medios de modo que la copia pueda llegar. La garantía no ha desaparecido, ha pasado a tus manos: QUVEN_MEDIA_READ_ONLY=true en tu propio .env vuelve a cerrar el montaje, y como ese archivo es uno que nunca sobrescribimos, el ajuste sobrevive a la siguiente actualización. Borrar una línea de compose.yaml nunca lo logró, ya que la guía te pide descargar ese archivo de nuevo con cada versión.

Hay dos cosas que conviene saber lo dejes como lo dejes. El contenedor se ejecuta como el usuario 10001, así que el directorio de medios del anfitrión debe poder escribirlo ese uid, o la copia volverá a fallar, esta vez con un error de permisos en lugar de uno de solo lectura, que es el mismo síntoma con otro mensaje en el registro. Y Quven mantiene intactos tus archivos de vídeo. Lo que escribe a su lado es el subtítulo que hizo para ti, con el nombre de la película a la que pertenece, que es lo único que ha escrito jamás en una carpeta de biblioteca y lo único que escribirá en la tuya.

Si usas un paquete anterior

Abre compose.yaml y borra la línea read_only: true bajo el montaje de medios. Haz que el directorio sea escribible por el uid 10001 y después recrea el contenedor con docker compose up -d. Actualizar hace lo mismo sin editar nada y sigue haciéndolo, algo que la edición de un archivo que descargas de nuevo en cada versión no puede prometer.

Preguntas frecuentes

¿Sigue funcionando el subtítulo generado si falla la copia junto a la película?

Sí, por completo. El servidor guarda el subtítulo en su propio almacén dentro del volumen de datos, y cada cliente lo reproduce desde allí. La copia junto a la película es un extra del que se puede prescindir, y el aviso del registro es la única señal de que se omitió.

¿A qué subtítulos afecta esto?

A todos los que produce Quven: transcritos a partir del audio, traducidos a otro idioma, reconocidos a partir de una pista de imagen o corregidos en el editor de subtítulos. Se guardan del mismo modo y se copian junto a la película del mismo modo.

¿Cómo consigo los archivos junto a mis vídeos?

En la 1.1.22 y posteriores deberían llegar solos, siempre que el directorio de medios sea escribible por el uid 10001. En un paquete anterior, quita read_only: true del montaje de medios en compose.yaml y recrea el contenedor con docker compose up -d. Sin un directorio escribible, la copia vuelve a fallar con un error de permisos.

Subtítulos con Pro

Escribe el subtítulo que le falta a una película

Pro escribe un subtítulo a partir del audio en tu propio servidor, y el audio nunca sale del equipo. Max añade el editor de líneas junto con la traducción a otro idioma.

Pro 3,49 € /mes

129 €, en un solo pago.

Comunidad

Comentarios

0 comentarios

Se mostrará públicamente junto a tu comentario.

Los envíos de invitados registran datos limitados de red y dispositivo para prevenir abusos. Consulta la Política de privacidad.

Todavía no hay comentarios. Inicia la conversación.

Confirmar acción

Trae tu biblioteca de vuelta a casa.

Gratis para uso personal, para instalar en tu propio equipo en pocos minutos.