/ / Java - Fichier Wav - Null Byte? - java, audio, javasound

Java - Fichier Wav - Null Byte? - java, audio, javasound

J'ai une question étrange. En ce moment, je suis capable de lire les échantillons de fichiers wav et de les traiter, puis de les sauvegarder dans un fichier. Mais pour mon projet, je dois changer des octets avec une valeur nulle. Je veux dire (par exemple: forme binaire de 25), cela signifie que la carte son nous donnera un signal électrique de 25 (je pourrais avoir des malentendus à propos des cartes son et des concepts de fichiers wav).

Mais dans mon projet, je dois mettre null valeurs dans le fichier wav. Comme lorsque la carte son lit la forme binaire de 25, elle donnera un signal mais après cela, il y aura un octet nul et la carte son ne donnera aucun signal électrique car une autre valeur arrive.

Je sais, je ne pouvais pas exprimer ma question correctement. Pour le rendre plus compréhensible;

Supposons qu'il y ait un fichier qui est stocké comme ça

data[] = {10,12,13,14,15,14,13,12,11,10};

Je veux le faire

data[]= {10,12,13,14,null,null,null,12,11,10}

et quand la carte son lit ces données, cela nous donnera par exemple

10 voltage,12 voltage,13 voltage,14 voltage,no any signal,no any signal,no any signal,12 voltage, 11 voltage, 10 voltage}

Réponses:

0 pour la réponse № 1

Vous pouvez "t mettre un null dans un fichier lorsque vous traitez avec des octets - chaque octet doit être l’une des 256 combinaisons de bits.

Qu'entendez-vous exactement par retour de la carte son? no any signal? Isn "t qui équivaut à zéro tension (c'est-à-dire utiliser la valeur entière 0 dans le fichier)? Ou utilisez-vous null comme un espace réservé pour représenter "inconnu"?

Vous pourriez toujours ne pas exprimer pleinement votre question - il semble que vous ayez décidé que vous deviez mettre des caractères nuls dans un fichier, et il ne semble pas que vous justifiiez cela. Qu'es-tu réellement en essayant de réaliser (pas "mettre des nulls dans un WAV") - et cela fonctionnerait-il avec des zéros?


0 pour la réponse № 2

Je doute qu'un fichier WAV ait une manière spécifique de représenter "aucun signal" au milieu d'une forme d'onde. (Une lecture rapide de cette description semble confirmer cela.)

Je pense que votre meilleur pari est d’utiliser simplement des zéros sans signal. (De toute évidence, les zéros seront encodés avec le codec choisi.)


Soit dit en passant, même si le fichier WAV avait une façon de représenter "pas de signal", cela ne nécessiterait pas de mettre null valeurs dans un tableau d'octets Java. Un tableau d'octets Java ne peut pas contenir nulls ... toujours. La spécification de langage Java l’interdit.


0 pour la réponse № 3

Il n'y a pas de "signal nul". Si vous voulez dire que vous ne voulez aucune sortie, envoyez simplement 0 (si vous utilisez des valeurs signées). Si vous utilisez des valeurs non signées (non prises en charge par Java), envoyez 128 pour les échantillons 8 bits et 32768 pour les échantillons 16 bits.

Alors dis juste

data[]= {10,12,13,14,0,0,0,12,11,10};

suivi de quelque chose comme

yourSoundCardObject.write(data); //The method write is hypothetical

Quel est votre taux d'échantillonnage?