Optimizar vídeos para iPad en Plex con ffmpeg

Muchas veces los vídeos no están optimizados para verlos en el dispositivo que se ha conectado al Servidor Plex por lo que si fuera más potente lo convertiría sobre la marcha, la Transcodificación.

Como lo más probable es que no haya potencia suficiente, lo podemos lanzar para que se haga en segundo plano y ya luego más tarde poder verlo sin problemas. En teoría esto se puede hacer desde la aplicación vía Web, pero me ha dado fallos varias veces.

Así que he buscado cómo hacerlo desde la Terminal entrando por SSH. Si queréis conocer todas las opciones de ffmpeg podéis verlas en: H.264 Video Encoding Guide. Al final del artículo podéis ver una pequeña comparativa de las velocidades obtenidas.

Primero instalamos ffmpeg y aceptamos todas las dependencias necesarias:

sudo apt update
sudo apt install ffmpeg

Luego lo más cómodo es movernos con el comando cd hasta la carpeta dónde esté el vídeo en concreto que queremos optimizar para iPad o iPhone que son los dispositivos que más problemas dan. Supongamos que el vídeo se llama input.mkv y lo vamos a convertir en output.mp4 el comando será este:

ffmpeg -i input.mkv -vcodec libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -acodec copy -movflags +faststart output.mp4

Estos valores significan:

  • -crf 23 : Calidad constante durante el vídeo. A valores más altos menos calidad y fichero más pequeño. Se recomiendan valores ente 18 a 24.
  • -preset medium : es un valor intermedio de calidad y velocidad de codificación.
  • -acodec copy : trata de copiar el audio tal cual sin convertirlo. Si diera problemas habría que hacer una conversión a mp3 por ejemplo con Lame: -acodec libmp3lame
  • -movflags +faststart : mueva al principio del vídeo información clave para la reproducción que hace que el visionado pueda empezar antes de que la descarga haya avanzado.
  • Si el vídeo es más grande de tamaño de imagen que 720p, es mejor reducirlo con la opción siguiente antes de input: -vf "scale=-2:720:flags=lanczos"

En la Banana PRO que es dual core y corriendo todo el servidor OMV con Samba, torrent y Plex he conseguido una velocidad de unos 0,15x, o sea, que para convertir un vídeo de 1h se necesitan 6h40.

Luego probé con la Raspberry Pi 2 con el mismo vídeo y conversión llega a los unos 0,40x.

Pasamos al modelo más nuevo, la Raspberry Pi 3 también igual llega a unos 0,75x

Probando con la Orange Pi PC nos da 0,58x

Y por útlimo la Orange Pi PC2 llega a 0,9x

Como prueba final, lo comparé con un portátil normal, un Lenova Yoga 2 con un procesador intel Core 1.6GHz Intel Core i5 4200U se consigue lleagr a 2,85x

Cuando está funcionando el conversor es bueno comprobar que está aprovechando los juegos de instrucciones optimizados para nuestro procesador, como este pantallazo de la Orange Pi PC2:

  • Darumo

    Aunque de forma muy limitada en características yo había leído por ahí que era posible compilar FFMPEG para usar la aceleracion de la grafica de la Raspberry tanto para decodifcar como para comprimir el video, mostrándose unos codecs seleccionables en FFMPEG que eran h264_omx (encoder) y h264_mmal (decoder), y al hacer la tarea mayormente el chipset grafico es de suponer que el CPU estaría bastante libre de carga de trabajo.

    • Creo que la versión incluida en Raspbian está ya más o menos optimizada. Si repito pruebas comprobaré si se detectan, igual que se indica en las instrucciones NEON de la Orange Pi PC 2. De todas formas, lo investigaré ya que puede ser clave para ganar en rendimiento. Gracias por el aporte.

  • Pingback: Raspberry Pi vs Orange Pi 2017 - Raspberry para torpes()