Partilhar via


Tempo nos Serviços de Edição DirectShow

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

[Esta API não é suportada e pode ser alterada ou indisponível no futuro.]

Para editar vídeo, você deve trabalhar com alguns conceitos importantes de temporização. Por exemplo:

  • Cada clipe tem uma duração.
  • Clipes, transições e efeitos aparecem em determinados momentos em um projeto.
  • O vídeo tem uma taxa de quadros, expressa em quadros por segundo (fps).

DirectShow Editing Services (DES) fornece vários métodos que definem ou recuperam tempos e taxas de quadros. O significado destes valores depende do contexto.

Valores de Tempo

Quando um parâmetro expressa um tempo, três significados distintos são possíveis:

  • Tempo na linha do tempo: O tempo relativo ao início da linha do tempo. Por exemplo, um clipe pode começar 2 segundos na linha do tempo ou uma transição pode ocorrer 15 segundos na linha do tempo. A linha do tempo determina o projeto renderizado final, para que você também possa pensar no tempo da linha do tempo como "tempo do projeto".
  • Media time: Um ponto num ficheiro de origem relativo ao início do ficheiro, tal como alcançado durante a reprodução normal. Por exemplo, se tiveres um ficheiro de vídeo de 10 segundos, o ponto no meio do ficheiro ocorre aos 5 segundos, expresso como um tempo de média.
  • Tempo principal: Tempo relativo a um objeto na linha temporal. Por exemplo, se um objeto começa em 8 segundos na linha do tempo e contém outro objeto que começa em 10 segundos na linha do tempo, o objeto filho começa em 2 segundos em relação ao pai. Todas as faixas virtuais começam no tempo zero, em relação à linha do tempo. Assim, para qualquer objeto numa pista virtual, o tempo parental é igual ao tempo da linha de tempo.

O tempo de mídia se aplica apenas a objetos de origem. Cada objeto de origem tem uma hora de início de mídia e uma hora de parada de mídia. Por exemplo, suponha que você tenha um clipe de vídeo de 10 segundos e queira usar apenas 5 segundos a partir do meio do clipe, cortando os primeiros 2 segundos e os últimos 3 segundos do clipe. Se você quiser que o clipe apareça 20 segundos no projeto (e assumindo uma taxa de reprodução normal), especifique os seguintes horários de início e parada.

  • Início da mídia: 2 segundos

  • Paragem multimédia: 7 segundos

  • Início da linha do tempo: 20 segundos

  • Paragem da linha cronológica: 25 segundos

    inserir um clipe de origem na linha temporal

Taxas de quadros

A taxa de fotogramas é a "velocidade" de um fluxo de mídia, medida em fotogramas por segundo. Tal como acontece com os valores de tempo, o significado de uma taxa de quadros depende do contexto:

  • Taxa de frames de saída: A taxa de frames do projeto final renderizado, definida pelo grupo. Quando você renderiza o projeto, cada grupo se torna um fluxo de mídia separado com sua própria taxa de quadros.
  • Taxa de quadros de origem: A taxa de quadros na qual o arquivo de origem foi originalmente criado. A taxa de quadros original não precisa corresponder à taxa de quadros de saída definida pelo grupo. DES fará automaticamente a amostragem superior ou inferior do ficheiro, conforme necessário. Para a maioria dos formatos de mídia, o DES pode determinar a taxa de quadros examinando o formato. Uma sequência DIB é uma exceção; você deve especificar a taxa de quadros de uma sequência DIB. (Para obter mais informações, consulte Trabalhando com fontes.)

Taxa de reprodução: A velocidade aparente de um clipe de origem quando ele aparece no projeto. Por exemplo, 10 segundos de vídeo podem ser encaixados em 5 segundos na linha do tempo. Como resultado, a velocidade do clipe aumenta por um fator de 2, como ilustra o diagrama a seguir.

fazer uma fonte tocar mais rápida

(Com uma fonte de áudio, o tom também mudaria.) A fórmula a seguir determina a taxa de reprodução de um clipe de origem:

  • Taxa de reprodução = (Fim da Mídia – Início da Mídia) / (Fim da Linha do Tempo – Início da Linha do Tempo)

Note que cada uma destas três taxas é independente das outras:

  • Você pode acelerar ou diminuir a velocidade de um clipe ajustando os tempos de mídia; Isso não afeta a taxa de quadros da saída final.
  • Você pode aumentar ou diminuir a taxa de quadros de saída sem afetar a velocidade de reprodução de um arquivo.
  • Você pode misturar, dentro do mesmo grupo, arquivos de origem que tenham taxas de quadros criadas diferentes, e o DES aumentará ou reduzirá a resolução de cada clipe para corresponder à taxa de quadros do grupo.

Quando se renderiza um projeto, todos os tempos são arredondados para o limite de fotograma mais próximo, conforme determinado pela taxa de fotogramas do grupo. Por exemplo, suponha que um grupo de vídeos tenha uma taxa de quadros de 30 fps. Cada quadro tem aproximadamente 33 milissegundos (ms). Suponha que você adicione um clipe de origem de 1,68 segundo à linha do tempo, começando no tempo zero. A fonte não termina exatamente num limite do fotograma, por isso o DES arredonda o tempo de paragem para 1.6666 segundos (50 fotogramas). Se você buscar 1,68 segundos no projeto renderizado, vai realmente avançar além do fim da fonte, até ao 51.º frame.

No entanto, o DES não substitui o tempo de parada da fonte. Mais tarde, você pode alterar a taxa de quadros do grupo ou mover a origem para um novo local na linha do tempo onde ela arredonda de forma diferente. Portanto, o DES preserva o tempo de parada original e arredonda apenas quando necessário. Para obter mais informações, consulte IAMTimelineObj::FixTimes.

Introdução ao DirectShow Editing Services