J'ai un flux PCM que je voudrais visualiser avec "Visualizer" d'Android mais sans le jouer à haute voix.Android Visualizer sur AudioTrack/MediaPlayer en sourdine
J'ai donc implémenté android-visualizer.
La visualisation est réussie, si j'utilise
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT,
fileContent.length, AudioTrack.MODE_STREAM);
audioTrack.play();
mVisualizerView.link(audioTrack);
..
audioTrack.write(fileContent, 0, bytes);
Mais mon problème est que je ne veux pas vraiment « jouer » mon PCM, je voudrais juste le visualiser. Mes utilisateurs écoutent peut-être de la musique avec leur lecteur multimédia et je ne veux pas les déranger.
Je pensais ok, je peux couper mon AudioTrack ':
audioTrack.setStereoVolume(0.0f, 0.0f);
mais, malheureusement, il y a aussi plus de visualisation. Je pensais que le Visializer doit ignorer le volume du AudioTrack en raison de SCALING_MODE_NORMALIZED:
définit un mode de capture où l'amplification est appliquée en fonction du contenu des données capturées. C'est le mode Visualiseur par défaut, et est adapté à la visualisation musicale.
La prochaine j'ai essayé n'a pas écrit le PCM dans la piste audio, mais fournissant directement au tiroir:
mVisualizerView.updateVisualizer(fileContent);
Cela crée une courbe, mais il avait l'air vraiment fou et n'a rien à faire avec ce que je m'attendais (peut-être parce que je fournis stéréo au lieu de mono?).
J'ai également eu aucun succès avec la création de la "forme d'onde" ou les "fft" -data du flux PCM - je viens de me découvrir.
Quelqu'un a une idée?
Je ne vois pas comment cela aiderait, car cela fait basculer le volume du flux entre 0 et une autre valeur. Le 'AudioFlinger' prend en compte le volume de la piste, le volume du flux et le volume principal lors du calcul du volume final. Donc, cette méthode n'atteindrait pas ce que l'OP veut (obtenir des données non nulles dans le 'Visualizer', mais sans que l'audio soit entendu). – Michael