%3F.png)
Я пытаюсь извлечь временные метки субтитров из файла M2TS с помощью ffprobe
. Это не работает так, как ожидалось. Известно, что файл M2TS содержит 1001 субтитр в дорожке 4, но я получаю около 4000 временных меток. Более того, эти временные метки связаны странным образом и не отсортированы.
Командная строка, которую я использую:
ffprobe -show_entries packet=stream_index,pts,duration -of compact=p=0:nk=1 input.m2ts > ts.txt
ts.txt
затем содержат блоки вроде следующих (я вставил пустые строки для удобства чтения):
4|57795041|N/A|
4|57795000|N/A|
4|57789168|N/A|
4|57789250|N/A|
4|57789250|N/A|
4|57982728|N/A|
4|57982687|N/A|
4|57982686|N/A|
4|63380621|N/A|
4|63380580|N/A|
4|63374748|N/A|
4|63374830|N/A|
4|63374830|N/A|
... and so on
Каждый блок соответствует одному субтитру. Временные метки в блоке не сортируются. Последние две временные метки в блоке идентичны или отличаются максимум на 1 тик. Временная база — 90000 ticks / s
.
Я убежден, что моя проблема вызвана моим непониманием того, как ffprobe
работают и как временные метки субтитров встраиваются в контейнер. Может ли кто-нибудь вкратце объяснить, как правильно извлекать временные метки субтитров? Меня интересуют только временные метки PTS.
Затем я добавил информацию о кадре в вывод и заставил его распечатать раздел и ключи:
ffprobe -show_entries packet=stream_index,pts,duration:frame -of compact input.m2ts > ts.txt
Это не помогло; ниже показан пример выходных данных:
packet|stream_index=4|pts=76826553|duration=N/A|
packet|stream_index=4|pts=76826144|duration=N/A|
packet|stream_index=4|pts=76826143|duration=N/A|
subtitle|
Помимо того, что он стал более подробным, теперь есть дополнительные subtitle
записи разделов, но они не содержат данных. Конечно, теперь есть и дополнительные frame
записи разделов, но я их не показывал, поскольку ни одна из них не связана с субтитрами.
Наконец, я хотел бы заявить, что ffprobe
в целом это кажется подходящим инструментом для извлечения временных меток PTS: Временные метки аудио и видео, которые я извлекаю таким же образом, все верны. Проблема возникает только с временными метками субтитров.