Domanda

Sto sviluppando un software che registra video da una sorgente live a file WMV (utilizzando la compressione WMV1).

Sto tentando di fornire una stima approssimativa del tempo di registrazione rimanente, in base allo spazio lasciato sul disco rigido di archiviazione. Non riesco semplicemente a basare la dimensione del file di output sul tasso di bit del codec, purtroppo, poiché la compressione video significa che la dimensione dell'uscita varia selvaggiamente in base alla complessità dell'immagine.

qualche idea?

FYI Sto usando C# e DirectShow.

È stato utile?

Soluzione

Questa è davvero una buona domanda. Sfortunatamente, non esiste un modo sicuro di farlo, ma hai due opzioni di base:

  1. Calcola in anticipo lo spazio medio utilizzato per unità di tempo in un determinato bitrate, in base alla sperimentazione o ai dati del provider di codec.
  2. Inizia utilizzando la tecnica n. 1, ma quindi crea anche un meccanismo per determinare lo spazio medio utilizzato durante una determinata registrazione, dividendo lo spazio attualmente in uso in base al file dal tempo di registrazione totale. Quindi, utilizzare questa metrica per determinare la quantità di tempo rimanente.

L'opzione 1 è un modo rapido e semplice per iniziare. L'opzione 2 richiede un po 'più di programmazione, ma la tua stima sarà sostanzialmente più accurata. Dopotutto, la compressione in questi casi si basa su ciò che stai registrando. La registrazione di uno schermo verde solido per 1 ora richiede sostanzialmente meno disco rispetto alla registrazione di uno sfondo in movimento con il primo piano che cambia continuamente o forse una sequenza frattale. Non c'è modo di fare una buona stima in anticipo.

Altri suggerimenti

È possibile stimare solo le dimensioni future della compressione utilizzando i tassi di compressione ricevuti negli ultimi x secondi. Non averlo un valore troppo grande o troppo piccolo.

Un periodo di tempo troppo piccolo significherà che il tempo potrebbe cambiare selvaggiamente [a seconda della quantità di movimento nel video] e un tempo troppo a lungo significherà che il tempo sarà molto non accurato.

Immagino che un tempo di 30 secondi potrebbe fornire un ragionevole grado di precisione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top