#video #video-encoding
#Видео #кодирование видео
Вопрос:
Мне было интересно, поддерживает ли какой-либо из видеостандартов внедрение таймкода при захвате / записи.
У меня есть требование записывать и воспроизводить несколько видеопотоков, сохраняя при этом их синхронизацию.
Ответ №1:
Большинство широковещательных видеокодеков позволяют помечать кадры временным кодом SMPTE или положением кадра.
- Пользовательские данные MPEG могут содержать временные коды. Пакеты TS в формате MPEG-2 имеют временной код.
- Кадры DV кодируются с помощью временного кода.
- H.264 очень гибок в отношении информации о времени. Кадры кодируются с указанием положения кадра. В конечном блоке SPS могут быть дополнительные данные синхронизации, если установлен timing_info_present_flag.
Есть заметные исключения. Некоторые внутрикадровые видеоформаты, такие как JPEG-2000 или DNxHD, не содержат информации о временном коде.
Дополнительная информация о временном коде обычно передается в формате контейнера (QuickTime, MPEG TS, MXF и т.д.).
Ответ №2:
На самом деле вам не нужен встроенный таймкод в видео для этого, в заголовке видео достаточно полей, чтобы помочь вам разобраться в этом.
Каждый кадр «помечается» этим:
start time sum of all previous frame durations
Учитывая, что у вас есть относительная начальная точка (которая может быть сохранена в заголовке видео для каждой дорожки), вы можете отслеживать, когда должен отображаться каждый кадр.
Длительности указаны в stts atom, и вы можете указать относительную начальную точку в заголовке носителя atom (обратите внимание на временные области создания / модификации)
Ответ №3:
Таймкод не связан непосредственно с самим кодеком. «Кодек» — это метод кодирования, в данном случае видео, а поверх него прикреплен таймкод, который обычно записывается вместе с закодированными видеокадрами в файл. Почти все форматы сохраняют время кадра, некоторые форматы имеют фиксированную частоту кадров, некоторые обеспечивают большую гибкость.
При воспроизведении речь идет о фреймворке для принудительного применения временных меток и представления кадров вовремя, в частности, для синхронизации нескольких потоков.
Ответ №4:
Если размер видео не имеет значения: у DV есть временной код в каждом кадре. Я думаю, что MPEG 1/2 также может иметь временной код (SMPTE timecode) в своем потоке данных. h264 может встраивать переменные данные в свой поток данных как NAL-SEI-UserData-Block. IPCam, такие как Axis и Basler, встраивают cameratime и triggerdata в такие блоки данных.