java转换音频采样率_转换音频采样率
對于采樣率,相信很多人知道這個(gè)詞卻不知道是什么意思。
官方解釋:采樣頻率,也稱為采樣速度或者采樣率,定義了每秒從連續(xù)信號(hào)中提取并組成離散信號(hào)的采樣個(gè)數(shù),它用赫茲(Hz)來表示。采樣頻率的倒數(shù)是采樣周期或者叫作采樣時(shí)間,它是采樣之間的時(shí)間間隔。通俗的講采樣頻率是指計(jì)算機(jī)每秒鐘采集多少個(gè)聲音樣本,是描述聲音文件的音質(zhì)、音調(diào),衡量聲卡、聲音文件的質(zhì)量標(biāo)準(zhǔn)。
從實(shí)際效果簡單來說,采樣率會(huì)影響播放速度,采樣率越高播放速度越快。如果你以44.1k的采樣率去播一個(gè)只有8k采樣率的音頻,估計(jì)很快就播完了。所以,由于并不是所有音頻的采樣率都是統(tǒng)一的,就會(huì)涉及到一個(gè)采樣率轉(zhuǎn)換的問題,在這里給大家介紹一個(gè)庫,JSSRC。
這里是github地址:https://github.com/hutm/JSSRC
里面的類也不是所有都需要用到,只需要SSRC,I0Bessel,SplitRadixFft這三個(gè)類就可以實(shí)現(xiàn)轉(zhuǎn)換采樣率的功能。
然后用下面這個(gè)方法就可以轉(zhuǎn)換采樣率了:
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就是待轉(zhuǎn)換的采樣率,44100就是目標(biāo)采樣率,可以從低轉(zhuǎn)到高,也可以高轉(zhuǎn)低。
轉(zhuǎn)換采樣率的方法還有很多,只是我覺得這個(gè)方法比較簡單,希望會(huì)對大家有幫助
總結(jié)
以上是生活随笔為你收集整理的java转换音频采样率_转换音频采样率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java returnaddress_J
- 下一篇: java script jquery_J