¿Cómo puedo convertir some.flv
o some.avi
o some.wmv
con FFmpeg para asegurarse de que el vídeo se podrá jugar y reubicable en JW jugador?
fuente
¿Cómo puedo convertir some.flv
o some.avi
o some.wmv
con FFmpeg para asegurarse de que el vídeo se podrá jugar y reubicable en JW jugador?
Esta es una respuesta al último comentario de usted @abrahab.
No necesita mp4box
un archivo para poder transmitirlo de forma pseudo a través de nginx. El módulo de transmisión MP4 lo cuida independientemente del posicionamiento de los átomos de moov ( mp4box
desplaza el átomo de moov al comienzo del archivo).
Ahora para el error del servidor 500, ¿está usando la opción "-frag" con mp4box? El módulo de transmisión MP4 no puede leer archivos MP4 fragmentados. Un buen uso de mp4box
pseudo streaming es intercalar los videos para una mejor búsqueda. El desplazamiento del átomo de Moov es una ventaja adicional.
Siempre hago esto en mp4box
un archivo codificado con FFmpeg
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Esto también intercalará el archivo MP4 en 500 milisegundos de fragmentos por defecto.
MP4Box -isma -inter 500 Myvideo.mp4
H.264 en MP4
En general, desea crear video x264 dentro de un contenedor MP4. Esta opción es compatible básicamente con cualquier dispositivo y navegador.
Lo siguiente debería ser suficiente. Asegúrese de reemplazar el nombre de entrada y las opciones de CRF. Este último establece la calidad, donde los valores razonables oscilan entre 19 y 25: menor significa mejor calidad, pero también mayor tasa de bits:
También puede usar Handbrake para codificar si le gusta la forma de GUI.
Usando la
faststart
opciónAhora, lo que debe hacer es mover el átomo MOOV del contenedor MP4 al principio. Este átomo (en esencia, una unidad de datos en el contenedor MP4) contendrá metadatos importantes sobre las transmisiones de video / audio.
-movflags faststart
debería hacer exactamente eso.Si su versión de FFmpeg no tiene esta opción, considere actualizar. Si no puede actualizar, puede lograr lo mismo con cualquiera de las siguientes herramientas:
QTIndexSwapper , una aplicación de Adobe AIR
MP4Box , de código libre y abierto, ejecuta un comando similar al siguiente, donde puede cambiar el intervalo (aquí, 500):
qt-faststart en Python , que funciona en todas partes donde está instalado Python.
Eso es todo.
Control de bitrate / calidad
Ahora, por supuesto, para la transmisión, es posible que desee restringir la tasa de bits para mantenerse dentro de ciertos límites. Puede leer más sobre eso en mi publicación de blog sobre métodos de control de velocidad .
Por ejemplo, al agregar
-maxrate 2M -bufsize 2M
a las opciones de codificación, limita la codificación a 2 Mbit / s, que puede ser suficiente para video de 720p. La tasa de bits requerida dependerá, por supuesto, de lo complejo que sea el contenido. Esto lleva algo de prueba y error.fuente
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
entoncesmp4box
y mp4 no puede buscar y nginx reporta el500 internal server error
parámetro de inicio más que0
. cuando el video está codificado sin-vcoded libx264
(codificador mp4 predeterminado) todo el archivo de trabajo (pero calidad! enfermo!) :( (lo siento, ahora, no se permite votar tu respuesta)-movflags faststart
exactamente lo que necesitabaSimplemente puede convertir un AVI o MP4 no transmisible, también sin volver a codificar todo, haciendo esto:
No hay necesidad de volver a codificar nada, porque solo se debe mover el átomo de moov.
fuente
Puedes probar esto con ffmpeg:
fuente
-acodec pcm_s16le
(error:)Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
. Parece que también falta una buena razón, como un borrador de IETF, de por qué elegir exactamente estos parámetros.