У меня есть PCM-поток, который я бы хотел визуализировать с помощью «Visualizer» для Android, но не разыгрывая его громко.Android Visualizer на приглушенном AudioTrack/MediaPlayer
Для этого я внедрил android-visualizer.
визуализация успешна, если я использую
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);
Но теперь моя проблема в том, что я не хочу, чтобы действительно «играть» мой PCM, я просто хотел бы, чтобы визуализировать его. Мои пользователи, возможно, слышат музыку со своим медиа-плеером, и я не хочу их беспокоить.
Так что я подумал: «Хорошо, я могу просто отключить мой AudioTrack»:
audioTrack.setStereoVolume(0.0f, 0.0f);
но, к сожалению, нет и не более визуализации. Я думал, что Visializer следует игнорировать громкость аудиодорожки из-за SCALING_MODE_NORMALIZED:
Определяет режим съемки, где усиление применяется на основе содержания захваченных данных. Это режим визуализатора по умолчанию, а подходит для визуализации музыки.
Следующая я пытался не писал PCM в аудио-дорожки, но и обеспечивает его непосредственно в ящике:
mVisualizerView.updateVisualizer(fileContent);
Это создает кривую, но это выглядело действительно с ума и не имеет никакого отношения к делайте с этим то, что я ожидал (может быть, потому, что я предоставляю стерео вместо моно?).
Я также не имел никакого успеха в создании «waveform» или «fft» -данных PCM-потока - я просто для новичков.
У кого-нибудь есть идея?
Я не вижу, как это поможет, поскольку это переключает объем потока между 0 и некоторым другим значением. «AudioFlinger» учитывает громкость трека, объем потока и мастер-громкость при расчете конечного тома. Таким образом, этот метод не достигнет того, чего хочет OP (чтобы получить ненулевые данные в «Visualizer», но без прослушивания звука). – Michael