2009-08-21 4 views
5

Ich bin für ein Beispiel für die Analyse eines FLV-Headers für die Dauer speziell in Java suchen. Angesichts der URL einer FLV-Datei möchte ich nur die Kopfzeile herunterladen und die Dauer analysieren. Ich habe die FLV-Spezifikation, aber ich möchte ein Beispiel. Python oder PHP wäre auch in Ordnung, aber Java ist bevorzugt.Parsing FLV-Header (Dauer) der Remote-Datei in Java

Antwort

1

Haben Sie Probleme, die Kopfzeile herunterzuladen oder zu analysieren? wenn es das Herunterladen dann diesen Code verwenden:

URL url = new URL(fileUrl); 
InputStream dis = url.openStream(); 
byte[] header = new byte[HEADER_SIZE]; 
dis.read(header); 

können Sie wickeln Input mit Datainputstream, wenn Sie int wollen die anstatt Bytes zu lesen.

Danach schauen Sie sich die getInfo Methode von PHP-FLV Info an oder lesen Sie die Spezifikation.

+0

Ich hatte eine Kombination aus beide. Da ich aber die Spezifikation gesehen habe, war die größte Frage der beste Weg, einen Teil der Datei herunterzuladen und dann die Kopfzeile zu analysieren. Ich experimentierte mit dem Senden des HTTP-Range-Headers, um zu sagen, wie viele Bytes ich wollte, aber nur einige Server senden HTTP 206 Partial Content zurück, damit Ihre Lösung besser ist. Danke! –

+0

OK, wenn Sie Fragen zum Parsen haben, bearbeiten Sie einfach die Frage. –

+1

InputStream.read liest nicht unbedingt vollständig. Um eine einfache Lösung zu erhalten, wickeln Sie "DataInputStream" ein und rufen Sie 'readFully' auf. –

0

Wie the-alchemist Staaten in this other question:

Die Red5 project hat eine Klasse namens FLVReader was tut, was Sie wollen. Es ist LGPL lizenziert.

Ich habe es versucht und es funktioniert gut. Sie finden diese Bibliotheken müssen:

das Video Dauer FLV bekommen, da dies so einfach ist:

FLVReader flvReader = new FLVReader(...); // Can use a File or a ByteBuffer as input 
long duration = flvReader.getDuration(); // Returns the duration in milliseconds