Condividi tramite


Tempo in DirectShow Editing Services

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

[Questa API non è supportata e potrebbe essere modificata o non disponibile in futuro.]

Per modificare il video, è necessario lavorare con alcuni concetti importanti relativi alla tempistica. Ad esempio:

  • Ogni clip ha una durata.
  • Clip, transizioni ed effetti vengono visualizzati in determinati momenti in un progetto.
  • La frequenza dei fotogrammi del video è espressa in fotogrammi al secondo (fps).

DirectShow Editing Services (DES) fornisce vari metodi che impostano o recuperano tempi e frequenza dei fotogrammi. Il significato di questi valori dipende dal contesto.

Valori di ora

Quando un parametro esprime un'ora, sono possibili tre significati distinti:

  • Tempo della sequenza temporale: ora relativa all'inizio della sequenza temporale. Ad esempio, un clip potrebbe iniziare 2 secondi nella sequenza temporale oppure una transizione potrebbe verificarsi 15 secondi nella sequenza temporale. La sequenza temporale determina il progetto di cui è stato eseguito il rendering finale, quindi è anche possibile considerare l'ora della sequenza temporale come "ora del progetto".
  • Tempo multimediale: punto in un file di origine relativo all'inizio del file, come raggiunto durante la normale riproduzione. Ad esempio, se si dispone di un file video di 10 secondi, il punto a metà del file si verifica a 5 secondi, espresso come tempo multimediale.
  • Tempo padre: tempo relativo a un oggetto nella sequenza temporale. Ad esempio, se un oggetto inizia da 8 secondi nella sequenza temporale e contiene un altro oggetto che inizia a 10 secondi nella sequenza temporale, l'oggetto figlio inizia a 2 secondi rispetto all'elemento padre. Le tracce virtuali iniziano tutte all'ora zero, rispetto alla sequenza temporale. Quindi, per qualsiasi oggetto in una traccia virtuale, l'ora padre è uguale all'ora temporale.

Il tempo multimediale si applica solo agli oggetti di origine. Ogni oggetto di origine ha un'ora di inizio multimediale e un'ora di arresto multimediale. Si supponga, ad esempio, di avere un clip video di 10 secondi e di voler usare solo 5 secondi dal centro della clip, tagliando i primi 2 secondi e gli ultimi 3 secondi dal clip. Se si desidera che il clip venga visualizzato 20 secondi nel progetto (e presupponendo una normale frequenza di riproduzione) è necessario specificare le ore di inizio e di arresto seguenti.

  • Avvio multimediale: 2 secondi

  • Arresto multimediale: 7 secondi

  • Inizio sequenza temporale: 20 secondi

  • Arresto sequenza temporale: 25 secondi

    inserimento di un clip di origine su una sequenza temporale

Frequenza dei fotogrammi

La frequenza dei fotogrammi è la "velocità" di un flusso multimediale, misurata in fotogrammi al secondo. Come per i valori temporali, il significato di una frequenza dei fotogrammi dipende dal contesto:

  • Frequenza dei fotogrammi di output: Frequenza dei fotogrammi del progetto di cui è stato eseguito il rendering finale, definita dal gruppo. Quando si esegue il rendering del progetto, ogni gruppo diventa un flusso multimediale separato con la frequenza dei fotogrammi.
  • Frequenza dei fotogrammi di origine: Frequenza dei fotogrammi in cui è stato originariamente creato il file di origine. La frequenza dei fotogrammi creata non deve corrispondere alla frequenza dei fotogrammi di output del gruppo. DES eseguirà automaticamente l'upsample o il downsample del file in base alle esigenze. Per la maggior parte dei formati multimediali, DES può determinare la frequenza dei fotogrammi esaminando il formato. Una sequenza DIB è un'eccezione; è necessario specificare la frequenza dei fotogrammi di una sequenza DIB. Per altre informazioni, vedere Uso delle origini.

Velocità di riproduzione: Velocità apparente di un clip di origine quando viene visualizzata nel progetto. Ad esempio, 10 secondi di video possono essere inseriti in 5 secondi nella sequenza temporale. Di conseguenza, la velocità della clip aumenta di un fattore pari a 2, come illustrato nel diagramma seguente.

rendere più veloce la riproduzione di un'origine

Con un'origine audio, anche l'inclinazione cambia. La formula seguente determina la frequenza di riproduzione di un clip di origine:

  • Velocità di riproduzione = (Media Stop – Media Start) / (Sequenza temporale stop - Inizio sequenza temporale)

Si noti che ognuna di queste tre tariffe è indipendente dalle altre:

  • È possibile velocizzare o rallentare una clip regolando i tempi multimediali; ciò non influisce sulla frequenza dei fotogrammi dell'output finale.
  • È possibile aumentare o diminuire la frequenza dei fotogrammi di output senza influire sulla velocità di riproduzione di un file.
  • È possibile combinare, all'interno dello stesso gruppo, i file di origine con frequenze dei fotogrammi create diverse e DES upsample o downsample ogni clip in modo che corrisponda alla frequenza dei fotogrammi del gruppo.

Quando si esegue il rendering di un progetto, tutte le volte vengono arrotondate al limite di fotogrammi più vicino, come determinato dalla frequenza dei fotogrammi di gruppo. Si supponga, ad esempio, che un gruppo di video abbia una frequenza di fotogrammi di 30 fps. Ogni fotogramma è di circa 33 millisecondi (ms). Si supponga di aggiungere un clip di origine di 1,68 secondi alla sequenza temporale, a partire dall'ora zero. L'origine non termina esattamente su un limite di frame, quindi DES arrotonda il tempo di arresto a 1,6666 secondi (50 fotogrammi). Se si cerca di 1,68 secondi nel progetto sottoposto a rendering, si cercherà effettivamente oltre la fine dell'origine, al 51° frame.

Tuttavia, DES non sovrascrive il tempo di arresto dell'origine. In seguito è possibile modificare la frequenza dei fotogrammi di gruppo o spostare l'origine in un nuovo punto nella sequenza temporale in cui viene arrotondata in modo diverso. Di conseguenza, DES mantiene l'ora di arresto originale e arrotonda solo quando necessario. Per altre informazioni, vedere IAMTimelineObj::FixTimes.

Introduzione con DirectShow Editing Services