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
5
A
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
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
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! –
OK, si vous avez des questions sur l'analyse syntaxique, modifiez simplement la question. –
InputStream.read ne lit pas nécessairement complètement. Pour une solution facile, retournez dans 'DataInputStream' et appelez' readFully'. –