Как использовать временные метки для поиска в файлах.m2ts?
У меня есть видео файл.m2ts (VBR, продолжительность = 1 час).
Мне нужно знать, с какого байта я должен прочитать этот файл, если я хочу начать воспроизведение этого файла с 20 минут.
M2TS - это стандартный TS с 4-байтовой меткой времени перед байтом синхронизации (0x47), но я не понимаю, как его использовать. Пожалуйста, смотрите следующие метки времени перед байтом синхронизации в моем видеофайле:
0D 9E E2 02
35 8B 62 28
1D 77 E2 4F
05 64 62 76
2D 50 E2 9C
15 3D 62 C3
3D 29 E2 E9
25 16 63 10
Может кто-нибудь объяснить, как использовать метки времени для поиска в файлах.m2ts?
1 ответ
M2TS
не имеет 4-байтовой метки времени.
Что он имеет, так это 4-байтовый TP_extra_header
состоящий из 2-bit
индикатор разрешения копирования плюс 30-bit
отметка времени прибытия (ATS) с разрешением 27 MHz
,
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| C | ATS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| TS [188 bytes] |
| |
| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
Так как BDAV
Формат предназначен для хранения, он использует транспортные потоки с переменной скоростью (VBR) вместо типичных потоков с постоянной скоростью (CBR), найденных в широковещательной передаче, для экономии места. Время прибытия записывается, чтобы иметь возможность преобразовывать переменный поток в постоянную скорость и T-STD-совместимый для воспроизведения.
Эта временная метка будет переноситься каждый (2^30 - 1) / 27000000 ~= 39.768
секунд.
Например: 1D77E24F ∧ 3FFFFFFF
в десятичном виде 494395983 / 27000000 ~= 18.32
секунд.
Я не очень знаком с BD, но я думаю, что больше информации о m2ts
файлы хранятся в clpi
а также mpls
сопроводительные файлы. Если у вас есть только m2ts
файл, который вы должны будете искать с помощью ПЦР.