Optimizar vídeos para iPad en Plex con ffmpeg

Vamos a aprender a usar ffmpeg lo justo para optimizar un vídeo para que se vea bien con Plex Server en un iPad o iPhone.

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 con ffmpeg 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 : mueve al principio del vídeo información clave para que la reproducción empiece antes de que la descarga haya avanzado mucho.
  • 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"

Comparativa de velocidades con ffmpeg

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 llegar a 2,85x

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

cpu capabilities ffmpeg