Question

Je développe un logiciel qui enregistre la vidéo d'une source en direct vers les fichiers WMV (en utilisant la compression WMV1).

J'essaie de fournir une estimation approximative du temps d'enregistrement restant, en fonction de l'espace laissé sur le disque dur de stockage. Je ne peux pas simplement baser la taille du fichier de sortie sur le débit binaire du codec, malheureusement, car la compression vidéo signifie que la taille de sortie varie follement en fonction de la complexité de l'image.

Des pensées?

FYI J'utilise C # et DirectShow.

Était-ce utile?

La solution

C'est une très bonne question. Malheureusement, il n'y a pas de moyen sûr de le faire, mais vous avez deux options de base:

  1. Calculez à l'avance l'espace moyen utilisé par unité de temps donnée à un débit binaire donné, en fonction de l'expérimentation ou des données du fournisseur de codec.
  2. Commencez par utiliser la technique n ° 1, mais créez également un mécanisme pour déterminer l'espace moyen utilisé lors d'un enregistrement donné, en divisant l'espace actuellement utilisé par le fichier à partir du temps d'enregistrement total. Ensuite, utilisez cette métrique pour déterminer la durée restante.

L'option 1 est un moyen rapide et facile de commencer. L'option 2 nécessite un peu plus de programmation, mais votre estimation sera beaucoup plus précise. Après tout, la compression dans ces cas est basée sur ce que vous enregistrez. L'enregistrement d'un écran vert massif pendant 1 heure prend beaucoup moins de disque que d'enregistrer un fond mobile avec un premier plan en constante évolution, ou peut-être une séquence fractale. Il n'y a aucun moyen de faire une bonne estimation à l'avance.

Autres conseils

Vous ne pouvez estimer la taille de la compression future qu'en utilisant les taux de compression reçus au cours des X dernières secondes. Ne l'avez pas trop grand ou trop petit.

Une période de temps trop petite signifiera que le temps pourrait changer sauvagement [en fonction de la quantité de mouvement dans la vidéo] et trop longtemps, un temps sera très imprévue.

Je suppose qu'un temps de 30 secondes pourrait fournir un degré de précision raisonnable

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top