在開始集成 ZEGO Express SDK 前,請(qǐng)確保開發(fā)環(huán)境滿足以下要求:
我們擁有10多年網(wǎng)頁設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、微信開發(fā)、小程序設(shè)計(jì)、手機(jī)網(wǎng)站開發(fā)、H5響應(yīng)式網(wǎng)站、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。
2.1 創(chuàng)建項(xiàng)目
進(jìn)入即構(gòu)官網(wǎng), 在 【ZEGO控制臺(tái)】 創(chuàng)建項(xiàng)目,并申請(qǐng)有效的 AppID,這一步很關(guān)鍵,appid為應(yīng)用的唯一標(biāo)識(shí),如身份證號(hào),是應(yīng)用的身份證明,用于明確你的項(xiàng)目及組織身份。zego提供的服務(wù)也是基于APP ID;
App ID的獲取方式很簡(jiǎn)單,只需3~5分鐘,在即構(gòu)官網(wǎng)-我的項(xiàng)目-創(chuàng)建即可。創(chuàng)建的項(xiàng)目信息可用于SDK的集成和配置;
2.2 Token 鑒權(quán)
開始集成前,可參考如下步驟設(shè)置你的項(xiàng)目;
如已有項(xiàng)目,本步驟可忽略。
如需新建項(xiàng)目,可按照以下步驟創(chuàng)建你的新項(xiàng)目:
用戶通過 ZEGO Express SDK 進(jìn)行視頻通話的基本流程為:
用戶 A、B 加入房間,用戶 B 預(yù)覽并將音視頻流推送到 ZEGO 云服務(wù)(推流),用戶 A 收到用戶 B 推送音視頻流的通知之后,在通知中播放用戶 B 的音視頻流(拉流)。
整個(gè)音視頻通話推拉流過程的 API 調(diào)用時(shí)序如下圖:
1. 創(chuàng)建界面
根據(jù)場(chǎng)景需要,為你的項(xiàng)目創(chuàng)建視頻通話的用戶界面。我們推薦你在項(xiàng)目中添加如下元素:
2.引入頭文件,準(zhǔn)備基礎(chǔ)工作
3. 創(chuàng)建引擎
調(diào)用 createEngineWithProfile 接口,將申請(qǐng)到的 AppID 傳入?yún)?shù) “appID”,創(chuàng)建引擎單例對(duì)象。
注冊(cè)回調(diào),可將實(shí)現(xiàn)了 ZegoEventHandler 的對(duì)象(例如 “self”)傳入?yún)?shù) “eventHandler”。
調(diào)用 loginRoom 接口登錄房間。roomID 和 user 的參數(shù)由您本地生成,但是需要滿足以下條件:
調(diào)用登錄房間接口之后,您可通過監(jiān)聽 onRoomStateUpdate 回調(diào)實(shí)時(shí)監(jiān)控自己在本房間內(nèi)的連接狀態(tài)。
1. 預(yù)覽自己的畫面
如果希望看到本端的畫面,可調(diào)用 startPreview 接口設(shè)置預(yù)覽視圖,并啟動(dòng)本地預(yù)覽。
2. 將自己的音視頻流推送到 ZEGO 音視頻云
在用戶調(diào)用 loginRoom 接口后,可以直接調(diào)用 startPublishingStream 接口,傳入 “streamID”,將自己的音視頻流推送到 ZEGO 音視頻云。您可通過監(jiān)聽 onPublisherStateUpdate 回調(diào)知曉推流是否成功。
“streamID” 由您本地生成,但是需要保證:
同一個(gè) AppID 下,“streamID” 全局唯一。如果同一個(gè) AppID 下,不同用戶各推了一條 “streamID” 相同的流,后推流的用戶推流失敗。
進(jìn)行視頻通話時(shí),我們需要拉取到其他用戶的音視頻。
在同一房間內(nèi)的其他用戶將音視頻流推送到 ZEGO 音視頻云時(shí),我們會(huì)在 onRoomStreamUpdate 回調(diào)中收到音視頻流新增的通知,并可以通過 ZegoStream 獲取到某條流的 “streamID”。
我們可以在該回調(diào)中,調(diào)用 startPlayingStream ,傳入 “streamID” 拉取拉取播放該用戶的音視頻。您可通過監(jiān)聽 onPlayerStateUpdate 回調(diào)知曉是否成功拉取音視頻。
音視頻的基礎(chǔ)功能已完成,接下來我們運(yùn)行下效果,1步快速檢驗(yàn)成果。
step1 , 與好友一起安裝編譯好的App,在手機(jī)上可以看到對(duì)方并進(jìn)行通話互動(dòng)。
完成以上,說明你成功啦!
Enjoy與好友的歡樂時(shí)光!
獲取 本文的Demo、開發(fā)文檔、技術(shù)支持。
獲取 SDK的商務(wù)活動(dòng)、熱門產(chǎn)品。
注冊(cè)即構(gòu)ZEGO開發(fā)者帳號(hào), 快速開始。
任何吸引人的游戲都少不了聲音。iOS開發(fā)者在游戲中需要使用聲音時(shí)有多種選擇,取決于對(duì)游戲中音頻的控制需求,可以選擇簡(jiǎn)單的內(nèi)置服務(wù),也可以選擇更高級(jí)的API(比如OpenAL)。
通過音頻API,可以實(shí)現(xiàn)流式音頻,播放簡(jiǎn)短音效,甚至模擬3d空間的音頻。有些游戲可以通過音軌讓玩家沉浸在特定的心境中玩游戲,設(shè)置鼓勵(lì)用戶使用耳機(jī)來獲得更完美的體驗(yàn)。
本系列文章中,會(huì)陸續(xù)整理近幾年來在工作中涉及到的音頻的相關(guān)知識(shí),以算做對(duì)自己知識(shí)體系的一次梳理吧,大體包括Core Audio、OpenAL 以及Cocos2d引擎中的音效部分等三個(gè)方面。
? Core Audio 是什么?
? Core Audio 中提供的音頻服務(wù)
? Core Audio 中的有關(guān)音頻框架
? 有關(guān) Core Audio 的變化及更新
Core Audio 是什么?
Core Audio 是iOS和 MAC 的關(guān)于數(shù)字音頻處理的基礎(chǔ),它提供應(yīng)用程序用來處理音頻的一組軟件框架,所有關(guān)于IOS音頻開發(fā)的接口都是由Core Audio來提供或者經(jīng)過它提供的接口來進(jìn)行封裝的,按照官方的說法是集播放、音頻處理、錄制為一體的專業(yè)技術(shù),通過它我們的程序可以同時(shí)錄制,播放一個(gè)或者多個(gè)音頻流,自動(dòng)適應(yīng)耳機(jī),藍(lán)牙耳機(jī)等硬件,響應(yīng)各種電話中斷,靜音,震動(dòng)等,甚至提供3D效果的音樂播放。
相關(guān)鏈接:
Core Audio Overview
Audio Video Starting Point
Core Audio Glossary
Core Audio中提供的音頻服務(wù)
Core Audio 本身是一個(gè)很龐大的話題,涉及到多個(gè)領(lǐng)域中的不同服務(wù),為了更方便的使用Core Audio,通??梢詫⑵浞指顬楦〉哪K。圖一展示了根據(jù)應(yīng)用程序服務(wù)層分解的示意圖。構(gòu)建在應(yīng)用程序棧最下面的是底層硬件。接下來往上是驅(qū)動(dòng)程序?qū)?。?gòu)建在驅(qū)動(dòng)層之上的每一層都是蘋果提供給開發(fā)人員的應(yīng)用層服務(wù),包括各類音頻API和框架。
主要的幾類服務(wù):
Audio Unit
Audio Unit 是Core Audio 在應(yīng)用層中最底層的服務(wù)。在使用其他音頻API時(shí),最終在底層都會(huì)調(diào)用到Audio Unit。在所有的API中,Audio Unit 是延遲最短且最靈活的,但代價(jià)就是它的使用相當(dāng)?shù)膹?fù)雜,幸運(yùn)的是在實(shí)際使用中,我們很少直接使用Audio Unit。
相關(guān)鏈接:
Audio Unit Framework Reference
相關(guān)項(xiàng)目工程:
Core Audio Utility Classes
Audio File Service
通過Audio File Service 提供的API可以打開并讀取或者寫入磁盤上存儲(chǔ)的文件。
Audio File Stream Service
它是對(duì)Audio File Service 的擴(kuò)展補(bǔ)充。Audio File Service 對(duì)存儲(chǔ)到磁盤上的音頻文件進(jìn)行操作,而Audio File Stream Service
并不一定關(guān)聯(lián)到某個(gè)文件上,它更適合基于網(wǎng)絡(luò)的音頻應(yīng)用程序。
Audio Conversion Service
通過它可以將數(shù)據(jù)轉(zhuǎn)換為PCM格式或者從PCM格式轉(zhuǎn)換成數(shù)據(jù)。
Extended Audio File Service
可以將它理解為Audio File Service 和 Audio File Service 的組合。通過這種API 可以直接加在并轉(zhuǎn)換音頻文件。
Audio Session Service
和Core Audio中的其他API不同,它的主要用于 iOS 系統(tǒng)中協(xié)調(diào)應(yīng)用程序之間的音頻播放的 API 的。例如,當(dāng)有電話打進(jìn)來時(shí),音頻的播放就會(huì)被暫停;在用戶啟動(dòng)電影時(shí),音樂的播放就會(huì)停止。我們需要使用這些 API 來確保一個(gè)應(yīng)用程序能夠正確響應(yīng)并處理這類事件。
System Sound Service
它是一種允許播放短音效和警告的基本服務(wù),還具有提供振動(dòng)功能的獨(dú)特能力,Core Audio中的其他任何服務(wù)都不能訪問振動(dòng)系統(tǒng)。
Audio Queue Service
它可以對(duì)播放音頻進(jìn)行精細(xì)的控制,比如暫停、繼續(xù)、循環(huán)播放和音頻同步等,因此特別適合于播放和錄制持續(xù)時(shí)間很長(zhǎng)的音頻。在游戲中進(jìn)行語音敘述等情景時(shí),需要音樂或者長(zhǎng)時(shí)間的播放文件,便會(huì)需要它。
AVFoundation
它是Core Audio中唯一基于Objective-C的框架。這個(gè)框架提供了AVAudioPlayer類用于播放,AVAudioReconder類用于錄音,以及AVAudioSession類用于設(shè)置音頻回話。和其他高層API一樣,我們需要在易用性和功能之間做出權(quán)衡。如果在此框架中找不到我們需要的特性或者功能,那么就必須深入底層服務(wù)并直接使用底層的API。
相關(guān)鏈接:
AV Foundation Framework Reference
AV Foundation Programming Guide
Audio Session Programming Guide
相關(guān)的項(xiàng)目工程:
AVCaptureAudioDataOutput To AudioUnit iOS
OpenAL
和其他專用API不同,OpenAL是一個(gè)狂平臺(tái)的用于播放和捕捉音頻的工業(yè)標(biāo)準(zhǔn)。OpenAL更適合播放空間音頻(spatialized sound)或者定位音頻(positional sound)??梢詫⒖臻g音頻理解成3D空間中的聲音,通過OpanAL可以對(duì)音效添加一些效果,比如位置屬性,這樣會(huì)使遠(yuǎn)程的聲音比近處的聲音聽起來要弱一些。
相關(guān)鏈接:
OpenAL FAQ for iPhone OS
相關(guān)的項(xiàng)目工程:
oalTouch
Core Audio中的有關(guān)音頻框架
Core Audio 中的服務(wù)和框架并沒有一對(duì)一的對(duì)應(yīng)關(guān)系,應(yīng)用層的服務(wù)實(shí)際上分為5個(gè)不同的框架:Core Audio、Audio Toolbox、Audio Unit、AVFoundtaion、OpenAL。圖二中很好的展示了這些框架和服務(wù)之間的映射關(guān)系。
Audio Unit、AVFoundation和OpenAL的框架非常明了,和他們同名的服務(wù)直接對(duì)應(yīng),其中AVFoundtion有三個(gè)Objective-C類組成:AVAudioPlayer、AVAudioRecorder和AVAudioSession。
Audio Toolbox 框架提供了前面列出的其他剩下的應(yīng)用層服務(wù),包括非常重要的Audio Session Service。
相關(guān)鏈接:
Audio Toolbox Framework Reference
其他相關(guān)框架:
Media Player Framework
它是一個(gè)用于音頻和視頻播放的高層級(jí)接口,它包含了一個(gè)可以在應(yīng)用中直接使用的默認(rèn)的用戶界面,可以使用它來播放用戶在 iPod 庫中的項(xiàng)目,或者播放本地文件以及網(wǎng)絡(luò)流。另外,這個(gè)框架也包括了查找用戶媒體庫中內(nèi)容的 API,同時(shí)還可以配置像是在鎖屏界面或者控制中心里的音頻控件。
相關(guān)鏈接:
Media Player Framework Reference
Core MIDI Framework
提供與MIDI設(shè)備通訊的標(biāo)準(zhǔn)方式,包括硬件鍵盤和合成器??梢允褂眠@個(gè)框架來發(fā)送和接收MIDI消息以及與通過dock連接器或網(wǎng)絡(luò)連接到iOS設(shè)備的MIDI外設(shè)交互。
相關(guān)鏈接:
Core MIDI Framework Reference
OS 4.0以后的功能變化如下:
iOS 7.1
Support for External Media Players (CarPlay相關(guān)的)
iOS 7.0
新增 Inter-App Audio和 AudioCopy
強(qiáng)化 Media Player / AV Foundation Framework
棄用 Audio Toolbox framework內(nèi)的Audio Session API
iOS 6.0
新增 Audio UnitのComponent
強(qiáng)化 Media Player / Core Media / AV Foundation Framework
iOS 5.0
新增 Audio UnitのComponent
強(qiáng)化 Media Player / AV Foundation / AudioToolbox Frameworks
iOS 4.3
強(qiáng)化 AV Foundation
強(qiáng)化 Media Player / Audio Unit / Audio Toolbox Frameworks
iOS 4.2
新增 Core MIDI framework
強(qiáng)化 Media Player Framework
新增 AirPlay
iOS 4.1
強(qiáng)化 AV Foundation
iOS 4.0
新增 Core Media Framework
強(qiáng)化 AV Foundation
相關(guān)鏈接:What's New in iOS
注冊(cè) AVAudioSession.interruptionNotification 的通知,可以收到播放打斷通知。 系統(tǒng)將此通知發(fā)布到主線程。
其中userinfo有如下字段:
分began與end,用來表示打斷開始與打斷結(jié)束。
只在打斷結(jié)束時(shí)返回。選項(xiàng)用 shouldResume 來指示:另一個(gè)音頻會(huì)話的中斷已結(jié)束,應(yīng)用程序可以恢復(fù)其音頻會(huì)話。
該屬性只在打斷開始時(shí)返回。存在于版本iOS 10.3-14.5。
用于確定這次中斷是否由于系統(tǒng)掛起App所致。
獲取到的是一個(gè)NSNumber表示的Bool。為true表示中斷是由于系統(tǒng)掛起,false是被另一音頻打斷。
該屬性只在打斷開始時(shí)返回。存在于版本iOS 14.5以后,用來代替 AVAudioSessionInterruptionWasSuspendedKey 。
default :因?yàn)榱硪粋€(gè)音頻會(huì)話被激活,音頻中斷。(例如后臺(tái)播著音頻,此時(shí)播放微信語音)
appWasSuspended :由于APP被系統(tǒng)掛起,音頻中斷
builtInMicMuted :音頻因內(nèi)置麥克風(fēng)靜音而中斷(例如iPad智能關(guān)閉套【iPad's Smart Folio】合上)
新聞名稱:ios的音視頻開發(fā),ios的音視頻開發(fā)面試
網(wǎng)站鏈接:http://m.rwnh.cn/article12/dscocgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、軟件開發(fā)、虛擬主機(jī)、企業(yè)建站、面包屑導(dǎo)航、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)