IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

Crée un fichier wav au fur et à mesure


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Badshade23
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 203
    Par défaut Crée un fichier wav au fur et à mesure
    Bonjours à tout le monde ,

    J'ai un petit problème :

    Je suis en cours de réalisation d'un programme qui enregistre du son, jusque ici pas sorcier.

    Mais une petite question me trotte en tête : quand j'enregistre mon son (grâce à JAVA SOUND , TargetDataLine ...) , je stocke mes octets dans une list pour la capture et au moment ou l'utilisateur à fini son enregistrement, j'utilise AudioImputStream avec ma list pour sauvegarder le tout dans un fichier . Le truc c'est que si l'utilisateur veux enregistrer disons 24h de son (pour exagérer) ma list sera énorme car elle contiendra tout les octets (si j'échantillonne en 44100Hz sa me fera 44100 valeurs par seconde je vous laisse imaginer pour 24h). Je vais donc avoir un souci de mémoire avec le heap si je ne dit pas de bêtise non ?

    J'aurai ce message d'erreur : java.lang.OutOfMemoryError: Java Heap space
    Et on vois nettement la place que les attributs de mes threads grâce au logiciel Java VisualVM.

    Comment faire alors ? Je pense qu'il faut que je créer un fichier wav au fur et à mesure pour ne garder en mémoire vive qu'une seconde de son par exemple mon heap sera donc beaucoup moins charger mais je ne sais pas si cela est possible et si c'est la bonne solution ?

    Merci d'avance pour votre opinion

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Oui, utilises un buffer de X secondes, qui va se remplir avec ton son capturés. Et une fois atteint une limite, tu écris le buffer dans ton fichier et ainsi de suite.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé Avatar de Badshade23
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 203
    Par défaut
    C'est l’idée que j'avais mais qu'entend tu par "écris le buffer dans ton fichier" j'écris au fur et a mesure mon fichier wave avec l’entête d'un wav et les datas qui suive qui seront mis petit à petit ?
    Le problème c'est l’entête du fichier wav qui contient des informations tel que la taille du fichier au final ce que je ne peut pas connaitre au début ...

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Oui c'est a peu près ça l'idée.

    Après pour ton header, rien ne t'empêche de mettre une durée de 0 puis une fois l'enregistrement terminé, tu modifies l'entête pour avoir la bonne valeur.

    Sinon tu ecris les données brutes (dans le bon format évidement) puis tu rajoute l'entête au début.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé Avatar de Badshade23
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 203
    Par défaut
    "Sinon tu ecris les données brutes (dans le bon format évidement) puis tu rajoute l'entête au début."
    Pas bête du tout je n'y avais pas penser. C'est parfois les solutions les plus évidentes qu'on ne trouve pas ^^.
    Je vais essayer ça et je mettrais à jour le sujet une fois réussi si ça intéresse quelqu'un d'autre merci en tout qu'a !

  6. #6
    Membre confirmé Avatar de Badshade23
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 203
    Par défaut
    Une petite question pour écrire mon en-tête wav j'utilise DataOutputStream avec writeByte(byte) ou byte, le seul problème c'est que je ne vois pas comment écrire toutes mes données audio puis revenir au début du fichier pour écrire mon en-tête ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2014, 17h20
  2. Réponses: 1
    Dernier message: 04/05/2011, 08h01
  3. [Audio]Java et fichiers Wav
    Par danael dans le forum Multimédia
    Réponses: 3
    Dernier message: 10/10/2005, 20h09
  4. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43
  5. [Kylix] jouer un fichier wav avec kilyx
    Par JlouisI dans le forum EDI
    Réponses: 1
    Dernier message: 14/06/2002, 02h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo