Velocidad de fotogramas incorrecta, reproducción corrupta de archivos isom/mp4 retransmitidos desde H.264/AC3 MPEG-TS

NOTA: Esta pregunta es reemplazada por esta nueva , no responda debajo de esta publicación.

¿Qué sucedió?

  • [Editar] El archivo DVB ('file1') en formato TS de H.264/AC3@50i no se puede remuxar correctamente a ninguno de los siguientes formatos: isom/mp4; QuickTime MOV; Matrosca

  • Otro archivo DVB ('file2') en formato TS de MPEG-2/MP2@59.94i se puede remuxar correctamente a cualquiera de los siguientes formatos: MPEG; isom/mp4. QuickTime MOV y Matroska no se prueban.

  • [Actualización] Otro en formato TS de H.264/AAC@29.97p se puede remuxar correctamente a isom/mp4 sin problemas, sin necesidad de cambiar ffmpeg aparte de -i, -c copy.

Detalles técnicos

  • FFMpeg informa millones de los siguientes mensajes de error, con o sin cualquier combinación posible de estos modificadores: -fflags +genpts, -fflags +igndts, -fflags +discardcorrupt

    • línea de comando esffmpeg.exe -fflags +igndts -fflags +genpts -fflags +discardcorrupt -i INPUT -c copy -format mp4 OUTPUT
    • Mensaje de error 1:
      [mp4 @ address] pts no tiene valor
      Último mensaje repetido xxx veces
    • Mensaje de error 2:
      [mp4 @ dirección] DTS no monótono en el flujo de salida 0:0. Anterior... Actual... Cambiando a..., bla, bla
  • AVIDemux completa la operación con metadatos incorrectos y reproducción defectuosa. Las propiedades del archivo y el comportamiento de reproducción se asemejan a los creados por FFMpeg

    • La velocidad de fotogramas se vuelve variable, debe ser 50i
    • La velocidad de fotogramas promedio no es el valor correcto, mostrando números muy extraños
    • La velocidad de fotogramas de reproducción es anormal, oscilando por cierto. 59.94 y 39.xx
  • [Editar] MP4box informa las siguientes advertencias 2 veces y produce una imagen irregular con una velocidad de fotogramas incorrecta como se mencionó anteriormente. Si observa el video resultante con mucho cuidado, verá la imagen con muchos bloques; esto no se encuentra en el archivo original.

    • línea de comando esmp4box.exe -fps 50 -add "INPUT#video" OUTPUT
    • Mensaje de error:
      [MPEG-2 TS] PID xx discontinuidad de PCR señalada pero la diferencia es pequeña (diff xx us - PCR diff xx vs prev PCR diff 0) - ignórelo

Mis preguntas, en detalle

1 ¿Qué diablos es "DTS" y "PTS"? Parecen estar obstruyendo un remux exitoso.
2 ¿Se debe a un archivo dañado o a un error de software (consulte https://trac.ffmpeg.org/ticket/4768 y https://trac.ffmpeg.org/ticket/502 )?
3 Si se trata de un error de software, ¿cuáles son las soluciones alternativas?
4 Cualquier solución viable que remuxe MPEG Transport Streams a MP4 es bienvenida. MPEG-TS consume demasiados gastos generales y no es compatible con todas las plataformas y sistemas.

Información de diagnóstico:
volcado de MediaInfo de file1, file2 y file1 remuxed en mp4 por FFMpeg
http://pastebin.ca/3966322

¿Qué significa reproducción corrupta - errores de decodificación? ¿La velocidad de reproducción siempre es incorrecta o varía?
@Mulvya, la velocidad de reproducción siempre es incorrecta; la imagen del marco parece estar bien; el decodificador puede funcionar, pero aparentemente el archivo no se puede utilizar.
¿Un remux de TS a TS conserva la velocidad de reproducción? El store methodde file1 es inusual. Prueba con ffmbc . Si no puede compilar, obtenga un binario anterior de videohelp.com/software/ffmbc
@Mulvya, TS→TS remux funciona en FFMpeg con las siguientes opciones especificadas: -mpegts_service_type advanced_codec_digital_hdtv -mpegts_m2ts_mode false -mpegts_flags system_b; funciona en FFMbc con -fflags +genptsespecificado. TS→mp4 tuvo éxito en FFMbc (0.7.2) con -fflags +genpts -f mp4especificado. El truco de ffmbc funcionó para este archivo y algunos otros, el resto aún falló. El problema parece estar centrado en la marca de tiempo. Se ha publicado una nueva pregunta para reemplazar a esta.

Respuestas (1)

Para responder parte de su pregunta (y agregar un par de otras abreviaturas con las que se encontrará):

  • PTS = Marca de tiempo de presentación
  • DTS = Sello de tiempo de decodificación
  • PCR = Referencia de reloj del programa
  • SCR = Referencia de reloj del sistema

Los flujos elementales MPEG reordenan las tramas para la transmisión. El PTS indica el orden en que se deben volver a montar los marcos. El DTS le permite al decodificador saber si un cuadro debe decodificarse antes de que se muestre (porque un cuadro P o B hace referencia a él). Los PCR o SCR son la escala de tiempo a la que hacen referencia el PTS y el DTS.

tstools y otros analizadores de flujo de transporte pueden ayudarlo a determinar si el problema de PCR/PTS/DTS está en el archivo de origen o no.

¡Los enlaces que has proporcionado son simplemente fabulosos! Sin embargo, me estoy confundiendo más después de leer las páginas 43-44 del PDF. Aunque el PTS puede no ser monótono como resultado de la codificación bidireccional, esto no debería causar frustraciones para un (de) multiplexor adecuado porque (i) el flujo se transmite y recibe de acuerdo con el DTS que tiene que ser (a) monótono y ( b) <= PTS-1, y (ii) cada campo debe tener un PTS significativo. Si el millón de "pts no tiene valor" y "DTS no monótono" en FFMpeg son reales, ¿cómo sería posible tener una reproducción impecable del archivo ts original (que tengo)?
Definitivamente no es probable que haya un problema de fuente que no se detecte durante la reproducción y solo ocurra durante la transcodificación. Pero cuando quiero estar seguro de algo en un flujo de transporte, lo paso por un analizador. A veces detectas algo sutilmente incorrecto que un decodificador puede corregir y que otro se atraganta.