begin process at 2012 02 10 19:43:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimedia

 > FLV TO MP3

FLV TO MP3


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Multimedia Classé sous :mp3, flv, bytes Niveau :Débutant Date de création :19/02/2009 Date de mise à jour :20/02/2009 15:00:36 Vu :5 195

Auteur : beeline

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cette source permet d'extraire un mp3 d'un fichier flv. Je suis à la recherche de testeurs.

C'est une simple traduction en Java de codes trouvés sur internet.

La description des headers d'un fichier flv se trouvent ici : http://osflash.org/flv

--

This source code is able to extract a MP3 track from a FLV.

Free to use, please report me errors or links using this code.

Source

  • 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;
  • }
  • }
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;
    }
}

 Conclusion

On peut facilement extraire un avi dans le cas d'un FLV video en changeant une ligne :
if (eTagType == 0x09){


 Historique

19 février 2009 13:29:12 :
orthographe
20 février 2009 15:00:36 :
import java.io.*;

 Sources de la même categorie

MINIMP3PLAYER par phlyper
SELECTION DANS UNE IMAGE par marwenjava
Source avec Zip Source avec une capture TRAITMENT D'IMAGE EN JAVA par marwenjava
Source avec Zip SWT CUSTOM FILE BROWSER par grandtix
Source avec Zip Source avec une capture PROGRAMME COMPLET D'AIDE À L'APPRENTISSAGE DE TEXTE par cali70

 Sources en rapport avec celle ci

MINIMP3PLAYER par phlyper
Source avec Zip Source avec une capture LECTEUR AUDIO AVEC JAVAFX par puccino1er
Source avec Zip CLASSES POUR ÉDITER LES TAGS ID3V1 ET ID3V2 (LECTURE ET ÉCRI... par carpes
Source avec Zip MP3PLAYEUR par AbriBus
Source avec Zip Source avec une capture EDITEUR TAG MP3 par tof2503

Commentaires et avis

Commentaire de kariminf le 19/02/2009 22:49:56 10/10

Il est Merveilleux, il faut just ajouter:
import java.io.*;

Commentaire de beeline le 20/02/2009 13:13:29

oups desolay

Commentaire de celphys2 le 03/03/2009 12:54:06

La conversion MP3 fonctionne bien même si j'obtiens en fin de programme une "java.io.EOFException".

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é.

Commentaire de Proggy le 05/03/2009 14:24:43

La cause du "java.io.EOFException" est le "=", voir ligne 29.

while(prevTagSize >= 0){

doit etre

while(prevTagSize > 0){

Voila!

Commentaire de legear le 28/04/2009 20:07:22

Bonjour ! Vraiment bravo pour ce bout de code !

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 !

Commentaire de stiml le 09/06/2009 18:18:40

Bonsoir Beeline et les autres ^^

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

Commentaire de beeline le 09/06/2009 21:47:40

Non, le flv ne doit contenir que de l'audio, j'ai essayé de le modifier pour prendre extraire à partir de flv video, mais sans succès.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ecrire au fomrat mp3 [ par didoux95 ] Bonjour a tous, j'arrive desormais a recuperer des bytes (dans un fichier mp3). lorsque je creer un fichier (par ex: TEST1.mp3) et que j'enregistre ce bytes[ ] en String? [ par bygui ] bonjour,J'aimerais convertir un tableau de byte en string. Quelle methode dois-je utiliser? editeur de tags [ par adrienr11vdv ] bonjour à tous,j'aimerai créer un éditeur de tags pour des fichiers mp3. j'aurai voulu avoir au préalable quelques informations. sous windows xp, on v renseignement sur les tags pour les MP3 [ par adrienr11vdv ] bonjour à tous,j'aimerai savoir s'il était possible de renseigner les informations d'un fichier .mp3 avec un programme java.ces informations peuvent ê signature numérique tableau de bytes [ par peute51 ] Bonjour a tous, je dois developper une application qui doit signer des documents.Pour cela j'utilise une api qui me retourne la signature en tableau d Lire fichier PDF [ par leviz ] Bonjour,Voilà mon porblème:Je dispose d'un tableau dans lequel j'affiche des liens vers des fichiers PDF stocker sur mon serveur. Je cherche à lire le affecter extension [ par didoux95 ] Bonjour a tous.j'aimerais savoir si il est possible de "dire" à l'ordinateur que tous les fichier ayant l'extension, par ex, .mp3 s'ouvrent avec mon a extraction de données de la zone MPEG frame d'un fichier mp3 [ par ranwan ] Bonjour, je suis débutant en java et je n'arrive pas à extraire les données de la zone MPEG frame des fichiers mp3.je ne sais par où commencer. est-ce


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales