Un espacio para escribir de vez en cuando acerca de temas de tecnología

About

lunes, 27 de agosto de 2018

"Transcoding"... lo bueno, lo malo, lo feo

image.png

¡Houston, tenemos un problema!

Toda esta iniciativa del tener un servidor de Plex nació hace 5 años, como algo meramente personal para poder ver mis películas y series en cualquier lugar, de una manera fácil y organizada como usar cualquier servicio de "streaming" tipo Netflix. Plex cumplió mis expectativas y las superó por mucho, así que me animé a pagar una membresía por el uso del software. Poco tiempo después vi que todo eso que yo estaba disfrutando podía extenderlo a miembros de mi familia, y comencé a crear cuentas para ellos. Después comencé a extender los mismos beneficios a mis amistades, con mucho gusto, aplicando el principio de "donde comen 2, comen 3", o quizá 4 o 5 o más.
El problema con cualquier tipo de servicio son los recursos. Para que Plex pueda funcionar y que todos podamos ver o escuchar contenido, se requiere que mi servidor tenga:

  • ✔ Suficiente espacio en disco para guardar los archivos de video y audio  
  •  Una conexión a internet con banda ancha suficiente para dar batería a conexiones simultáneas
  •  Alta velocidad de transmisión de almacenamiento (velocidad de los discos duros para transferir información al CPU)
  •  Suficiente capacidad de procesamiento (CPU) para hacer streaming y convertir video en tiempo real ("transcoding"), todo para transmisiones simultáneas
Todos los requerimientos anteriores dependen de varios factores, por ejemplo si aumenta la calidad del video (de HD a Full HD a 4K), o si aumenta la cantidad de usuarios conectados, los recursos que se requieren aumentan. Como el aumento de recursos requiere una inversión de dinero considerable, es algo que no puedo hacer por ahora. Y como esto del Plex simplemente es algo que con gusto comparto con mis seres queridos y no es un negocio, obvio no lo voy a cobrar. Pero tengo que reconocer que las capacidades de mi equipo están rebasadas para lo que se requiere para mantener la cantidad de usuarios actuales. Y quizá ustedes lo han experimentado al ver contenido, quizá han recibido mensajes de que la conexión no es suficiente o que el servidor no es lo suficiente rápido, o han experimentado video que se pausa. Podría ser también por sus capacidades de velocidad de conexión o de procesamiento obviamente, pero lo más probable es que mi servidor en algunos momentos simplemente NO puede con la carga.
Esto quiere decir que hay que tomar acciones:
  1. Necesito que me ayuden a disminuir el "transcoding" que mi servidor está haciendo (¿Ya se cansaron? Lean un poco más abajo)
  2. Si la situación continúa, me veré obligado a comenzar a dar de baja algunas cuentas, hasta llegar a una cantidad de usuarios que mi computadora pueda manejar.

¿Cómo disminuyo el "transcoding"?

Si quieres saber que es el "transcoding" lee la siguiente sección.

En tu cliente de Plex (el programa de Plex que usas en tu dispositivo llámese tableta, teléfono, computadora, TV o dispositivo de streaming) asegúrate que configuras lo siguiente; tomando en cuenta que algunas de las siguientes opciones pueden estar o no disponibles (dependiendo de la versión que tienes instalada o de que la opción haya sido liberada en el dispositivo que tienes), y que la sección donde se encuentran estas opciones puede variar entre cada cliente:
  1. "Automatically Adjust Quality" o ajustar la calidad de manera automática debe estar encendido.
  2. "Direct Play" debe estar encendido.
  3. "Direct Stream" debe estar encendido.
  4. "Internet Streaming" y "Home Streaming" deben tener un valor acorde a la velocidad del servicio de internet que tienes contratado y del uso de este ancho de banda. Por ejemplo, tu proveedor te dice que tienes contratado 10 Mbps pero más gente utiliza el internet en casa, dependiendo de qué tan intenso es el uso de todos los consumidores de tu ancho de banda quizá no sea bueno especificar los 10 Mbps ya que este ancho de banda se divide entre todas las conexiones activas. Un valor recomendado podría ser 10 Mbps si hay poco uso, o especificar 8 Mbps en uso moderado, o 6 Mbps si el uso es intenso.
  5. "Burn Subtitles" debe estar en "Automatic", nunca en "Always".

"Transcoding"... lo bueno, lo malo, lo feo

Una de las cosas que hace que la experiencia de Plex se sienta como utilizar cualquiera de los servicios de "streaming" de paga (Netflix, Amazon Prime, Hulu, etc) es la habilidad de poder visualizar contenido en una amplia variedad de dispositivos (celulares, tabletas, televisiones, computadora, consolas de videojuegos), cada dispositivo tiene generaciones dado el avance de sus componentes internos, así que los dispositivos más nuevos pueden reproducir formatos de video y audio más avanzados que sus contrapartes viejas.
Lo bueno...
Plex "negocia" entre cliente y servidor el formato de audio y video que se debe usar, basado en lo que el dispositivo que corre el cliente soporta. Esto quiere decir que si el formato de video en el archivo fuente que está en el servidor de Plex está en una resolución de 4K (3840 x 2160 pixeles), soporta un "espacio de color" HDR10 o Dolby Vision y está codificado en HEVC / H.265 (el formato más avanzado de compresión de video); pero el dispositivo del cliente soporta una resolución máxima de Full HD (1920 x 1080 pixeles), no sabe interpretar un espacio de color más avanzado que YUV y solo puede decodificar AVC / H.264; el servidor de Plex debe convertir en tiempo real el video a esa resolución menor, usando el espacio de color YUV y utilizando el formato AVC para que el dispositivo donde corre el cliente lo pueda reproducir. Esto es lo que se llama "transcoding", la conversión en tiempo real.
Lo mismo pasa con el audio. Si el archivo fuente contiene audio en Dolby Atmos (típicamente 10 canales de audio) y está codificado en formato AAC, pero el dispositivo usado no sabe interpretar más de 2 canales de audio (Stereo) y no tiene soporte de AAC, pero sí de Dolby AC-3; el servidor debe hacer "transcoding" de audio al formato soportado.
Lo malo...
El hacer "transcoding" no necesariamente es bueno en todas las situaciones. Si el dispositivo donde corre el cliente tiene la capacidad de reproducir los formatos usados por el archivo fuente, pero las configuraciones del cliente fuerzan el uso del "transcoding", la experiencia que tendrás es mucho menor a la que deberías y se estaría desperdiciando calidad de video y audio. Es posible que tengas una TV con soporte a 4K conectada a un sistema de teatro en casa con 6 bocinas (soporte a 5.1 canales de audio) y aún así estés recibiendo video en HD (1280 x 720 pixeles, que es la tercera parte de lo que tu TV puede manejar) y audio en 2 canales (la tercera parte de canales); todo esto causado por un "transcoding" que no debería estar sucediendo, pero que la negociación entre cliente y servidor "piensa" que debería suceder dada la configuración o la velocidad del internet.
Los clientes de Plex tienen la capacidad de mostrar información sobre la calidad del video y del audio de los archivos fuente, así que si pones atención antes de reproducir contenido puedes ver su resolución y formato de audio.
File_001.png
Al reproducir contenido, algunos clientes pueden desplegar información de la calidad de video y audio que realmente se está reproduciendo, y que podría ser diferente a la calidad del archivo fuente. Yo también tengo herramientas para visualizar esta información y puedo decir que la gran mayoría de ustedes tienen clientes de Plex haciendo "transcoding" cuando quizá no se debería hacer.
Lo feo...
El "transcoding" al ser una recodificación en tiempo real de video y audio, es una actividad que demanda una gran cantidad de procesamiento. Dependiendo de los formatos de audio y video usados y de la cantidad de sesiones haciendo "transcoding", el procesador del servidor literalmente se "atraganta", intentando correr simultáneamente los procesos de "transcoding" o de "streaming" y los otros diversos procesos corriendo en la computadora. Esto resulta en que ninguna de las sesiones de "streaming" es fluida (hay "buffering", pausas, etc.) y sobre todo, que mi servidor se vuelve completamente inutilizable, es decir que no puedo utilizarlo para otras actividades cotidianas.
En teoría la computadora donde tengo el servidor de Plex está "dedicada" a eso, pero en la práctica también es mi computadora personal donde busco nuevas películas y series, las descargo, busco los subtítulos en español, los arreglo si no calzan a la perfección con el video, etc. Entonces es necesario encontrar un balance a todo esto. 

Misión Cumplida

Si llegaste a leer hasta acá, gracias. Toda la tecnología detrás del video, audio, las conversiones, las optimizaciones, las codificaciones es algo que me apasiona y esto es algo de cultura general que les comparto. Lo más importante es el problema de capacidad que les comenté y ver si se puede solucionar, de lo contrario la solución temporal antes de que pueda cambiar de equipo de cómputo con un procesador más potente es desgraciadamente recortar la cantidad de usuarios. Sé que lo entienden y si llego a eso espero que hayan disfrutado, poco o mucho, de mi servidor de Plex.
¡Saludos!
Share:
Ubicación: Monterrey, Nuevo Leon, Mexico

0 comentarios:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.

BTemplates.com

Buscar este blog

Con tecnología de Blogger.