版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第8章
多媒體本章內(nèi)容概要了解視頻、音頻的基本知識與常用術(shù)語。掌握播放音頻的方法,以及這些方法的優(yōu)缺點與適用范圍。掌握錄音以及控制音樂播放的方法。掌握視頻的播放與控制方法。掌握如何播放系統(tǒng)媒體庫中的音樂與視頻。掌握使用相機進行拍照與攝像的要點,以及如何將圖像與視頻保存到媒體庫。iOS應(yīng)用程序開發(fā)方法與實踐28.1音頻與視頻基礎(chǔ)容器與編碼音頻編碼格式介紹采樣率與比特率音頻工具afconvert與afinfoiOS應(yīng)用程序開發(fā)方法與實踐38.1.1容器與編碼文件又稱作容器,包含視頻數(shù)據(jù)、音頻數(shù)據(jù)與其他信息(腳本、版權(quán)信息、歌詞、字幕等等)。文件中的視頻數(shù)據(jù)與音頻數(shù)據(jù)可以采用不同的編碼(算法)保存。播放媒體文件時,需要對視頻數(shù)據(jù)與音頻數(shù)據(jù)進行對應(yīng)的解碼。iOS應(yīng)用程序開發(fā)方法與實踐48.1.2音頻編碼格式介紹常用的音頻編碼格式:AAC、HE-AAC、ALAC、IMA4、AMR、iLBC、LPCM、G.711、MP3等。未壓縮的LPCM原始音頻數(shù)據(jù)與壓縮的IMA4音頻數(shù)據(jù),可以同時硬解碼播放。對于MP3、AAC、ALAC音頻數(shù)據(jù),同一時間只可以對其中一個音頻數(shù)據(jù)進行硬解碼。iOS應(yīng)用程序開發(fā)方法與實踐58.1.3采樣率與比特率聲音是具有能量的波,它是連續(xù)的模擬信號。需要以數(shù)字形式保存和傳輸模擬信號中包含的數(shù)據(jù),則必須進行模數(shù)轉(zhuǎn)換。進行模數(shù)轉(zhuǎn)換需要進行采樣、量化與編碼三個步驟。采樣:在時間上將連續(xù)的模擬信號離散化。量化:用有限個幅度值近似原有的連續(xù)變化的幅度值,從而把模擬信號的連續(xù)幅度變?yōu)橛邢迶?shù)量的有一定間隔的離散值。編碼:按照一定的規(guī)約,將量化后的離散值用二進制數(shù)表示出來。iOS應(yīng)用程序開發(fā)方法與實踐68.1.3采樣率與比特率iOS應(yīng)用程序開發(fā)方法與實踐78.1.3采樣率與比特率采樣率:每秒鐘從連續(xù)信號中提取并組成離散信號的采樣個數(shù)。單位:赫茲(Hz)。對于CD音頻來說,其采樣率為44100Hz。采樣周期(采樣時間):采樣率的倒數(shù),它是每次采樣之間的時間間隔。比特率(位速率):單位時間內(nèi)所使用的二進制位數(shù)。單位:位每秒(bps)。比特率越高,越貼近真實數(shù)據(jù),文件越大;比特率越低,失真約大,文件越小。iOS應(yīng)用程序開發(fā)方法與實踐88.1.4音頻工具afconvert與afinfoCAF(CoreAudioFile)格式的音頻文件在iOS開發(fā)中比較常用。CAF文件能夠包含iPhone支持的所有編碼方式壓縮的數(shù)據(jù)。afconvert命令可以將常見的WAV、MP3、AAC、M4A等音頻文件轉(zhuǎn)換為CAF格式。afinfo命令可以查看音頻文件信息,如容器格式、音頻數(shù)據(jù)編碼格式、比特率、采樣率等等。iOS應(yīng)用程序開發(fā)方法與實踐98.2音頻iOSSDK提供了多種播放音頻的方式:SystemAudioServicesAVAudioPlayerMPMusicPlayerControllerOpenALiOS應(yīng)用程序開發(fā)方法與實踐108.2音頻使用SystemAudioServices:播放方式最簡單。能夠?qū)崿F(xiàn)震動效果。音頻數(shù)據(jù)必須來自于程序包內(nèi)的文件,或是來自于服務(wù)器的音頻流,不能播放其他位置的音頻。音頻長度不能超過30秒。音頻的容器格式只能是CAF、AIF或者WAV文件,編碼格式只能為LPCM或者IMA4。不能對音頻的播放進行控制,即只能播放,不能暫停、快進、回退等。
iOS應(yīng)用程序開發(fā)方法與實踐118.2音頻使用AudioPlayer(AVAudioPlayer):播放方式相對簡單??梢圆シ鸥L的音頻。允許對播放進行各種控制(暫停、快進回退、調(diào)整音量、指定播放位置、循環(huán)次數(shù)等等)。允許同時播放多個音頻。支持的格式豐富(MP3、AAC、ALAC、AIFF、WAV)。能夠處理中斷(例如播放音樂時有電話呼入)。音頻數(shù)據(jù)必須來自于程序包內(nèi)的文件,或是來自于服務(wù)器的音頻流,不能播放其他位置的音頻。iOS應(yīng)用程序開發(fā)方法與實踐128.2音頻使用MediaPlayer框架:播放系統(tǒng)音樂庫中的音樂。使用AudioRecorder:可以錄制音頻。使用OpenAL:可以真實表現(xiàn)3D場景音效,并控制立體聲的方位。請根據(jù)應(yīng)用程序的具體場景和需要進行選取。iOS應(yīng)用程序開發(fā)方法與實踐138.2.1使用SystemAudioServices播放聲音使用SystemAudioServices播放聲音的主要步驟:添加AudioToolbox框架,并在必要的代碼處引用其頭文件。根據(jù)音頻文件URL,生成系統(tǒng)聲音ID。根據(jù)ID播放聲音。釋放系統(tǒng)聲音ID。參見教材“案例:播放簡短音效與實現(xiàn)震動”。iOS應(yīng)用程序開發(fā)方法與實踐148.2.3使用AudioPlayer播放與控制聲音使用AVAudioPlayer播放聲音的主要步驟:添加AVFoundation框架,并在必要的代碼處引用其頭文件。初始化新的AVAudioPlayer對象,指定音頻文件的URL或者數(shù)據(jù)。設(shè)置委托,需要實現(xiàn)AVAudioPlayerDelegate協(xié)議。AVAudioPlayer對象會在播放完成時、解碼出錯時、以及中斷開始與結(jié)束時向委托對象發(fā)出通知。獲取音頻信息,并控制音頻播放。釋放AVAudioPlayer對象。參見教材“案例:播放較長的聲音”。iOS應(yīng)用程序開發(fā)方法與實踐158.2.5使用AudioRecorder錄制聲音使用AVAudioRecorder錄制音頻的主要步驟:添加AVFoundation框架與CoreAudio框架,并引用其頭文件。創(chuàng)建一個字典,定義錄音參數(shù),例如采樣率、通道數(shù)以及編碼格式等。初始化AVAudioRecorder對象,指定生成的文件URL以及錄音參數(shù)字典。設(shè)置委托,需要實現(xiàn)AVAudioRecorderDelegate協(xié)議。AVAudioRecorder對象會在錄制完成時、編碼出錯時、以及中斷開始與結(jié)束時向委托對象發(fā)出通知??刂其浺暨^程,如準備錄音、開始或恢復(fù)錄音、暫停、停止錄音等;或是查詢錄音信息,如是否正在錄制、錄制時間等。釋放AVAudioRecorder對象。參見教材“案例:實現(xiàn)帶錄音功能的音樂播放機”。iOS應(yīng)用程序開發(fā)方法與實踐168.2.7使用MusicPlayerController播放媒體庫音樂MediaPlayer框架允許應(yīng)用程序訪問媒體庫。iOS應(yīng)用程序開發(fā)方法與實踐178.2.7MediaPlayer框架中重要的類MPMediaLibrary:表示設(shè)備媒體庫,包含所有媒體項的狀態(tài)信息,可以從中獲取和查詢媒體項與播放列表。MPMediaEntity:表示設(shè)備媒體庫中的一個實體,保存了各種媒體信息,例如藝術(shù)家名稱、專輯名稱、歌曲名稱、音軌號等等。MPMediaItem與MPMediaItemCollection是該類的子類。MPMediaItem:表示媒體庫中的某個媒體項(例如音樂、視頻),它具有唯一標識。MPMediaItemCollection:表示若干媒體項的有序集合。iOS應(yīng)用程序開發(fā)方法與實踐188.2.7MediaPlayer框架中重要的類MPMediaPlaylist:表示媒體庫中的一個播放列表。MPMediaPlaylist類繼承自MPMediaItemCollection類。MPMediaQuery:用于從媒體庫中查詢媒體項。該對象包含了查詢結(jié)果分組方式,以及用于查詢的若干條件謂詞。滿足條件的媒體項會保存在MPMediaItemCollection對象中。MPMusicPlayerController:用于播放媒體項隊列,可以對播放進行控制。該類不是視圖控制器類。MPMediaPickerController:一個視圖控制器類,其視圖就是iOS中的音樂程序的歌曲標簽頁。該類繼承自UIViewController類。iOS應(yīng)用程序開發(fā)方法與實踐198.2.7使用MediaPlayer框架播放媒體庫音樂使用MediaPlayer框架訪問媒體庫的主要步驟:創(chuàng)建MPMediaPickerController視圖控制器,并設(shè)置選取類型。獲取MPMusicPlayerController對象,可以是系統(tǒng)全局媒體播放器或者應(yīng)用程序媒體播放器。創(chuàng)建一個實現(xiàn)MPMediaPickerControllerDelegate協(xié)議的委托類。委托類的方法會在用戶完成選擇時或者取消選擇時調(diào)用。設(shè)置MPMediaPickerController視圖控制器的委托對象。將MPMediaPickerController視圖控制器以模式方式顯示。釋放MPMediaPickerController視圖控制器。參見教材“案例:播放媒體庫音樂”。iOS應(yīng)用程序開發(fā)方法與實踐208.3視頻使用MoviePlayerController播放視頻使用MoviePlayer視圖控制器播放視頻使用相機進行拍照與攝像iOS應(yīng)用程序開發(fā)方法與實踐218.3.1使用MoviePlayerController播放視頻MPMoviePlayerController對象能夠播放存放在本地與網(wǎng)絡(luò)上的視頻與音頻文件。包含一個用于在其中播放視頻的視圖,視頻視圖中提供了播放控制欄,能夠?qū)σ曨l進行暫停、快進、回退、停止、全屏播放等操作。雖然MPMoviePlayerController類的名字中含有Controller,但它不是視圖控制器,而只是一個用于控制媒體播放的類。iOS應(yīng)用程序開發(fā)方法與實踐228.3.1使用MoviePlayerController播放視頻使用MPMoviePlayerController類播放視頻的主要步驟:添加MediaPlayer框架,并在必要的代碼處引用其頭文件。初始化MPMoviePlayerController對象,指定視頻文件的URL。在通知中心中注冊通知,用于響應(yīng)特定的事件,如媒體播放完畢、進入全屏播放模式、播放的媒體發(fā)生更改時等。設(shè)置視圖的尺寸,并將其視頻視圖添加到視圖樹中。獲取視頻的信息,并對視頻進行播放與控制。釋放MPMoviePlayerController對象。參見教材“案例:實現(xiàn)視頻的播放”。iOS應(yīng)用程序開發(fā)方法與實踐238.3.3使用MoviePlayer視圖控制器播放視頻MPMoviePlayerViewController是一個視圖控制器類,內(nèi)部管理著一個MPMoviePlayerController類的對象,并簡單地以全屏方式播放視頻內(nèi)容。使用MPMoviePlayerViewController播放視頻的主要步驟:添加MediaPlayer框架并引用頭文件。初始化MPMoviePlayerViewController類的對象,并指定視頻文件的URL。將其添加到其他容器視圖控制器中,或者以模式方式顯示。釋放MPMoviePlayerViewController對象。參見教材“案例:使用MPMoviePlayerViewController播放視頻”。iOS應(yīng)用程序開發(fā)方法與實踐248.3.5使用相機進行拍照與攝像圖像選取控制器UIImagePickerController類可以使用iOS設(shè)備的相機進行拍照或攝像,或是獲取圖像庫中的圖片。UIImagePickerController類繼承自UINavigationController類,因此它是一個導(dǎo)航欄控制器。iOS應(yīng)用程序開發(fā)方法與實踐258.3.5使用相機進行拍照與攝像使用圖像選取控制器進行拍照、攝像與瀏覽媒體的主要步驟:檢查媒體來源模式是否可用。+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年山東泰安新泰市衛(wèi)健系統(tǒng)事業(yè)單位招聘150人高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川省廣安市廣安區(qū)“小平故里英才”引進急需緊缺專業(yè)人才29人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上海市奉賢區(qū)青年人才招募1444人(含國企崗位)高頻重點提升(共500題)附帶答案詳解
- 2025上半年重慶銅梁區(qū)事業(yè)單位招聘107人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年浙江省臺州市溫嶺市事業(yè)單位選聘18人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川遂寧蓬溪縣事業(yè)單位考試招聘工作人員69人高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川省自貢高新區(qū)衛(wèi)生事業(yè)單位考試聘用工作人員5人高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川內(nèi)江隆昌市事業(yè)單位考聘95人高頻重點提升(共500題)附帶答案詳解
- 2025上半年樂山市金口河區(qū)事業(yè)單位招聘23人歷年高頻重點提升(共500題)附帶答案詳解
- 美術(shù)館土方挖掘合同
- 施工組織學(xué)課程設(shè)計
- XX公司洗錢和恐怖融資風(fēng)險自評價管理辦法
- (1-6年級)小學(xué)數(shù)學(xué)常用單位換算公式
- 數(shù)獨比賽“六宮”練習(xí)題(96道)練習(xí)
- 錨索張拉和鎖定記錄表
- 基于PID控制方式的10A開關(guān)電源MATLAB仿真研究
- 足球興趣小組活動記錄617
- 昆明市不動產(chǎn)登記中心最新抵押表全三套(共4頁)
- 中小學(xué)生備戰(zhàn)期末迎接期末考試動員班會PPT
- 國自然模板(空白版)
- 各邊坡規(guī)范監(jiān)測技術(shù)要求
評論
0/150
提交評論