WASAPI、DirectSound/DS、WaveOut、Kernel Streaming/KS

先放結論:程序員

  • ASIO:硬件支持+對應驅動程序
  • DS:兼容性最好,通常也是默認的。
  • WASAPI:是Vista以後的,較佳選擇輸出方式。

再來詳細看:編程

ASIO、WDM都是指音頻通道,就是音頻數據走的路。
ASIO指的是ASIO音頻通道;WDM是指WDM類型的音頻通道,具體包括WaveOut、DirectSound(簡稱DS)、Kernel Streaming(簡稱KS),Windows Vista和7 還比XP多了WASAPI。
具體體如今各個音頻播放、錄音軟件的設置裏,好比Foobar2000等。架構

打形象的比喻,音頻數據是車,操做系統的音頻部分是一條路。
WaveOut、DirectSound(簡稱DS)就比如最通常的公用車道,你們能夠並行走(程序能夠一塊兒發聲),但要受到一些旁車的影響。
Kernel Streaming(簡稱KS),WASAPI比如在這條操做系統音頻之路上劃出一條專用道,只容許一個車走,雖然還走着一條路,但沒有干擾了,程序獨佔。
ASIO就比如我壓根不走操做系統那條路了,我本身專門再修一條新路,本身走本身的,不過操做系統公共音頻部分了。
其實ASIO最有價值的地方在於錄音,它的最大特色在於聲音數據在通道里通行快,延時小(音頻傳輸是須要若干毫秒的時間的,對於精確錄音和聲音混音合成,非常敏感)。編程語言

 

DS就是DirectSound的首字母縮寫,DirectSound是DirectX的一部分,而DirectX則是被不少遊戲玩家所熟知,DirectX是由微軟建立的多媒體編程接口,由C++編程語言實現,遵循COM。DirectX是Windows平臺下最通用最成熟的接口,多媒體軟件大多采用了DirectX API。經過DS輸出可爲開發者和用戶帶來許多便利,FB2K下使用DS輸出則是能夠實現漸響、淡出等功能,還能支持聲卡所帶的音效,因此小編並非推薦各位網友使用DS輸出來播放無損音樂。操作系統

 

ASIO全稱Audio stream input output,是德國Steinberg公司所提出的,主要目的是爲了解決PC音頻方面的輸入輸出的延遲問題,因爲系統自帶的音頻輸出方式通常延遲都大於10ms,雖然10ms並不算長,但仍舊是沒法知足專業領域的嚴苛需求的,因而ASIO便針對延遲問題進行了深度設計,使其輸出輸入延遲可以低於10ms,甚至還能低於1ms,徹底可以知足專業音樂製做的需求,聆聽音樂選擇該方法輸出,主要目的確定不是下降延遲了,而是爲了能避開系統重採樣、音效以及規格化處理,因爲ASIO低延遲設計,因此在輸出過程中不會引入任何處理,但ASIO缺點也是很明顯的,ASIO是須要驅動層面的支持,並非全部聲卡都帶有ASIO驅動,雖然有第三方驅動,但效果可能不盡如人意。設計


WASAPI全稱Windows Audio Session API,是微軟Vista以後所引入的,Vista當中微軟重寫了音頻架構,提出了一套新的通用架構,Universal Audio Architechture(UAA),並增長了全新的WASAPI,WASAPI爲程序開發者提供了兩種模式,共享模式(Shared Mode)和獨佔模式(Exclusive Mode),使用獨佔模式時能夠和ASIO輸出達到類似的效果,此時聲卡被某一程序獨佔,只有該程序能使用聲卡,其餘程序均不能佔用聲卡,並且獨佔模式時,系統不也會干涉音頻流,直接將其交給聲卡驅動進行輸出,聲卡自帶的音效以及系統重採樣均不會起到做用,可輸出純淨的聲音,接口

【在過去,聲卡廠商例如Creative、Realtek等,爲了讓使用者透過自家編寫的控制檯來進行各方面關於音頻設備的設定,因此編寫驅動程序時,必須在Kernel Mode(內核模式)這個層級撰寫至關多的代碼來提供調用,使得使用者的操做設定可以直達硬件層。然而這對於系統的穩定度是一個很很差的影響,稍微有一點點意外情況,會由於這些功能跑在Kernel Mode而致使系統死機。在 Vista 時代有所改善了。Microsoft要求全部音頻設備的廠商必須遵循UAA的架構來開發驅動程式,也爲了配合UAA架構,Vista能夠說是整個翻新了音訊處理流程,許多本來須要寫在Kernel Mode的聲卡功能,須要改寫到User Mode(用戶模式)去,進而增長了系統穩定度。】遊戲


KS(Kernel Streaming)輸出是一種比較老舊的輸出方式,主要使用在沒有WASAPI的XP以及以前版本的Windows系統當中,KS最先出如今Windows 98當中,它容許程序員可以爲多媒體設備實時的處理音頻流,效果和ASIO、WASAPI相似,均可以避開系統對音頻的音效處理或是規格化,從Vista開始KS已經逐漸被WASAPI所取代了,目前支持的軟件並很少。開發

相關文章
相關標籤/搜索