Forums Développement Multimédia

Aller au contenu

convertir ByteArray en .mp3

CODE encoder

11 réponses à ce sujet

#1 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 20 March 2016 - 16:21 PM

bonjour tous et merci de me lir!
cela fais 4 jours que je bosse sur mon lecteur qui date maintenant de quelques annees!! je voudrais lui ajouter une nouvelle fonctionnalitee!! qui est la convertion en mp3 puis l'export.
je vous explique mon lecteur lis les fichier .mp3 sans aucuns probleme. j'utilise le sound.extract afin de creer une waveform du mp3 ce qui fonctionne.
donc pour resumer la fonction extract me creer un ByteArray.
j'aimerai pouvoir ressortir ce bytearray pour en crer un .mp3
j'ai regarder sur le web je me suis beaucoup attarder sur shinemp3encoder mais je n'arrive pas a le faire marcher.
ce que je trouve bizarre c'est qu'il me fais encoder mon bytearray en wav puis le wav en mp3!! mais de tout facon rien ne marche!! j'ai essayer de faire un .wav avec wavencoder pour deja voir ce que ca donne mais j'ai un fichier inaudible ca casse les oreille.est ce que qulqu'ubn peu m'expliquer ou je fais une erreur svp!!
cordialement

#2 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1746 messages

Posté 24 March 2016 - 21:46 PM

J'ai testé Shine-MP3-Encoder avec cet exemple http://romaindedenis...3-73021921.html qui utilise le micro et ça fonctionne.

#3 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 25 March 2016 - 20:00 PM

bonjour et merci de m'avoir repondu je croyais ce forum mort!!!
donc si j'ai bien compris tu as encoder ce qui rentrer dans ton microphone en mp3?
j'au vu qu il convertisser le wav en mp3 aussi !!
mais mon probleme c'est que je fais un sound.extract d'un mp3
donc j'aimerai juste reencoder ce byteaaray de mp3 en mp3 tout simplement pour qu il puisse etre sauver en local.
j'ai tout essayer il me reste plus qu'a essayer de faire enregistrer la diffusion de mon mp3 transformer en direct par un faux micro mais je sais pas si c'est possible!
crois tu que ca l'es??
merci en tout cas

#4 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1746 messages

Posté 25 March 2016 - 22:50 PM

donne un bout de code pour tester

j'ai chargé un mp3, réalisé un sound extract pour obtenir un ByteArray, encoder en wav avec waveEncoder.encode(), puis en mp3 avec ShineMP3Encoder, ça a fonctionné.

#5 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 26 March 2016 - 20:14 PM

ah bon ben ca vas me remotiver si c'est possible je te passerai le code tout a l heure car il es sur mon autre pc!

#6 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 27 March 2016 - 14:06 PM

j'essaye de trouver mon erreur qu'a tu mis en length
var ba: bytearray = new bytearray();
son1.extract(ba, son1.length);
je me demande si j'ai pas une erreur la

#7 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 27 March 2016 - 16:31 PM


import flash.events.Event;
import flash.text.TextFormat;
import flash.events.MouseEvent;
import flash.net.FileReference;
import flash.events.ProgressEvent;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.utils.ByteArray;
//import org.as3wavsound.WavSound;
var sonwav:Sound = new Sound();
var sonmp:Sound = new Sound();
var url:URLRequest = new URLRequest();
var bt:ByteArray = new ByteArray();
var sonlgt:Number = new Number();
var encode:WAVEncoder = new WAVEncoder();
var sonenc:ByteArray = new ByteArray();
var fr:FileReference = new FileReference();
////////////////////////////////////////////////////
stage.addEventListener(Event.ENTER_FRAME, entre);
///////////////////////////////////////////////////////////////
function entre (e:Event):void{
btn_ch_wav.addEventListener(MouseEvent.CLICK, charge_wav);
    btn_ch_mp3.addEventListener(MouseEvent.CLICK, charge_mp3);
}
///////////////////////////////////////////////////////////////
function charge_wav (e:MouseEvent):void{
trace("charge wav");
sonwav.load(new URLRequest("proposition.wav"));
sonwav.addEventListener(Event.COMPLETE, completwav);
}
///////////////////////////////////////////////////////////////
function charge_mp3 (e:MouseEvent):void{
trace("charge mp3");
sonmp.load(new URLRequest("free.mp3"));
btn_play.enabled = true;
btn_play.addEventListener(MouseEvent.CLICK, playmp3);
sonmp.addEventListener(Event.COMPLETE, complet);
}
///////////////////////////////////////////////////////////////
function complet (e:Event):void{
btn_extract_mp3.enabled = true;
sonlgt = sonmp.length;
trace("duree piste "+ sonlgt/1000 + " secondes");
btn_extract_mp3.addEventListener(MouseEvent.CLICK, extractmp3);
trace ("chargement du mp3 complet");
}
///////////////////////////////////////////////////////////////
function completwav (e:Event):void{
btn_extract_wav.enabled = true;
sonlgt = sonwav.length;
trace("duree piste "+ sonlgt/1000 + " secondes");
btn_extract_wav.addEventListener(MouseEvent.CLICK, extractwav);
trace ("chargement du wav complet");
}
///////////////////////////////////////////////////////////////
function playmp3 (e:MouseEvent):void{
trace ("play");
sonmp.play();
}
///////////////////////////////////////////////////////////////
function playwav (e:MouseEvent):void{
trace ("play impossible car ceci es un fichier wav");
//sonmp.play();
}
///////////////////////////////////////////////////////////////
function extractmp3 (e:MouseEvent):void{
trace ("extraction du bytearray mp3");
var num:Number = sonmp.extract(bt,((sonlgt/1000)*44100));
trace( " Bytearray length = "+bt.length);
btn_convert_wav.enabled= true;
btn_convert_wav.addEventListener(MouseEvent.CLICK, encodeur);
}
///////////////////////////////////////////////////////////////
function extractwav (e:MouseEvent):void{
trace ("extraction du bytearray wav");
sonwav.extract(bt,sonlgt);
bt.position = 0;
trace( " Bytearray length = "+bt.length);
btn_convert_wav.enabled= true;
btn_convert_wav.addEventListener(MouseEvent.CLICK, encodeur);
}
///////////////////////////////////////////////////////////////
function encodeur (e:MouseEvent):void{
bt.position = 0;
sonenc = encode.addHeaders(bt);
trace(" encodage en wav ");
btn_save.enabled = true;
btn_save.addEventListener(MouseEvent.CLICK, sauvegarde);
}
///////////////////////////////////////////////////////////////
function sauvegarde (e:MouseEvent):void{
trace ("sauvegarde du wav");
//fr.save (sonenc, "essai.wav" );
fr.save(sonenc,"ok.wav");
}
 

toujours pas reussi a convertir mon bytearray de mp3 en wav!!je comprend pas!!
voici le fichier wavencoder.as

package {
import flash.utils.ByteArray;
import flash.utils.Endian;
    import flash.net.FileReference;

/**
  * Liens :
  * - http://flash.mediabo...pic=90410&st=30
  * - http://fr.wikipedia....rm_audio_format
  * - http://www.sonicspot.../wavefiles.html
  * - http://ccrma.stanfor...cts/WaveFormat/
  *
  */

public class WAVEncoder {
var fr:FileReference;
  public function WAVEncoder() {
  }
//44100 - 2 - 32
  public function addHeaders(pSoundDatas:ByteArray,
  pSampleRate:uint = 16000,
  pChannels:uint = 2,
  pBitsPerSample:uint = 16
  ):ByteArray {
   var bytes: ByteArray = new ByteArray();
   bytes.endian=Endian.LITTLE_ENDIAN;

   // RIFF Chunk
   bytes.writeUTFBytes( 'RIFF' );
   // Chunk size : (fileSize) - 8
   bytes.writeInt( pSoundDatas.length + 44 - 8 );// 44 le poids en o de l'en-tête
   // Type of resource found in the RIFF
   // WAV Chunk - Contains at least 2 chunks : "fmt"  and "data"
   bytes.writeUTFBytes( 'WAVE' );
   // fmt Chunk - describe how data are encoded and should be played
   bytes.writeUTFBytes( 'fmt ' );
   // Size of the chunk (16 + extra-datas size)16
   bytes.writeInt( 16 );
   // Compression Code (1 = PCM/uncompressed)bytes.writeShort( 1 );//1 ou 6
   bytes.writeShort(6);
   // Number of channels
   bytes.writeShort( pChannels );
   // Sample rate
   bytes.writeInt( pSampleRate );
   // Average bytes per second : AvgBytesPerSec = SampleRate * BlockAlign
   bytes.writeInt( pSampleRate * pChannels *  pBitsPerSample / 8 );
   // Block Align = SignificantBitsPerSample / 8 * NumChannels
   bytes.writeShort( pChannels * pBitsPerSample / 8 );
   // Significant bits per sample : number of bits used to define each sample (8, 16, 24 or 32)
   bytes.writeShort( pBitsPerSample );
   // data Chunk - Contains at least 2 chunks : "fmt"  and "data"
   bytes.writeUTFBytes( 'data' );
   // chunk size - audio datas size
   //bytes.writeInt ( pSoundDatas.length ) ;
   bytes.writeInt( pSoundDatas.length );
//pSoundDatas.position = 0;
//var length:int = pSoundDatas.length -4;
//while (pSoundDatas.position < length)
//{bytes.writeShort(uint(pSoundDatas.readFloat()*65536));
//}
//bytes.position = 0;
   // Audio datas
   bytes.writeBytes( pSoundDatas );//
 
   return bytes;
   //fr.save (pSoundDatas, "essai.wav" );
  }

}
}
 
si ta une idee merci

#8 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 27 March 2016 - 17:46 PM

re bon ca y est ca marche la converssion d'un bytarray mp3 en wav es reussi reste plus qu'a le remettre en mp3

#9 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1746 messages

Posté 27 March 2016 - 22:11 PM

le code


package{
  import flash.events.Event;
  import flash.display.Sprite;
  import flash.media.Sound;
  import flash.net.URLRequest;
  import flash.utils.ByteArray;
  import fr.kikko.lab.ShineMP3Encoder;
  import flash.utils.Endian;
  import flash.events.ProgressEvent;
  import flash.events.ErrorEvent;
  import flash.net.FileReference;
  import org.bytearray.micrecorder.encoder.WaveEncoder;

  public class Main extends Sprite {
        private var mp3File:Sound = new Sound();

        private var mp3Encoder:ShineMP3Encoder;

        private var waveEncoder:WaveEncoder = new WaveEncoder();

        public function Main() {
          mp3File.load(new URLRequest("music.mp3"));
          mp3File.addEventListener(Event.COMPLETE, parseSound);
        }

        private function parseSound(e:Event):void {
          var sndBytes:ByteArray = new ByteArray();
          sndBytes.endian = Endian.LITTLE_ENDIAN;

          mp3File.extract( sndBytes, Math.floor((mp3File.length/1000)*44100) );

          var wav:ByteArray = waveEncoder.encode( sndBytes );

          encodeToMP3( wav );
        }

        private function encodeToMP3(wavData:ByteArray):void {
          mp3Encoder = new ShineMP3Encoder(wavData);
          mp3Encoder.addEventListener(Event.COMPLETE, mp3EncodeComplete);
          mp3Encoder.addEventListener(ProgressEvent.PROGRESS, mp3EncodeProgress);
          mp3Encoder.addEventListener(ErrorEvent.ERROR, mp3EncodeError);
          mp3Encoder.start();
        }

        private function mp3EncodeProgress(event : ProgressEvent) : void {
          trace( event.bytesLoaded, event.bytesTotal);
        }
   
        private function mp3EncodeError(event : ErrorEvent) : void {
          trace("Error : ", event.text);
        }

        private function mp3EncodeComplete(event : Event) : void {
          trace("Done !", mp3Encoder.mp3Data.length);
          var f:FileReference = new FileReference();
          f.save( mp3Encoder.mp3Data, "music2.mp3" );
        }
  }
}
 


#10 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 28 March 2016 - 20:21 PM

merci encore j'avais resolu mon probleme grace a toi!!! rien qu'en me disant que tu avais reussi et que ca marcher chez toi ca ma redonner foie!! et du coup j'ai trouver mes erreur!!par contre toi qui es bien cale!!en as3
peut tu me dire si y'a possibilite de faire lire un fichier wav en as3!!je sais que naturellement non et je ne comprend pas pourquoi les devs de flash on fais ca!!mais c'est ainsi!! mais n'y a t il pas un moyen de contourner?
cordialement

#11 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1746 messages

Posté 28 March 2016 - 22:22 PM

regarde http://code.tutsplus...s3--active-8744

#12 slidespleen

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 29 March 2016 - 20:38 PM

merci a toi pour les reponses rapide et pour cette piste je m'en vais etudier celle ci imediatement!!



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP