Compartilhar via


Tempo nos Serviços de Edição do DirectShow

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use 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.]

[Essa API não tem suporte e pode ser alterada ou indisponível no futuro.]

Para editar o vídeo, você deve trabalhar com alguns conceitos importantes de tempo. 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).

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

Valores de tempo

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

  • Tempo da linha do tempo: o tempo relativo ao início do linha do tempo. Por exemplo, um clipe pode iniciar 2 segundos no linha do tempo ou uma transição pode ocorrer 15 segundos no linha do tempo. O linha do tempo determina o projeto renderizado final, para que você também possa considerar linha do tempo tempo como "hora do projeto".
  • Tempo de mídia: um ponto em um arquivo de origem relativo ao início do arquivo, conforme atingido durante a reprodução normal. Por exemplo, se você tiver um arquivo de vídeo de 10 segundos, o ponto no meio do arquivo ocorrerá em 5 segundos, expresso como um tempo de mídia.
  • Tempo pai: tempo relativo a um objeto no linha do tempo. Por exemplo, se um objeto começa em 8 segundos no linha do tempo e contém outro objeto que começa em 10 segundos no linha do tempo, o objeto filho começa em 2 segundos em relação ao pai. Todas as faixas virtuais começam no momento zero, em relação ao linha do tempo. Portanto, para qualquer objeto em uma faixa virtual, o tempo pai é igual a linha do tempo tempo.

O tempo de mídia se aplica somente 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 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

  • Parada de mídia: 7 segundos

  • Início da linha do tempo: 20 segundos

  • Parada da linha do tempo: 25 segundos

    inserindo um clipe de origem em um linha do tempo

Taxas de quadros

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

  • Taxa de quadros de saída: A taxa de quadros do projeto renderizado final, 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 criada não precisa corresponder à taxa de quadros de saída do grupo. O DES aumentará ou reduzirá automaticamente o tamanho do arquivo, 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 ajustados em 5 segundos no linha do tempo. Como resultado, a velocidade do clipe aumenta em um fator de 2, como ilustra o diagrama a seguir.

tornando um jogo de origem mais rápido

(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 = (Media Stop – Media Start) / (Timeline Stop – Timeline Start)

Observe que cada uma dessas 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 rapidez com que um arquivo é reproduzido.
  • Você pode misturar, dentro do mesmo grupo, arquivos de origem que têm diferentes taxas de quadros criados e o DES aumentará ou reduzirá cada clipe para corresponder à taxa de quadros do grupo.

Quando você renderiza um projeto, todas as vezes são arredondadas para o limite de quadro mais próximo, conforme determinado pela taxa de quadros 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 momento zero. A origem não termina exatamente em um limite de quadro, portanto, o DES arredonda o tempo de parada para 1,6666 segundos (50 quadros). Se você buscar 1,68 segundos no projeto renderizado, você realmente buscará além do final da origem para o 51º quadro.

No entanto, o DES não substitui o tempo de parada da origem. Posteriormente, você pode alterar a taxa de quadros de grupo ou mover a origem para um novo ponto no linha do tempo em que ela é arredondada de forma diferente. Portanto, o DES preserva o tempo de parada original e arredonda somente quando necessário. Para obter mais informações, consulte IAMTimelineObj::FixTimes.

Introdução com os Serviços de Edição do DirectShow