2009-08-21 4 views
5

Je cherche un exemple d'analyse d'un en-tête FLV pour une durée spécifique en Java. Étant donné l'URL d'un fichier FLV, je veux télécharger l'en-tête uniquement et analyser la durée. J'ai les spécifications FLV mais je veux un exemple. Python ou PHP serait OK aussi mais Java est préféré.Analyse de l'en-tête FLV (durée) du fichier distant en Java

Répondre

1

Avez-vous des problèmes pour télécharger l'en-tête ou l'analyser? si elle est le téléchargement utilisez ce code:

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

Vous pouvez envelopper InputStream avec DataInputStream si vous voulez lire int est plutôt que les octets. Ensuite, regardez simplement la méthode getInfo de PHP-FLV Info ou lisez la spécification.

+0

J'ai eu une combinaison de tous les deux. Depuis que j'ai vu la spécification, la plus grande question était la meilleure façon de télécharger une partie du fichier, puis analyser l'en-tête. J'ai expérimenté l'envoi de l'entête HTTP Range pour dire combien d'octets je voulais mais seulement certains serveurs retournent du contenu partiel HTTP 206 pour que votre solution soit meilleure. Merci! –

+0

OK, si vous avez des questions sur l'analyse syntaxique, modifiez simplement la question. –

+1

InputStream.read ne lit pas nécessairement complètement. Pour une solution facile, retournez dans 'DataInputStream' et appelez' readFully'. –

0

Comme the-alchemist états dans this other question:

Le Red5 project a une classe appelée FLVReader qui fait ce que vous voulez. Il est sous licence LGPL.

Je l'ai essayé et cela fonctionne très bien. Vous en aurez besoin des bibliothèques:

Obtenir la durée de la vidéo FLV est aussi simple que cela:

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