語言

Visualizer.GetFft(Byte[]) 方法

定義

回傳目前正在播放音訊內容的頻率擷取。

[Android.Runtime.Register("getFft", "([B)I", "GetGetFft_arrayBHandler")]
public virtual Android.Media.Audiofx.VisualizerStatus GetFft(byte[]? fft);
[<Android.Runtime.Register("getFft", "([B)I", "GetGetFft_arrayBHandler")>]
abstract member GetFft : byte[] -> Android.Media.Audiofx.VisualizerStatus
override this.GetFft : byte[] -> Android.Media.Audiofx.VisualizerStatus

參數

fft
Byte[]

FFT 應該回傳的位元組陣列

傳回

#SUCCESS #ERROR_NO_MEMORY成功時,或 #ERROR_INVALID_OPERATION#ERROR_DEAD_OBJECT失敗時。

屬性

例外狀況

備註

回傳目前正在播放音訊內容的頻率擷取。

此方法必須在啟用視覺化工具時呼叫。

擷取為 8 位元幅度 FFT,涵蓋的頻率範圍為 0(DC)到取 #getSamplingRate()樣率的一半。 捕獲回傳的頻率點的實部與虛部,等於捕獲大小的一半加一。

注意:僅返回第一點(DC)和最後一點(取樣頻率 / 2)的實部。

回傳的位元組陣列配置如下:ul>li n 是 getCaptureSize()<回傳的擷取大小/li<>li> Rfk、Ifk 分別是第 k 頻率成分< li<>的>實部與虛部。若 Fs 是 getSamplingRate() 重新調整的取樣頻率,第 k 個頻率為:k * Fs / n </li></ul<>表格邊框=“0” cellpacing=“0” cellpadding=“><<>0”tr td 索引>><<

</達陣>><0 </罰球></達陣<>TD>1 </罰球></達陣<>TD>2 </罰><球/達陣><TD>3 </罰球></達陣<>>4 </罰球></達陣><>5 </罰><球/達陣<>> 達陣... </p></td<>td dd>n - 2 </p></td><td td>n - 1 </p></td></tr><tr td>><數據 </p></td<>td>Rf0 </p></td td><td>Rf(n/2) </p></td><td>rf1 </p></td td><td>If1 </p></td<>td>rf2 </p></td<>td>tf If2 </p></td td><td... <>/p></td<>td>Rf(n/2-1) </p></td td<>td>如果(n/2-1) </p></td></tr></table>

為了獲得大小與相位值,可以使用以下程式碼:

int n = fft.size();
                  float[] magnitudes = new float[n / 2 + 1];
                  float[] phases = new float[n / 2 + 1];
                  magnitudes[0] = (float)Math.abs(fft[0]);      // DC
                  magnitudes[n / 2] = (float)Math.abs(fft[1]);  // Nyquist
                  phases[0] = phases[n / 2] = 0;
                  for (int k = 1; k &lt; n / 2; k++) {
                      int i = k * 2;
                      magnitudes[k] = (float)Math.hypot(fft[i], fft[i + 1]);
                      phases[k] = (float)Math.atan2(fft[i + 1], fft[i]);
                  }

Java 文件 android.media.audiofx.Visualizer.getFft(byte[])。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於