Reprodução de MPEG-TS com o MPlayer: data / hora atual e duração estão erradas

0

Recentemente tenho jogado muitos vídeos MPEG-TS no MPlayer. As fontes dos vídeos não são claras para mim, então não tenho idéia de com qual software esses vídeos do TS foram criados.

O problema é que o OSD do MPlayer freqüentemente relata o timestamp e a duração errados; isso parece ser específico do MPEG-TS já que eu nunca encontrei (ou ao menos não me lembro de encontrar) tais problemas com o MPEG-4 ou o H.264.

Por exemplo, cortei (com o FFmpeg) a amostra a seguir de um dos meus vídeos do TS: sample.ts hospedado no Google Drive (sem intenção de violação de direitos autorais). ffprobe sample.ts imprime

Input #0, mpegts, from 'sample.ts':
  Duration: 00:00:09.99, start: 1.423344, bitrate: 2827 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 1920x1080 [SAR 1:1 DAR 16:9], max. 104857 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 123 kb/s

Quando reproduzo este vídeo com o MPlayer (sem opções passadas), o timestamp osd começa em torno de 00:00:01 , enquanto a duração relatada é 00:03:40 (note que este vídeo tem apenas 10 segundos!).

Eu também testei isso em ffplay (com -vf showinfo ), e a questão do timestamp é consistente com o MPlayer: a informação mostrada para o primeiro quadro é

[Parsed_showinfo_0 @ 0x7fbd5242c620] n:0 pts:129003 pts_time:1.43337 pos:564 fmt:yuv420p sar:1/1 s:1920x1080 i:P iskey:1 type:I checksum:405DDE4C plane_checksum:[58C83B11 F8FAD95C B874C9D0]

Observe que pts_time é 1.43337 em vez do esperado 0 . Então, eu acho que o problema está relacionado a libav * . De qualquer forma, pelo menos ffplay informa a duração correta, enquanto o MPlayer está errado , o que torna a cena mais intrigante para mim.

Então minhas perguntas são

  1. Este é um problema / bug conhecido?

  2. Existe alguma opção para corrigir isso?

Isso é muito chato para mim, já que eu preciso extrair timestamps de quadros para o FFmpeg procurar de tempos em tempos. Qualquer ajuda é muito apreciada.

Para sua referência, o meu MPlayer está MPlayer UNKNOWN-4.2.1 instalado no OS X 10.9.3 da mplayer-devel @36449_4+osd port do MacPorts.

    
por 4ae1e1 15.06.2014 / 08:31

1 resposta

0

É evidente que fiz esta pergunta devido à falta de conhecimento do MPEG-TS. O comportamento é esperado, já que o MPEG-TS foi simplesmente projetado dessa maneira. De acordo com Etienne Buira, na lista de usuários do MPlayer ,

AFAIK the format does not allow to reliably know where it is in the stream (designed to be continuous, and as the timestamps cannot grow forever, there is a need to cycle them).

Recrie os timestamps com o FFmpeg:

ffmpeg -i input.ts -c:a copy -c:v copy -fflags +genpts output.ts
    
por 15.06.2014 / 18:40