Frage

Ich entwickle eine Software, die Video von einer Live -Quelle zu WMV -Dateien aufzeichnet (mithilfe der WMV1 -Komprimierung).

Ich versuche, eine grobe Schätzung der verbleibenden Aufzeichnungszeit zu liefern, basierend auf dem auf der Speicher festgelegten Speicherplatz. Ich kann die Größe der Ausgabedatei nicht einfach auf der Bitrate des Codec basieren, da die Videokomprimierung bedeutet, dass die Ausgangsgröße je nach Komplexität des Bildes stark variiert.

Irgendwelche Gedanken?

Zu Ihrer Information Ich benutze C# und DirectShow.

War es hilfreich?

Lösung

Dies ist eine wirklich gute Frage. Leider gibt es keinen sicheren Weg, dies zu tun, aber Sie haben zwei grundlegende Optionen:

  1. Berechnen Sie im Voraus, dass der durchschnittliche Platz pro Zeiteinheit bei einem bestimmten Bitrate basierend auf Experimentieren oder Daten des Codec -Anbieters basiert.
  2. Beginnen Sie mit der Technik Nr. 1, erstellen Sie aber auch einen Mechanismus zur Bestimmung des durchschnittlichen Raums, der während einer bestimmten Aufzeichnung verwendet wird, indem der derzeit von der Datei verwendete Speicherplatz aus der Gesamtaufzeichnungszeit verwendet wird. Verwenden Sie dann diese Metrik, um die verbleibende Zeit zu bestimmen.

Option 1 ist eine schnelle und einfache Möglichkeit, loszulegen. Option 2 erfordert etwas mehr Programmierung, aber Ihre Schätzung ist wesentlich genauer. Schließlich basiert die Komprimierung in diesen Fällen auf dem, was Sie aufzeichnen. Die Aufzeichnung eines soliden grünen Bildschirms für 1 Stunde erfordert wesentlich weniger Festplatten als die Aufnahme eines beweglichen Hintergrunds mit kontinuierlich wechselnden Vordergrund oder einer fraktalen Sequenz. Es gibt keine Möglichkeit, im Voraus eine gute Schätzung vorzunehmen.

Andere Tipps

Sie können die zukünftige Komprimierungsgröße nur anhand der in den letzten x Sekunden erhaltenen Kompressionsraten schätzen. Haben Sie keinen zu großen Wert oder zu klein.

Ein zu kleiner Zeitraum bedeutet, dass sich die Zeit stark ändern kann [abhängig von der Bewegung des Videos] und zu lang die Zeit wird sehr ungenau sein.

Ich würde vermuten, dass eine Zeit von 30 Sekunden ein angemessenes Maß an Genauigkeit liefern könnte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top