2013-04-15 3 views
0

Я работаю над приложением медиаплеера: который воспроизводит аудио и видео ISDB-T. Я использую GStreamer для декодирования & рендеринга.Calculate TS File Duration

Для идеальной работы AV Sync я должен регулировать чтение файлов: чтобы данные не были перенаправлены в Gstreamer слишком быстро или слишком медленно.

If I know the duration of TS file before hand, then I can regulate my reads. But how to calculate the TS file duration ? 

Потому что, мне нужно проверить приложение с несколькими TS файлов, не может рассчитать продолжительность использования некоторые утилиты и сохранить изменения файла читает - Как это может быть достигнуто в программе?

Спасибо,

Kranti

ответ

2

Если у Вас есть достаточные знания в кодировании и слой ПЭС внутри транспортного потока, то вы можете прочитать временные отметки внутри ТС и рассчитать его самостоятельно. Для этого требуется поиск конца файла, поиск последней метки времени и вычитание первой метки времени той же программы в начале файла.

0

В большинстве случаев каждый заголовок PES содержит PTS и/или DTS, который измеряется частотой 90 кГц. поэтому этапы могут включать в себя:

  1. найти программу, которую необходимо использовать для демонстрации из MPEG TS.
  2. найти ПИД-поток.
  3. найти первый пакет TS с найденным PID, а значение value_load_start_indicator установлено равным 1; это будет начало кадра PES, который будет содержать заголовок PES.
  4. Разберите заголовок PES, чтобы найти начальную PTS потока.
  5. проанализируйте файл в обратном направлении от конца, чтобы найти пакет с таким же набором PID и payload_start_indicator, который будет содержать последнюю PTS. найти их разницу, разделить его на 90000 даст продолжительность в секундах