国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何在云電腦串流中實(shí)現(xiàn)聲音輸入輸出—虛擬聲卡(虛擬揚(yáng)聲器和虛擬麥克風(fēng))開發(fā)

這篇具有很好參考價(jià)值的文章主要介紹了如何在云電腦串流中實(shí)現(xiàn)聲音輸入輸出—虛擬聲卡(虛擬揚(yáng)聲器和虛擬麥克風(fēng))開發(fā)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


虛擬聲卡(虛擬揚(yáng)聲器和虛擬麥克風(fēng))技術(shù)原理簡介

1. 背景

近些年云計(jì)算的發(fā)展可謂是勢不可擋,無論是辦公還是娛樂等行業(yè)都開始使用云計(jì)算來逐步替代直接使用本地物理硬件的技術(shù),例如:

  1. 服務(wù)器部署。相比之前,現(xiàn)在部署一個(gè)服務(wù)器都非常簡單;我們只需要在阿里云,華為云等購買相關(guān)主機(jī)(虛擬機(jī))和服務(wù)即可,根本無需在公網(wǎng)部署一個(gè)硬件設(shè)備,這樣我們非常容易就擁有了自己個(gè)人的公網(wǎng)服務(wù)器。
  2. VDI云桌面。該項(xiàng)技術(shù)目前主要是針對內(nèi)網(wǎng)辦公場景,企業(yè)通過桌面云集中管理員工虛擬主機(jī),達(dá)到數(shù)據(jù)安全,集中管理,快速重復(fù)利用,一鍵式部署等功能。
  3. 云游戲。隨著4G和5G網(wǎng)絡(luò)的飛速發(fā)展,游戲也開始逐漸云化,很多傳統(tǒng)游戲廠商和VR游戲廠商都開始支持云游戲;借助云游戲,我們?nèi)绻枰娲笮陀螒颍镜責(zé)o需高性能GPU和CPU的支持,甚至本地?zé)o需要對游戲進(jìn)行直接安裝,我們使用簡單(廉價(jià))終端就可以通過云游戲技術(shù)來體驗(yàn)大型游戲,達(dá)到與本地一致的體驗(yàn)效果。

我們以VDI云桌面辦公為例,其大致的部署架構(gòu)如下:

虛擬麥克風(fēng)音頻輸入,虛擬化技術(shù),電腦

如上圖,一般來說:

  1. 客戶端:指的是我們的瘦終端,一般使用的是普通硬件,比如性能比較差但是價(jià)格比較廉價(jià)的個(gè)人終端電腦。
  2. 服務(wù)器:這里指的是我們的虛擬機(jī),是我們真實(shí)運(yùn)行的主機(jī)(安裝了各種辦公應(yīng)用或者游戲的虛擬機(jī)),它一般有高性能,方便管理等特性。

在云計(jì)算的背景下面,雖然我們云主機(jī)(上圖的虛擬機(jī))運(yùn)行在了遠(yuǎn)端,給使用和管理帶來了非常大的便捷,但是也帶來了很大技術(shù)上面的困難。例如聲音的播放和錄制相比本地的使用實(shí)現(xiàn)就復(fù)雜很多,下面舉幾個(gè)相關(guān)例子:

  1. 如果我們使用云游戲,一個(gè)非常通用的功能就是接麥;由于我們的云主機(jī)一般是虛擬機(jī),沒有接入麥克風(fēng),這個(gè)時(shí)候如果需要接麥的話就會非常麻煩(如果是物理主機(jī),麥克風(fēng)在本地,遠(yuǎn)端主機(jī)也無法連接本地麥克風(fēng))。
  2. 如果我們使用VDI云桌面,也有類似的場景,例如我們使用直播軟件或者教學(xué)軟件進(jìn)行聲音廣播;或者我們使用電話軟件進(jìn)行撥號的時(shí)候也是需要麥克風(fēng)支持的,此時(shí)麥克風(fēng)硬件在也是無法達(dá)到要求。
  3. 對于揚(yáng)聲器來說,雖然我們可以直接對揚(yáng)聲器聲音進(jìn)行捕獲,然后在客戶端(瘦終端)進(jìn)行播放,但是虛擬機(jī)并沒有揚(yáng)聲器設(shè)備,因此也無法達(dá)到需求(用戶程序無法進(jìn)行音頻播放)。

面臨這些問題,我們需要在虛擬機(jī)有揚(yáng)聲器和麥克風(fēng),并且需要能夠做到:

  1. 揚(yáng)聲器:最基礎(chǔ)的功能需要讓用戶軟件可以識別到揚(yáng)聲器設(shè)備,并使用該揚(yáng)聲器進(jìn)行聲音播放,當(dāng)然我們也可以在驅(qū)動(dòng)中獲取應(yīng)用程序播放音頻數(shù)據(jù)。
  2. 麥克風(fēng):麥克風(fēng)就比較麻煩了,麥克風(fēng)僅僅讓相關(guān)用戶軟件能夠識別到硬件設(shè)備還不足已解決問題,對于麥克風(fēng)設(shè)備還需要支持喂數(shù)據(jù)的操作,將需要錄制的音頻直接傳遞給麥克風(fēng),達(dá)到真實(shí)聲音錄制的效果。

要解決上面這些問題,就需要在虛擬機(jī)中對聲卡進(jìn)行虛擬化,實(shí)現(xiàn)虛擬聲卡驅(qū)動(dòng)程序,使得用戶程序能夠使用揚(yáng)聲器播放聲音以及可以對麥克風(fēng)喂數(shù)據(jù),將本地麥克風(fēng)的數(shù)據(jù)喂給虛擬機(jī)的虛擬麥克風(fēng)。

下面,將通過本文來分析虛擬聲卡的實(shí)現(xiàn)原理,來實(shí)現(xiàn)虛擬揚(yáng)聲器和虛擬麥克風(fēng)的功能。

2. 技術(shù)概要

2.1 用戶層聲音架構(gòu)

在XP下面,Windows對于聲音的處理架構(gòu)基本如下:
虛擬麥克風(fēng)音頻輸入,虛擬化技術(shù),電腦

這種架構(gòu)只有在XP系統(tǒng)下才支持,在這種模式下面我們可以發(fā)現(xiàn),如果對于揚(yáng)聲器聲音采集的話會非常麻煩,要么使用HOOK,要么實(shí)現(xiàn)虛擬揚(yáng)聲器在驅(qū)動(dòng)中拷貝數(shù)據(jù)。

因此Windows在Vista版本對音頻的架構(gòu)做了很多的調(diào)整,Vista之后的版本架構(gòu)如下:
虛擬麥克風(fēng)音頻輸入,虛擬化技術(shù),電腦

該架構(gòu)下面,所有的聲音都通過Core Audio API來進(jìn)行控制,該架構(gòu)下面聲音有三種模式進(jìn)行處理:

  • render模式 :該方式實(shí)際上就是播放聲音,常見的API如PlaySound, WaveOutXXX, DirectSound,IAudioRenderClient等,具體的如何使用揚(yáng)聲器進(jìn)行音頻播放不是本文的重點(diǎn),如果想了解Windows上的音頻播放可以參考如下MSDN鏈接

https://learn.microsoft.com/en-us/windows/win32/coreaudio/rendering-a-stream

  • capture模式 :該方式實(shí)際上就是錄入聲音, 也就是我們通過麥克風(fēng)輸入聲音,常見API如WaveInXXX,IAudioCaptureClient, 如果想了解更多關(guān)于如何從麥克風(fēng)采集數(shù)據(jù)請參考如下MSDN鏈接:

https://learn.microsoft.com/en-us/windows/win32/coreaudio/capturing-a-stream

  • loopback模式 : 該方式就是把揚(yáng)聲器里播放的聲音抓取下來,通常我們看到的流推軟件中聲音的推送就是使用該模式采集的。

在Vista系統(tǒng)音頻架構(gòu)中,我們對音頻的開發(fā)也相對簡單:

  1. MMDevice API:表示聲音設(shè)備相關(guān)的接口,例如枚舉聲音設(shè)備等等。
  2. WASAPI:這個(gè)是Windows 聲音會話相關(guān)的所有API,我們看到的IAudioClient等接口,以及最關(guān)鍵用于播放揚(yáng)聲器的IAudioRenderClient接口以及采集麥克風(fēng)的音頻數(shù)據(jù)的IAudioCaptureClient,都是由他提供。
  3. DeviceTopologyAPI:這個(gè)是設(shè)備拓?fù)浣Y(jié)構(gòu)管理的API,用于遍歷音頻設(shè)備適和音頻終端的內(nèi)部拓?fù)?,并可以決定音頻設(shè)備的連接順序,通過DeviceTopology API中的接口和方法, 我們可以沿著Audio Adapter的硬件設(shè)備里的數(shù)據(jù)通道數(shù)據(jù)流程進(jìn)行之配置,比如對音頻終端設(shè)備的數(shù)據(jù)路徑上流經(jīng)音頻數(shù)據(jù)流進(jìn)行音量控制。
  4. EndPointVolumeAPI:這個(gè)是音量控制相關(guān)的API。

上述圖中,聲音的播放分為共享模式和獨(dú)占模式:文章來源地址http://www.zghlxwxcb.cn/news/detail-762237.html

  1. 共享模式:每個(gè)用戶程序都在自己的會話進(jìn)行聲音播放

到了這里,關(guān)于如何在云電腦串流中實(shí)現(xiàn)聲音輸入輸出—虛擬聲卡(虛擬揚(yáng)聲器和虛擬麥克風(fēng))開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)集成的云計(jì)算解決方案:如何在云環(huán)境中實(shí)現(xiàn)數(shù)據(jù)集成

    數(shù)據(jù)集成是指將來自不同數(shù)據(jù)源的數(shù)據(jù)進(jìn)行整合、清洗、轉(zhuǎn)換和加工,以實(shí)現(xiàn)數(shù)據(jù)的一致性、統(tǒng)一性和可共享性。隨著數(shù)據(jù)量的增加和數(shù)據(jù)來源的多樣性,數(shù)據(jù)集成的復(fù)雜性也不斷增加。云計(jì)算是一種基于網(wǎng)絡(luò)的計(jì)算資源分配和共享模式,可以提供大規(guī)模、高可擴(kuò)展性的計(jì)算

    2024年04月15日
    瀏覽(31)
  • 筆記本電腦沒有麥克風(fēng),聲音無法找到輸入設(shè)備

    筆記本電腦沒有麥克風(fēng),聲音無法找到輸入設(shè)備

    新買的電腦沒有揚(yáng)聲器,電腦聲音沒有輸入設(shè)備,在開騰訊會議的時(shí)候才發(fā)現(xiàn)竟然有這個(gè)問題。 網(wǎng)上找原因,哎,找了一大堆每一個(gè)靠譜的 這讓我想起來上次電腦沒有熱鍵的問題,所有問題的終極解決方案,都在源頭那里,網(wǎng)上的這些東西都是大家從源頭那里吸收消化過的

    2024年02月07日
    瀏覽(22)
  • Win10 操作系統(tǒng)如何讓不同的音頻輸出設(shè)備播放不同的聲音

    Win10 操作系統(tǒng)如何讓不同的音頻輸出設(shè)備播放不同的聲音

    應(yīng)用案例:我做題時(shí)藍(lán)牙音箱播放音樂,其他應(yīng)用通過電腦揚(yáng)聲器播放聲音。 鼠標(biāo)左鍵點(diǎn)擊 Windows 微標(biāo)健,再點(diǎn)擊設(shè)置按鈕。 在搜索框中搜索“混音器選項(xiàng)”,按下回車。 打開混音器選項(xiàng)后就可以進(jìn)行修改了。 右鍵點(diǎn)擊任務(wù)欄右下角的聲音圖標(biāo),點(diǎn)擊“打開聲音設(shè)置”。

    2024年01月21日
    瀏覽(27)
  • 持續(xù)集成與持續(xù)交付(CI/CD):探討在云計(jì)算中實(shí)現(xiàn)快速軟件交付的最佳實(shí)踐

    持續(xù)集成與持續(xù)交付(CI/CD):探討在云計(jì)算中實(shí)現(xiàn)快速軟件交付的最佳實(shí)踐

    ??個(gè)人主頁:程序員 小侯 ??CSDN新晉作者 ??歡迎 ??點(diǎn)贊?評論?收藏 ?收錄專欄:云計(jì)算 ?文章內(nèi)容:軟件交付 ??希望作者的文章能對你有所幫助,有不足的地方請?jiān)谠u論區(qū)留言指正,大家一起學(xué)習(xí)交流!?? 持續(xù)集成(Continuous Integration,CI)和持續(xù)交付(Continuous D

    2024年02月10日
    瀏覽(36)
  • 使用sunshine+moonlight 實(shí)現(xiàn)電腦串流到電視(Android 設(shè)備)低延遲投屏

    使用sunshine+moonlight 實(shí)現(xiàn)電腦串流到電視(Android 設(shè)備)低延遲投屏

    目前市面上的投屏軟件大多存在視頻質(zhì)量不清晰,延遲嚴(yán)重,投屏收費(fèi)等問題。 為解決電腦到電視或者投影儀無線連接進(jìn)行投屏,目前使用基于nvidia開源項(xiàng)目的Moonlight是目前最佳的解決方案。 原本nVidia 的顯卡內(nèi)置的GameStream可以實(shí)現(xiàn)低延遲高畫質(zhì)的串流的,但是: 這就非常

    2024年02月08日
    瀏覽(31)
  • 吉他如何實(shí)現(xiàn)內(nèi)錄or通過轉(zhuǎn)接頭和簡易聲卡連接電腦沒有聲音怎么辦

    吉他如何實(shí)現(xiàn)內(nèi)錄or通過轉(zhuǎn)接頭和簡易聲卡連接電腦沒有聲音怎么辦

    目錄 效果器or智能音箱 電吉他和效果器的連接 效果器和耳機(jī)or音箱連接 內(nèi)錄方法 為什么用6.5mm(入)轉(zhuǎn)3.5mm(出)轉(zhuǎn)接頭內(nèi)錄無聲音 整體連接圖示 這篇文章我會以通俗的語言為初學(xué)者描述如何讓電吉他“燃起來”,效果器以MOOER魔耳POGO迷你電吉他綜合效果器為示例。然后我

    2024年02月15日
    瀏覽(19)
  • outputStream(輸出流)轉(zhuǎn)inputstream(輸入流)以及輸入流如何復(fù)用

    需求: 通過MultipartFile 上傳文件到文件服務(wù)器,上傳前要把文件轉(zhuǎn)為pdf格式進(jìn)行上傳,并生成文件摘要用來驗(yàn)證服務(wù)器中的文件是否被篡改。 準(zhǔn)備: 需要涉及到 inputstream(輸入流)或outputStream(輸出流)要使用兩次 。 一、如果該文件本身就是pdf格式則直接進(jìn)行上傳。第一次

    2024年02月14日
    瀏覽(16)
  • 輸入端口少如何擴(kuò)展?74hc148或74ls148級聯(lián)在arduino中實(shí)現(xiàn)16轉(zhuǎn)4的應(yīng)用

    輸入端口少如何擴(kuò)展?74hc148或74ls148級聯(lián)在arduino中實(shí)現(xiàn)16轉(zhuǎn)4的應(yīng)用

    上一篇博文我們使用矩陣鍵盤時(shí)面臨的一個(gè)問題就是占用的端口多,以前我們擴(kuò)展輸出端口使用了74hc595,那么這里我們面臨的是輸入端口少需要擴(kuò)展的問題,那么可以使用什么芯片來完成了?有沒有直接可使用的芯片呢? 文章原出處: https://blog.csdn.net/haigear/article/details/13

    2024年02月04日
    瀏覽(24)
  • Pytorch模型如何查看每層輸入維度輸出維度

    在 PyTorch 中,可以使用 torchsummary 庫來實(shí)現(xiàn)對 PyTorch 模型的結(jié)構(gòu)及參數(shù)統(tǒng)計(jì)的輸出,其可以方便我們查看每層輸入、輸出的維度以及參數(shù)數(shù)量等信息。 安裝 torchsummary 庫: 使用方法如下: 其中, model 是需要查看的模型, (3, 32, 32) 表示模型的輸入維度,即 C = 3,H = 32,W = 32。

    2024年02月16日
    瀏覽(17)
  • AudioTrack的聲音輸出流程

    通過普通AudioTrack的流程追蹤數(shù)據(jù)流。分析一下聲音模塊的具體流程。這里比較復(fù)雜的是binder以及共享內(nèi)存。這里不做詳細(xì)介紹。只介紹原理 java層的AudioTrack主要是通過jni調(diào)用到cpp層的AudioTrack。我們只介紹cpp層相關(guān)。 初始化 初始化只核心是通過set函數(shù)實(shí)現(xiàn)的。主要包括三步。

    2024年02月13日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包