對於采樣率,相信很多人知道這個詞卻不知道是什么意思。
官方解釋:采樣頻率,也稱為采樣速度或者采樣率,定義了每秒從連續信號中提取並組成離散信號的采樣個數,它用赫茲(Hz)來表示。采樣頻率的倒數是采樣周期或者叫作采樣時間,它是采樣之間的時間間隔。通俗的講采樣頻率是指計算機每秒鍾采集多少個聲音樣本,是描述聲音文件的音質、音調,衡量聲卡、聲音文件的質量標准。
從實際效果簡單來說,采樣率會影響播放速度,采樣率越高播放速度越快。如果你以44.1k的采樣率去播一個只有8k采樣率的音頻,估計很快就播完了。所以,由於並不是所有音頻的采樣率都是統一的,就會涉及到一個采樣率轉換的問題,在這里給大家介紹一個庫,JSSRC。
這里是github地址:https://github.com/hutm/JSSRC
里面的類也不是所有都需要用到,只需要SSRC,I0Bessel,SplitRadixFft這三個類就可以實現轉換采樣率的功能。
然后用下面這個方法就可以轉換采樣率了:
private void simpleDownSample() {
File BeforeSampleChangedFile = new File(BeforeSampleChangedFilePath);
File SampleChangedFile = new File(SampleChangedFilePath);
try {
FileInputStream fileInputStream = new FileInputStream(BeforeSampleChangedFile);
FileOutputStream fileOutputStream = new FileOutputStream(SampleChangedFile);
new SSRC(fileInputStream, fileOutputStream, 8000, 44100,
2,
2,
1, Integer.MAX_VALUE, 0, 0, true);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
其中8000就是待轉換的采樣率,44100就是目標采樣率,可以從低轉到高,也可以高轉低。
轉換采樣率的方法還有很多,只是我覺得這個方法比較簡單,希望會對大家有幫助
