У меня есть .m2ts видеофайл (VBR, продолжительность = 1 час).
Мне нужно знать, из какого байта я должен прочитать этот файл, если я хочу начать играть в этот файл с 20 минут.
M2TS является стандартным TS с 4-байтной меткой времени перед синхронизирующим байтом (0x47), но я не понимаю, как это использовать. Пожалуйста, смотрите следующие временные метки перед байтом синхронизации в моем видео файле:
0D 9E E2 02
35 8B 62 28
1D 77 E2 4F 2D 50 E2 9С
15 3D 62 C3
3D 29 E2 E9 Может кто-нибудь объяснить, как использовать временные метки для поиска в файлах .m2ts?Как использовать временные метки для поиска в файлах .m2ts?
ответ
M2TS
не имеет a 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) потоков найдены в эфире, чтобы сэкономить пространство. Время прибытия записывается для того, чтобы иметь возможность convert the variable stream into a constant rate и T-STD, совместимый для воспроизведения.
Эта метка времени перевернется через каждые (2^30 - 1)/27000000 ~= 39.768
секунд.
Для например: 1D77E24F ∧ 3FFFFFFF
есть десятичный 494395983/27000000 ~= 18.32
секунд.
Я не очень-то знаком с BD, но думаю, что более подробная информация о файлах m2ts
содержится в файлах clpi
и mpls
. Если у вас есть только файл m2ts
, вам придется искать с помощью ПЦР.
Большое спасибо за объяснение! –