從音頻呈現圖像
回答
這是不可能的,除了還通過提取音頻作爲二進制數據和拆包的MP3(不是JavaScript的長處) ,或也許通過使用Java或Flash來提取您需要的信息位(這似乎是可能的,但它也似乎比我個人想要承擔的更頭痛)。
但您可能對Dave Humphrey's audio experiments感興趣,其中包括一些很酷的可視化工具。他通過修改瀏覽器源代碼並重新編譯來做到這一點,所以這顯然不適合您。但是這些實驗可能會導致未來將新功能添加到<audio>
元素中。
更新:webAudio,mozAudio和像JS-Mad這樣的項目讓這種情況發生......甚至在無法支持它的瀏覽器中。事實上,一些瘋狂的polyfilling jsMad可以解碼像IE這樣的超大型瀏覽器中的音頻 – ShrekOverflow 2013-01-11 17:05:56
爲此,您需要做的傅立葉變換(尋找FFT),這將是目前在實時在JavaScript慢,不可能。
如果你真的想在瀏覽器中這樣做,我會建議用java/silverlight來做,因爲它們可以在瀏覽器中提供最快的數字運算速度。
通過FFT運行樣本,然後將給定頻率範圍內的能量顯示爲給定點處圖形的高度。您通常希望頻率範圍從左邊的20 Hz左右到大約右邊的採樣率/ 2(如果採樣率超過40 KHz,則爲20 KHz)。
雖然我不太確定如何在JavaScript中這樣做。不要誤解我的意思:JavaScript完全可以實現FFT - 但我並不十分確定要實時做到這一點。 OTOH,用戶查看,每秒可以獲得5-10次更新,這可能是一個相當容易達到的目標。例如,每200毫秒更新一次樣本20毫秒可能是期望值的一半,但我當然不能保證您能夠跟上這一點。
http://ajaxian.com/archives/amazing-audio-sampling-in-javascript-with-firefox
退房的源代碼,看看他們是如何可視化音頻
你有樣本和教程的口吻在這裏:(?歌劇)http://www.html5rocks.com/en/tutorials/#webaudio
它在過去的Chrome和最後的最後Firefox瀏覽器的時刻。
演示:http://www.chromeexperiments.com/tag/audio/
要做到這一點,現在,對於一個網站的所有訪問者,您可以檢查誰穿過閃光「代理」 SoundManagerV2.js進入音頻數據http://www.schillmania.com/projects/soundmanager2/demo/api/(他們已經在HTML5工作音頻引擎,只要專業瀏覽器實現它就可以發佈它)
由您決定在畫布中繪製3種不同的音頻數據:WaveForm,均衡器和峯值。
soundManager.defaultOptions.whileplaying = function() { // AUDIO analyzer !!!
$document.trigger({ // DISPATCH ALL DATA RELATIVE TO AUDIO STREAM // AUDIO ANALYZER
type : 'musicLoader:whileplaying',
sound : {
position : this.position, // In milliseconds
duration : this.duration,
waveformDataLeft : this.waveformData.left, // Array of 256 floating-point (three decimal place) values from -1 to 1
waveformDataRight: this.waveformData.right,
eqDataLeft : this.eqData.left, // Containing two arrays of 256 floating-point (three decimal place) values from 0 to 1
eqDataRight : this.eqData.right, // ... , the result of an FFT on the waveform data. Can be used to draw a spectrum (frequency range)
peakDataLeft : this.peakData.left, // Floating-point values ranging from 0 to 1, indicating "peak" (volume) level
peakDataRight : this.peakData.right
}
});
};
有了HTML5,你可以得到:
var freqByteData = new Uint8Array(analyser.frequencyBinCount);
var timeByteData = new Uint8Array(analyser.frequencyBinCount);
function onaudioprocess() {
analyser.getByteFrequencyData(freqByteData);
analyser.getByteTimeDomainData(timeByteData);
/* draw your canvas */
}
上班時間! ;)
- 1. 從API呈現圖像
- 2. Wicket:從純文本字符串呈現HTML5音頻
- 3. 在視頻中呈現多個圖像,像時尚
- 4. 呈現像javascript中的視頻圖像鏈
- 5. 從反應道具中呈現圖像,
- 6. 從MongoDB呈現樹枝中的圖像
- 7. 如何從UIWebview呈現圖像
- 8. reactjs - 如何呈現圖像從json blob
- 9. FFMPEG圖像+音樂=視頻
- 10. 如何打開圖像/視頻/音頻?
- 11. FFMpeg批量圖像+多音頻視頻
- 12. 無法呈現圖像HttpContext.Response.OutputStream
- 13. 動態呈現圖像
- 14. TCPDF呈現不PNG圖像
- 15. html2canvas不呈現CDN圖像
- 16. 圖像不呈現 - JavaScript,Ajax
- 17. 效果呈現圖像
- 18. Openmp呈現BMP圖像
- 19. Wkhtmltopdf不呈現圖像
- 20. PNG圖像呈現黑色
- 21. Chrome不呈現圖像
- 22. ListView呈現圖像問題。
- 23. 背景圖像不呈現
- 24. 重現音頻
- 25. 從程序訪問圖像/音頻/視頻文件
- 26. FFMPEG從音頻到視頻產生更銳利的圖像
- 27. 使用FFMPEG從圖像和音頻文件轉換視頻
- 28. 從圖像和音頻創建視頻文件(預先錄製)
- 29. 呈現HTML5視頻到畫布正在壓縮圖像
- 30. 從AppExceptionHandler呈現視圖
我很欣賞你的「something」 - 「sth」的新縮寫。被過度使用。 – iandisme 2010-01-21 21:19:26