2009-05-06 10 views
0

Ich habe ein Winform-Programm, mit dem Benutzer Shockwave Flash-Filme auf einen Server hochladen können. Um die videoDuration zu erhalten, erstelle ich eine Instanz von "ShockwaveFlashObjects" -activeX, lade den Film und lese dann die videoDuration, bis sie von "0.0" zu etwas anderem wechselt. Ich bekomme das durch Lesen der GetVariable ("videoDuration").Wie lese ich videoDuration einer .flv-Datei von * .Net, ohne das flash-activeX zu benutzen?

Oft funktioniert es, aber manchmal blockiert es oder zeigt Informationen aus dem vorherigen Flash-Film, der geladen wurde.

Ich hatte auch Probleme beim Verteilen des ShockWaveFlashObject-ActiveX. Ich würde das gerne überspringen und einfach die Flash-Datei lesen und die Spieldauer des Films herausfinden.

Alle Filme hochgeladen sind Videos, so dass sie eine bestimmte Spieldauer haben.

This question didnt help mit Antworten eather.

Ich habe die swf-format bei ausgecheckt und von dem, was ich sehen kann, sollte es möglich sein, die Framerate und framecount zu lesen und dadurch die Dauer zu berechnen, aber ich konnte nichts über FLV-Dateien finden. Vielleicht hat jemand das schon getan und kann mich auf einen netten Code hinweisen, der mir viel Zeit erspart, die Spezifikation zu verstehen?

Antwort

0

Eine der Möglichkeiten ist ffmpeg zum Lesen der Video-/Audio-Bitraten. Sobald Sie diese Details haben, können Sie die gesamte Dateigröße durch die Summe der Video-/Audio-Bitraten teilen. Das gibt Ihnen eine geschätzte Anzahl von Sekunden (+/- wenige).