В последнее время я проигрывал много видео MPEG-TS на MPlayer. Источники видео мне неясны, поэтому я понятия не имею, с каким программным обеспечением были созданы эти видео TS.

Проблема в том, что экранное меню MPlayer часто сообщает неверную метку времени и продолжительность; похоже, это специфично для MPEG-TS, так как я никогда не сталкивался (или, по крайней мере, не могу вспомнить, сталкивался) с такими проблемами с MPEG-4 или H.264.

Например, я вырезал (с помощью FFmpeg) следующий образец из одного из моих видео TS: sample.ts, размещенный на Google Диске (нарушение авторских прав не предполагается). ffprobe sample.ts печатает

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

Когда я проигрываю это видео с помощью MPlayer (параметры не передаются), отметка времени osd начинается примерно в 00:00:01 , а указанная продолжительность составляет 00:03:40 (обратите внимание, что это видео всего 10 секунд!)

Я также проверил это в ffplay-vf showinfo), и проблема с отметкой времени согласуется с MPlayer: информация, показанная для первого кадра,

[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]

Обратите внимание, что pts_time равно 1.43337 вместо ожидаемого 0 . Поэтому я думаю, что проблема связана с libav * . В любом случае, по крайней мере, ffplay сообщает правильную продолжительность, в то время как MPlayer ошибается, что делает сцену более загадочной для меня.

Так что мои вопросы

  1. Это известная проблема / ошибка?

  2. Есть ли возможность исправить это?

Это действительно раздражает меня, так как мне нужно время от времени извлекать временные метки кадра для поиска FFmpeg. Любая помощь с благодарностью.


Для справки, мой MPlayer - это MPlayer UNKNOWN-4.2.1 установленный на OS X 10.9.3 с порта mplayer-devel @36449_4+osd MacPorts.

1 ответ1

0

Я ясно задал этот вопрос из-за недостатка знаний о MPEG-TS. Поведение ожидается, так как MPEG-TS был просто разработан таким образом. По словам Этьена Буйры из списка рассылки MPlayer-пользователей,

AFAIK формат не позволяет достоверно знать, где он находится в потоке (разработан, чтобы быть непрерывным, и так как временные метки не могут расти вечно, есть необходимость их циклически повторять).

Воссоздайте временные метки с помощью FFmpeg:

ffmpeg -i input.ts -c:a copy -c:v copy -fflags +genpts output.ts

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .