假設您鏈接到YouTube上的視頻(使用嵌入或YouTube API),或者您只是使用HTML5視頻。在前一種情況下,您正在處理Flash,因此它似乎處於可能的領域。後一種情況似乎不可能。有什麼方法可以通過Javascript獲取/設置視頻或Flash對象的低音和高音?
有什麼這個?
假設您鏈接到YouTube上的視頻(使用嵌入或YouTube API),或者您只是使用HTML5視頻。在前一種情況下,您正在處理Flash,因此它似乎處於可能的領域。後一種情況似乎不可能。有什麼方法可以通過Javascript獲取/設置視頻或Flash對象的低音和高音?
有什麼這個?
有可能與純JavaScript來做到這一點。
你必須看看webaudio API:https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
的想法是這樣的: 音頻流經過的節點。
[Source node (i.e. your video)]-->[Analyzer node]-->[Your custom js node]
和(如果想播放音頻):
[Source node (i.e. your video)]-->[Output node (i.e. speakers)]
分析儀節點將讓你實時分析的頻率取樣,感謝的聲音和一個FFT(又名快速傅立葉變換)。
您現在有FFT提供了各頻率的振幅。所以你可以從中攫取低音和高音。
現在,您可以將自定義js節點插入分析儀,並使用onaudioprocess
回調來分析分析儀節點給出的頻率,然後按照您的要求進行操作。
這是一個相當有據可查的代碼,我寫它:https://github.com/xseignard/webGLWebAudioAPI/blob/master/js/app/audio.js
這是下面演示的一部分:http://xseignard.github.com/webGLWebAudioAPI/
也有這篇文章,它提供了一些很好的指針:http://www.smartjava.org/content/exploring-html5-web-audio-visualizing-sound
下面的演示(看代碼):http://www.smartjava.org/examples/webaudio-filters/
請注意這些演示只適用於最近的Chrome
有它的樂趣
UPDATE:這種解決方案只適用於純HTML5視頻,而不是YouTube那些爲@ TIM-wintle mentionned。
澤維爾的迴應是對於一般情況非常好,但如果你瞭解YouTube API專門詢問則沒有,你不能這樣做。
特別是,您應仔細閱讀YouTube服務API條款: https://developers.google.com/youtube/terms
特別的,你可能不「獨立,隔離或修改任何的YouTube視聽內容的音頻或視頻組件通過提供YouTube API「。
從技術角度來看,他們已經採取措施在flash播放器,以防止進入流,並在iframe API在他們放在內容上的獨立域名,以防止這一點。
你說得對,我只dealed純HTML5視頻的問題的一部分。感謝蒂姆的見解。 –