Поделиться через


Время в службах редактирования DirectShow

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

[Этот API не поддерживается и может быть изменен или недоступен в будущем.]

Для редактирования видео необходимо работать с некоторыми важными понятиями времени. Пример:

  • У каждого клипа есть длительность.
  • Клипы, переходы и эффекты отображаются в определенное время в проекте.
  • Видео имеет частоту кадров, выраженную в кадрах в секунду (fps).

Службы редактирования DirectShow (DES) предоставляют различные методы, которые задают или извлекают время и частоту кадров. Значение этих значений зависит от контекста.

Значения времени

Если параметр выражает время, возможны три различных значения:

  • Временная шкала: время относительно начала временная шкала. Например, клип может начинаться через 2 секунды до временная шкала или переход через 15 секунд в временная шкала. Временная шкала определяет окончательный отрисованный проект, поэтому вы также можете представить временная шкала время как "время проекта".
  • Время мультимедиа: точка в исходном файле относительно начала файла, достигнутая во время обычного воспроизведения. Например, если у вас есть 10-секундный видеофайл, точка в середине файла происходит в 5 секунд, что выражается как время мультимедиа.
  • Родительское время: время относительно объекта в временная шкала. Например, если объект начинается с 8 секунд на временная шкала и содержит другой объект, который начинается с 10 секунд на временная шкала, дочерний объект начинается с 2 секунд относительно родительского объекта. Виртуальная отслеживает все начало в нулевое время относительно временная шкала. Таким образом, для любого объекта в виртуальной дорожке родительское время равно временная шкала времени.

Время мультимедиа применяется только к исходным объектам. Каждый исходный объект имеет время начала носителя и время остановки носителя. Например, предположим, что у вас есть 10-секундный видеоклип и вы хотите использовать только 5 секунд от середины клипа, обрезая первые 2 секунды и последние 3 секунды от клипа. Если вы хотите, чтобы клип отображался в проекте через 20 секунд (при условии нормальной скорости воспроизведения), необходимо указать следующее время начала и остановки.

  • Начало мультимедиа: 2 секунды

  • Остановка мультимедиа: 7 секунд

  • Начало временной шкалы: 20 секунд

  • Остановка временной шкалы: 25 секунд

    вставка исходного клипа на временная шкала

Частота кадров

Частота кадров — это "скорость" потока мультимедиа, измеряемая в кадрах в секунду. Как и в случае со значениями времени, значение частоты кадров зависит от контекста:

  • Частота выходных кадров: Частота кадров окончательного отрисованного проекта, определяемая группой. При отрисовки проекта каждая группа становится отдельным потоком мультимедиа с собственной частотой кадров.
  • Частота кадров источника: Частота кадров, с которой был создан исходный файл. Частота кадров, созданная для группы, не обязательно соответствует частоте выходных кадров группы. ПРИ необходимости DES автоматически выполняет upsample или downsample для файла. Для большинства форматов мультимедиа DES может определить частоту кадров, изучив формат. Последовательность DIB является исключением; Необходимо указать частоту кадров последовательности DIB. (Дополнительные сведения см. в разделе Работа с источниками.)

Скорость воспроизведения: Видимая скорость исходного клипа при его отображении в проекте. Например, 10 секунд видео можно поместить в 5 секунд на временная шкала. В результате скорость клипа увеличивается в 2 раз, как показано на следующей схеме.

ускорение воспроизведения исходного кода

(При использовании источника звука шаг также будет меняться.) Следующая формула определяет скорость воспроизведения исходного клипа:

  • Скорость воспроизведения = (остановка мультимедиа — запуск мультимедиа) / (временная шкала остановки — запуск временной шкалы)

Обратите внимание, что каждая из этих трех ставок не зависит от других:

  • Вы можете ускорить или замедлить клип, отрегулируя время мультимедиа; Это не влияет на частоту кадров окончательного вывода.
  • Вы можете увеличить или уменьшить частоту выходных кадров, не влияя на скорость воспроизведения файла.
  • Вы можете смешивать в одной группе исходные файлы с разными частотами кадров, и DES будет использовать каждый клип в соответствии с частотой кадров группы.

При отрисовки проекта все время округляется до ближайшей границы кадра, определяемой частотой кадров группы. Например, предположим, что группа видео имеет частоту кадров 30 кадров/с. Каждый кадр составляет примерно 33 миллисекунда (мс). Предположим, вы добавляете исходный клип со значением 1,68 секунды в временная шкала, начиная с нуля времени. Источник не заканчивается точно на границе кадра, поэтому DES округляет время остановки до 1,6666 секунды (50 кадров). Если вы ищете 1,68 секунды в отрисованном проекте, вы будете искать после конца источника, до 51-го кадра.

Однако DES не перезаписывает время остановки источника. Позже вы можете изменить частоту кадров группы или переместить источник в новое место в временная шкала где он округляется по-другому. Таким образом, DES сохраняет исходное время остановки и округляет только при необходимости. Дополнительные сведения см. в разделе IAMTimelineObj::FixTimes.

начало работы со службами редактирования DirectShow