Soyez le premier à donner votre avis sur cette source.
Snippet vu 8 841 fois - Téléchargée 16 fois
import java.io.*; public class FlvToMp3 { public static int convert(String input, String output){ // reading FileOutputStream fos = null; DataOutputStream dos = null; // writting FileInputStream fis = null; DataInputStream dis = null; int bufsize = 4096; try{ fis = new FileInputStream(input); BufferedInputStream bis = new BufferedInputStream( fis, bufsize); dis = new DataInputStream(bis); File file = new File(output); fos = new FileOutputStream(file); dos = new DataOutputStream(fos); int i = dis.readInt(); //FLV if (i == 0x464C5601){ dis.readByte(); // read flags dis.readInt(); // read headers size int prevTagSize = dis.readInt(); while(prevTagSize >= 0){ // int eTagType = 0; eTagType = dis.readByte(); // read tag type int nLength = getUI24(dis); // read tag lenght dis.readInt(); // read time stamp getUI24(dis); // streamID if (nLength > 0) { dis.readByte(); // read MediaType byte[] xbData = new byte[nLength - 1]; dis.read(xbData, 0, nLength -1); // write only audio data if (eTagType == 0x08){ dos.write(xbData, 0, nLength - 1); } }else{ break; } try{ prevTagSize = dis.readInt(); }catch (Exception e) { dos.close(); fos.close(); return 0; } } dos.close(); fos.close(); }else{ return -2; // not flv } } catch (IOException e) { e.printStackTrace(); return -1; } return 0; } public static void main(String[] args) { int r = convert("C:\\flv.flv", "C:\\mp3.mp3"); System.out.print(r); } private static int getUI24(DataInputStream br){ byte[] cbuff = new byte[3]; try { br.read(cbuff, 0, 3); } catch (IOException e) { } return bytesToInt(cbuff); } private static int bytesToInt(byte[] bytes) { int value = 0; for(int i=0; i<bytes.length; i++){ value = value << 8; value += bytes[i] & 0xff; } return value; } }
9 juin 2009 à 21:47
9 juin 2009 à 18:18
Merci pour ta contribution sur ce sujet, j'ai bien sur testé ton code avec les modifications apportées dans les commentaires et malheureusement, je n'arrive pas à extraire le mp3 du flv.
Ma question est la suivante: Ce code fonctionne-t-il pour un flv contenant de la vidéo et autres métadata ? Ou le flv doit-il contenir uniquement de l'audio ?
Merci d'avance pour cette précision.
Cordialement,
StimL
28 avril 2009 à 20:07
J'ai quand même un soucis pour certains fichiers FLV, le résultat ne peut être lu :
Le fichier FLV de cette vidéo par exemple :
http://www.youtube.com/watch?v=XMzs_3NxEEI
Cela provient-il d'un bug dans la source ?
Merci !
5 mars 2009 à 14:24
while(prevTagSize >= 0){
doit etre
while(prevTagSize > 0){
Voila!
3 mars 2009 à 12:54
La conversion AVI me donne un fichier non lisible. C'est une bonne initiative qui gagnerait avec une petite interface SWING mais l'algorithme doit etre légèrement retouché je pense. Je recherche de mon coté.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.