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

VB.NET Discussion :

Lecture d'un fichier wave


Sujet :

VB.NET

  1. #1
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut Lecture d'un fichier wave
    Salut,

    Voilà, je suis entrain de lire un fichier wav. J'ai une question. Dans la structure de celui-ci, le format est le suivant :

    "RIFF", suivi de 4 octets hexadecimaux, puis "WAVE".

    Les 4 octets hexadécimaux représentent la taille.

    Ma question est simple : comment la calculer. Par exemple, j'ai ceci comme fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    52494646D2282E0057415645
    On sait que 52494646 représente le fichier wav "RIFF", est 57415645 "WAVE". Donc, la taille est celle représentée par ces octets : D2282E00.

    Comment écrire une routine pour me calculer la taille afin de lire la totalité du fichier ?

    Merci par avance.

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Si je dis pas de bêtise, en reprenant ton exemple D2282E00, tu dois inverser l'ordre hexadecimal car les bits de poids faibles sont stockés en premier, ça donne donc :
    002E28D2 soit 3025106 (octets ?), en tout cas tu peux vérifier avec ton fichier si ça correspond ou pas.

  3. #3
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut
    Merci de ta réponse, ça permet d'y voir plus clair, mais malheureusement, ça ne correspond pas.

    En fait, la taille du fichier donner par le wav, comme tu le dis, fait 3025106 octets (certainement), mais la taille du fichier sur le disque ne fait que "12 288" octets.

    Voici l'en-tête du fichier wav (un simple mot "essai") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    52 49 46 46 D2 28 2E 00 57 41 56 45 66 6D 74
    ... jusqu'au WAVE.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Par défaut Une explication
    Salut,

    Voici comment je calcule la longueur d'un fichier Wav en partant de ton exemple :
    Comme disais OhMonBateau, il faut inverser les bits forts des bits faibles donc logiquement si tu lis D2 28 2E 00 alors la valeur est 00 2E 28 D2 (ce qui fait bien 3 025 106 octets). Mais attention, cette longueur ne correspond pas à la longueur du fichier !!! Elle correspond à la longueur du groupe de données au format WAVE (Description du format compris).

    Donc si tu veux connaitre la longueur de ton fichier, il faut impérativement : Soit ajouter 8 (correspondant à la chaine 'WAVEfmt ')à la longueur pour connaitre la longueur restante après la lecture de la taille du fichier.
    Sinon, tu ajoutes 16 pour connaitre la taille totale de ton fichier en octet.

    Donc dans ton cas, il me semble que ton fichier dois faire 3 025 122 octets. Si ce n'est pas le cas, alors je ne comprends pas :-(

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 25
    Par défaut
    Ce calcul ne me semble valable que si le fichier est en mode PCM (non compressé). Ce qui ne semble pas être le cas vu la taille disque annoncé. pour le vérifier aller à l'offset 20 et lire la valeur sur 2 octets 1 indique PCM.

Discussions similaires

  1. Lecture d'un fichier wave à partir d'une interface graphique
    Par abdousoft dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 18/07/2011, 00h20
  2. Lecture de fichiers wave par événements extérieurs
    Par Jean Breil dans le forum Pascal
    Réponses: 0
    Dernier message: 19/09/2007, 00h19
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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