AVAudioPlayer音訊播放器--及--AudioServicesPlaySystemSound音訊服務
AVAudioPlayer音訊播放器
IOS中有三種播放音訊的方式:AVAudioPlayer、音訊服務、音訊佇列。
此文主要講AVAudioPlayer,其他兩個請見相關文章。
AVAudioPlayer在AVFoundation框架下,所以我們要匯入AVFoundation.framework。
AVAudioPlayer類封裝了播放單個聲音的能力。播放器可以用NSURL或者NSData來初始化,要注意的是NSURL並不可以是網路url而必須是本地檔案URL,因為 AVAudioPlayer不具備播放網路音訊的能力,不過我們可以用過一點小手段使其具備這個能力,留待稍後講解。
一個AVAudioPlayer只能播放一個音訊,如果你想混音你可以建立多個AVAudioPlayer例項,每個相當於混音板上的一個軌道。
一、建立一個播放器
- #import <AVFoundation/AVFoundation.h>
- NSError* err;
- AVAudioPlayer* player = [[AVAudioPlayer alloc]
- initWithContentsOfURL:[NSURL fileURLWithPath:
-
[[NSBundle mainBundle]pathForResource:
- @"music" ofType:@"m4a"
- inDirectory:@"/"]]
- error:&err ];//使用本地URL建立
- AVAudioPlayer* player = [[AVAudioPlayer alloc]
- initWithData:myData
-
error:&err ];//使用NSData建立
我之前講過AVAudioPlayer不可以播放網路URL,但是可以播放NSData,我們似乎受到了點啟發,我們可以通過網路URL去建立NSData,然後在通過AVAudioPlayer來播放NSData,這樣是不是就可以播放網路音樂了呢?但是此法並不可取,因為AVAudioPlayer只能播放一個完整的檔案,並不支援流式播放,所以必須是緩衝完才能播放,所以如果網路檔案過大抑或是網速不夠豈不是要等很久?所以播放網路音訊我們一般用音訊佇列。
二、播放器屬性
建立一個AVAudioPlayer以後你就可以對它的各種屬性進行訪問或設定了 。
1.音量
- player.volume=0.8;//0.0~1.0之間
- player.numberOfLoops = 3;//預設只播放一次
- player.currentTime = 15.0;//可以指定從任意位置開始播放
- NSUInteger channels = player.numberOfChannels;//只讀屬性
- NSTimeInterval duration = player.dueration;//獲取取樣的持續時間
6.儀表計數
- player.meteringEnabled = YES;//開啟儀表計數功能
- [ player updateMeters];//更新儀表讀數
- //讀取每個聲道的平均電平和峰值電平,代表每個聲道的分貝數,範圍在-100~0之間。
- for(int i = 0; i<player.numberOfChannels;i++){
- float power = [player averagePowerForChannel:i];
- float peak = [player peakPowerForChannel:i];
- }
三、播放聲音
準備了這麼久,終於可以播放了,心情激動啊。
- [ player prepareToPlay];//分配播放所需的資源,並將其加入內部播放佇列
- [player play];//播放
- [player stop];//停止
是否覺得準備了這麼久,一下子就結束掉了,太快了,不用急,還有幾個重點。
四、代理方法
加入播放出現異常,或者被更高級別的系統任務打斷,我們的程式還沒來得及收場就掛了,怎麼辦?不急,我們可以通過幾個委託方法很好地處理所有的情形。
首先給player設定委託是必須的:
- player.delegate = self;
- - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
-
相關推薦
AVAudioPlayer音訊播放器--及--AudioServicesPlaySystemSound音訊服務
AVAudioPlayer音訊播放器 IOS中有三種播放音訊的方式:AVAudioPlayer、音訊服務、音訊佇列。 此文主要講AVAudioPlayer,其他兩個請見相關文章。 AVAudioPlayer在AVFoundati
OCiOS開發:音訊播放器 AVAudioPlayer
簡介 AVAudioPlayer音訊播放器可以提供簡單的音訊播放功能,其標頭檔案包含在AVFoudation.framework中。 AVAudioPlayer未提供視覺化介面,需要通過其提供的播放控制介面自行實現。 AVAudioPlayer僅能播放本地音
AVAudioPlayer音訊播放器—IOS開發
IOS中有三種播放音訊的方式:AVAudioPlayer、音訊服務、音訊佇列。 此文主要講AVAudioPlayer,其他兩個請見相關文章。 AVAudioPlayer在AVFoundation框架下,所以我們要匯入AVFoundation.frame
Wavesurfer.js音訊播放器外掛的使用教程
Wavesurfer.js是一款基於HTML5 canvas和Web Audio的音訊播放器外掛,本文主要記錄它及其視覺效果外掛Regions外掛的使用方法。 1、建立例項 引入外掛 import WaveSurfer from "wavesurfer.js"; 建立例項物件 t
ffmpeg簡易播放器的實現-音訊播放
基於FFmpeg和SDL實現的簡易視訊播放器,主要分為讀取視訊檔案解碼和呼叫SDL顯示兩大部分。詳細流程可參考程式碼註釋。 本篇實驗筆記主要參考如下兩篇文章: [1]. 最簡單的基於FFMPEG+SDL的視訊播放器ver2(採用SDL2.0) [2]. An ffmpeg and SDL Tutorial
頁面中H5的使用標籤如音訊播放器和視訊播放器
1.音訊播放器使用的標籤為: <audio src="音訊的地址" controls="controls" preload="auto" autoplay="autoplay" loop="loop"> 屬性中src 為音訊的地址路徑,loop 是迴圈播放,如
最簡單的基於FFMPEG+SDL的音訊播放器 ver2 (採用SDL2 0)
=====================================================最簡單的基於FFmpeg的音訊播放器系列文章列表:=====================================================簡介之前做過一個
[6] ffmpeg + SDL2 實現的視訊播放器「視音訊同步」
日期:2016.10.8 作者:isshe github:github.com/isshe 郵箱:[email protected] 平臺:ubuntu16.04 64bit
python-pcm音訊播放器
50行pcm音訊播放器 基於python、pysdl2的音訊播放器: 開發環境是ubuntu mate 16.04 程式碼相容python2、python3 請安裝pysdl2支援包 sudo apt install python-sdl2 程式碼總共不到
[4] ffmpeg + SDL2 實現的有雜音的音訊播放器
日期:2016.10.4 作者:isshe github:github.com/isshe 郵箱:[email protected] 平臺:ubuntu16.04 64bit 前言 ffmpeg將資料解碼成pcm。 SDL
微信小程式 帶可拖動進度條和時間顯示的音訊播放器
眾所周知,微信官方自帶的音訊播放器是沒有進度條的,為了實現有進度條,並且拖動,只能自己寫一個了; 下面是演示圖 ①頁面載入完成後,能夠直接顯示音訊的時長 ②播放時,進度條變化,播放時間變化,拖動進度條可以跳轉到改進度播放 話不多說,直接上程式碼 首先是微信官
黃聰:原生js的音訊播放器,相容pc端和移動端(原創)
更新時間:2018/9/3 下午1:32:54 更新說明:新增音樂的loop設定和ended事件監聽 loop為ture的時候不執行ended事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 const wx
最簡單的基於FFMPEG+SDL的音訊播放器:拆分-解碼器和播放器
=====================================================最簡單的基於FFmpeg的音訊播放器系列文章列表:=====================================================本文補充記錄《
HTML5用audio標籤做一個最簡單的音訊播放器
在做系統的時候,要求做一個音訊播放器,就在網上查找了一些資料,發現這樣的資料還是很千篇一律的,EasyUI框架並沒有給我們一個音訊播放器的功能,在bootstrap上有,但是也是結合html5來寫的,因此,我們在這裡就用純的html5血一個音訊播放器,如何播放本地的音訊。
IOS 音訊播放器
例項:1.新建Empty Application專案,新增HomeViewController頁面 HomeViewController.h程式碼如下: #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @
iOS 視訊音訊播放器 檔案管理的實現
本人根據自己所學做了一款免費的播放器悅覽播放器,包含以下功能: - 視訊播放 - 音訊播放 - 檔案管理 - WiFi傳輸 - 格式轉換 - 面對面檔案傳輸 - 後臺音訊播放和控制 - 二維碼掃描和生成
基於FFmpeg和OpenSL ES的Android音訊播放器實現
前言 在以前的博文中,我們通過FFmpeg解碼,並基於OpenGL ES完成了視訊的渲染。本文我們將基於OpenSL ES完成native音訊的注入播放。 OpenSL ES也是The Khronos Group Inc組織制定的一個音訊規範,網上資料很多,
android 視訊+音訊播放器Demo
程式主介面 MainActivity.java 1.主介面,頭部是兩個TextView(自定義類似指標效果),底部是ViewPager。ViewPager中每個頁面對應的是一個Fragment.這樣就搭起了首頁。 xml檔案程式碼: <?xml ve
iOS音訊播放 (六):簡單的音訊播放器實現
在前幾篇中我分別講到了AudioSession、AudioFileStream、AudioFile、AudioQueue,這些類的功能已經涵蓋了第一篇中所提到的音訊播放所需要的步驟: 讀取MP3檔案 NSFileHandle解析取樣率、位元速率、時長等資訊,分離MP3中的音訊幀 AudioFileStr
HTML5做的音訊播放器,可以動態的更換音訊檔案的內容
在做一個播放按鈕時突然用到了這個技術,具體還是蠻簡單的,一看就會,就是那個音訊檔案的src屬性動態賦值的時候花了點時間。看程式碼吧! function playOrPaused(obj) {