Primero, debe comprender la diferencia entre usar perfiles FFmpeg y las opciones de línea de comandos directa. -vpre
utiliza un .ffpreset
archivo ubicado en /usr/share/ffmpeg/
o donde se instaló ffmpeg. Es una serie de pares de opción = valor , y en su caso habría tenido que definirlo usted mismo (al menos no conozco un valor baseline
predeterminado enviado con ffmpeg).
Recomendaría no usar presets a menos que lo haya creado usted mismo y sepa para qué sirven las opciones de línea de comando. He estado usando ffmpeg durante años y nunca he usado preajustes, nunca he tenido que hacerlo.
Una línea de comando típica para generar video H.264 compatible con la mayoría de los dispositivos sería:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
Algunas notas:
H.264 / AAC es la mejor combinación para un amplio soporte en HTML5. Sin embargo, los navegadores que no tengan decodificadores H.264 también necesitarán un video VP8 / Vorbis. Para algunos ejemplos de línea de comandos, vea esta respuesta . Consulte también la página de soporte del navegador de Wikipedia para otros códecs.
H.264 también funciona bien en dispositivos móviles.
Las opciones -profile:v baseline
y -level 3.0
solo son necesarias para los dispositivos móviles antiguos que no pueden manejar las funciones intensivas de CPU de H.264. Por lo general, puede omitirlos o usarlos -profile:v main
.
El CRF establece la calidad (18–28 es un rango razonable, menor significa mejor calidad). Por supuesto, también puede usar una tasa de bits fija con -b:v 1000k
o similar. Elija una tasa de bits que coincida con la resolución del video. Es posible que algunos dispositivos de baja potencia no puedan manejar velocidades de bits innecesariamente altas.
La -movflags faststart
opción es esencial para la transmisión, ya que mueve los metadatos del contenedor al principio del archivo en lugar de dejarlo al final. Esto permitirá que la reproducción se inicie inmediatamente en lugar de tener que esperar a que el archivo se cargue por completo.
Sin embargo, todo se reduce a encontrar el mínimo común denominador para todos los dispositivos a los que se dirige, lo que puede no existir siempre. Ciertamente, no querrás usar ningún otro códec (es decir, peor ) que H.264. De hecho, tampoco sería prudente ofrecer video codificado en línea de base a clientes que puedan decodificar perfil principal o alto. Cambiaría la calidad por una menor complejidad de decodificación.
Desde mi experiencia, los dispositivos Android pueden reproducir Baseline H.264 con audio AAC-LC en un contenedor MP4 perfectamente. Nunca he tenido problemas con eso. De hecho, algunos dispositivos también pueden reproducir perfiles más altos, aunque no es oficialmente compatible. iOS generalmente también es compatible con Baseline H.264, pero ciertamente también puedes usar el perfil principal en algunos dispositivos. Vea esta publicación (que está un poco desactualizada) para obtener algunas pautas.
Si tiene usuarios con problemas de reproducción, necesitará averiguar qué video está causando problemas y obtener más detalles sobre qué hardware y software de reproducción están utilizando. Entonces podríamos hablar sobre la resolución de problemas de ese caso en particular.