actionscript-3 - convertidor - mjpeg vs h264
¿Cuáles son las especificaciones de Motion JPEG? (8)
Aparentemente no hay una sola especificación. De la wikipedia :
Criticas
A diferencia de los formatos de video especificados en estándares internacionales como MPEG-2 y el formato especificado en el estándar de codificación de imágenes fijas JPEG, no hay ningún documento que defina un único formato exacto que sea universalmente reconocido como una especificación completa de "Motion JPEG" para uso en todos los contextos. Esto plantea problemas de compatibilidad con las salidas de archivos de diferentes fabricantes.
He estado buscando en Google como loco y no puedo encontrar ninguna especificación de formato de archivo para mjpeg.
¿Cómo debería ser el encabezado? ¿Acabo de agregar una serie de jpegs después del encabezado?
Sé que es el que normalmente está en el contenedor .avi, ¿tiene un formato estandarizado para códecs que pueda contener?
El objetivo es hacerlo en actionscript 3, pero sería bueno partir de otros idiomas. He intentado mirar ffmpeg y mplayer, pero c no es mi lado fuerte (todavía).
¡Cualquier sugerencia sera apreciada!
Después de muchos días de búsqueda en Internet, tampoco pude encontrar la documentación completa ni un ejemplo binario del protocolo de archivo.
Para obtener el recurso más informativo que he encontrado hasta ahora, consulte http://www.digitalpreservation.gov/formats/fdd/fdd000127.shtml (Formato de archivo Motion JPEG 2000 - tiene muchas "URL de referencias útiles" al final que incluyen "Descripción general de Motion JPEG2000 "que al menos ayuda a responder la pregunta).
Encontrará abundantes archivos PDF de Apple MOV, que aparentemente abarcan Motion JPEG, pero llevaría semanas descifrarlos. Solo puedo sugerir a otros que la URL anterior es un buen punto de partida para futuras investigaciones.
El IETF tiene el estándar definido como RFC 2435 . No sé qué códecs admitirán esto, pero esta parece ser la especificación de datos.
En Motion JPEG, cada cuadro de video o campo entrelazado de una secuencia de video digital se comprime por separado como una imagen JPEG. Entonces la especificación de cada cuadro (como el factor de calidad) almacenado en It''s Header. en otras palabras, su problema se reduce a esto: "¿Cómo leer el encabezado de un fotograma en un video?"
Tal vez puedas usar JPEG Toolbax de Phil Sallee. Tenga en cuenta que tiene alguna función para leer / escribir una imagen JPEG y otra para visualizar Matrices DCT, Factor de calidad, Tablas de codificación Huffman, etc.
Si encuentra cómo usar esta función en video y / o cómo leer las especificaciones de un video MJPEG, por favor, comparta
MJPEG sobre HTTP al menos tiene una implementación bastante estándar. Se devuelve como una respuesta HTTP de varias partes.
El artículo de Wikipedia discute el mecanismo exacto:
No hay una única especificación oficial. Pero alguna compañía hizo su propia especificación:
Especificación del formato de archivo QuickTime ( https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFPreface/qtffPreface.html )
Formato Motion JPEG, especificación QuickTime M-JPEG ( http://staticky.com/dl/ftp.apple.com/developer/Development_Kits/QuickTime/Programming_Stuff/Documentation/QuickTime-JPEGSpec.pdf )
Extensiones de formato de archivo AVI Microsoft OpenDML ( http://www.morgan-multimedia.com/download/odmlff2.pdf )
Puede encontrar este documento en otros lugares de la red aunque no sé cuál es una fuente autorizada: http://www.cajunbot.com/wiki/images/7/71/USB_Video_Payload_MJPEG_1.1.pdf
En la práctica, en su forma más simple, un mjpeg es simplemente una concatenación de archivos jpeg, uno después del otro en el mismo archivo.
ffmpeg es compatible con los -f mjpeg
o -vcodec mjpeg
.
Los decodificadores JPEG que decodifican varias imágenes deben recordar y usar las mismas tablas jpeg para las imágenes siguientes si esas imágenes no proporcionan reemplazos. El estándar jpeg describe esto como ''corrientes jpeg abreviadas'', y libjpeg admite.
Entonces un mjpeg puede contener una imagen jpeg completa, y luego bloques SOI..EOI subsiguientes que no especifican los encabezados que están duplicados en el cuadro anterior.