php - actualizar - ffmpeg installer
¿Por qué algunos videos MP4 no comenzarán a transmitirse hasta que se descargue todo el archivo? (3)
Esta pregunta ya tiene una respuesta aquí:
- HTML5: cómo transmitir archivos .mp4 de gran tamaño 2 respuestas
Estoy trabajando en una aplicación donde los usuarios cargan un video y lo reproducen utilizando jwplayer, jplayer, flowplayer, etc. Algunos videos se reproducen de inmediato, mientras que otros esperan hasta que se haya descargado todo el archivo de video.
Estoy usando ffmpeg para convertir el video al formato mp4.
Aquí hay información detallada sobre uno de los archivos de video que probé.
General
Complete name : 429183132058337290450_AutoFF.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 10.2 MiB
Duration : 24s 333ms
Overall bit rate : 3 501 Kbps
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings, CABAC : Yes
Format settings, ReFrames : 3 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 24s 333ms
Bit rate mode : Variable
Bit rate : 3 351 Kbps
Width : 1 024 pixels
Height : 560 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.195
Stream size : 9.72 MiB (96%)
Language : Japanese
Tuve el mismo problema por más tiempo cuando usé ffmpeg para crear videos MP4. Lo que finalmente funcionó fue simplemente agregar preload = "metadata" a la etiqueta html5:
<video preload="metadata"><source src="..." /></video>
Tuve este problema con algunos videos MP4 también. Estaba convirtiendo videos cargados en mp4 (h.264 + aac) y no almacenan en búfer. La razón es que este formato contiene algunos metadatos importantes necesarios para la reproducción al final del archivo, por lo tanto, el archivo completo debe cargarse antes de que la reproducción pueda comenzar. La solución fue utilizar un pequeño programa llamado qt-faststart
( https://github.com/danielgtaylor/qtfaststart ) sobre el resultado de la conversión. Este programa reubica estos metadatos al principio del archivo haciendo posible la reproducción progresiva de la descarga.
Use ffmpeg
con la opción -movflags +faststart
. Esto reubicará el átomo moov
al principio del archivo, permitiendo así que el cliente comience la reproducción sin la necesidad de descargar completamente el archivo primero.
Puede usarlo en su comando de codificación, o puede usarlo con un archivo existente y simplemente volver a mux:
ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4