亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

講解iOS開發中對音效和音樂播放的簡單實現

2020-07-26 03:32:20
字體:
來源:轉載
供稿:網友

音效的播放

一、簡單介紹

簡單來說,音頻可以分為2種

(1)音效

又稱“短音頻”,通常在程序中的播放時長為1~2秒

在應用程序中起到點綴效果,提升整體用戶體驗

(2)音樂

  比如游戲中的“背景音樂”,一般播放時間較長

框架:播放音頻需要用到AVFoundation.framework框架

二、音效的播放

1.獲得音效文件的路徑

復制代碼 代碼如下:

  NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil];

2.加載音效文件,得到對應的音效ID

復制代碼 代碼如下:

  SystemSoundID soundID = 0;

  AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);

3.播放音效

復制代碼 代碼如下:

  AudioServicesPlaySystemSound(soundID);

 

注意:音效文件只需要加載1次

4.音效播放常見函數總結

加載音效文件

復制代碼 代碼如下:

  AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)

釋放音效資源
復制代碼 代碼如下:

  AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)

播放音效
復制代碼 代碼如下:

  AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)

播放音效帶點震動
復制代碼 代碼如下:

  AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

 

三、程序示例

先導入需要依賴的框架

2015111190914661.png (363×152)

導入需要播放的音效文件素材

2015111190944885.png (238×366)

說明:AVFoundation.framework框架中的東西轉換為CF需要使用橋接。

代碼示例:

復制代碼 代碼如下:

YYViewController.m文件
//
//  YYViewController.m
//  14-音效播放
//
//  Created by apple on 14-8-8.
//  Copyright (c) 2014年 yangyong. All rights reserved.
//

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()

@end


復制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //1.獲得音效文件的全路徑
   
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"buyao.wav" withExtension:nil];
   
    //2.加載音效文件,創建音效ID(SoundID,一個ID對應一個音效文件)
    SystemSoundID soundID=0;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &soundID);
   
    //把需要銷毀的音效文件的ID傳遞給它既可銷毀
    //AudioServicesDisposeSystemSoundID(soundID);
   
    //3.播放音效文件
    //下面的兩個函數都可以用來播放音效文件,第一個函數伴隨有震動效果
    AudioServicesPlayAlertSound(soundID);
    //AudioServicesPlaySystemSound(<#SystemSoundID inSystemSoundID#>)
}

@end


說明:點擊屏幕可以播放音效文件。

音樂的播放

一、簡單說明

  音樂播放用到一個叫做AVAudioPlayer的類,這個類可以用于播放手機本地的音樂文件。

注意:

 ?。?)該類(AVAudioPlayer)只能用于播放本地音頻。

 ?。?)時間比較短的(稱之為音效)使用AudioServicesCreateSystemSoundID來創建,而本地時間較長(稱之為音樂)使用AVAudioPlayer類。

二、代碼示例

  AVAudioPlayer類依賴于AVFoundation框架,因此使用該類必須先導入AVFoundation框架,并包含其頭文件(包含主頭文件即可)。

2015111191006800.png (605×143)

2015111191024806.png (707×191)

導入必要的,需要播放的音頻文件到項目中。

代碼示例:

復制代碼 代碼如下:

//
//  YYViewController.m
//  15-播放音樂
//

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()

@end


復制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   
    //1.音頻文件的url路徑
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
   
    //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url)
    AVAudioPlayer *audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
   
    //3.緩沖
    [audioPlayer prepareToPlay];
   
    //4.播放
    [audioPlayer play];
}

@end


代碼說明:運行程序,點擊模擬器界面,卻并沒有能夠播放音頻文件,原因是代碼中創建的AVAudioPlayer播放器是一個局部變量,應該調整為全局屬性。

可將代碼調整如下,即可播放音頻:

復制代碼 代碼如下:

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *audioplayer;
@end


復制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   
    //1.音頻文件的url路徑
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
   
    //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url)
    self.audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
   
    //3.緩沖
    [self.audioplayer prepareToPlay];
   
    //4.播放
    [self.audioplayer play];
}

@end


注意:一個AVAudioPlayer只能播放一個url,如果想要播放多個文件,那么就得創建多個播放器。

三、相關說明

新建一個項目,在storyboard中放三個按鈕,分別用來控制音樂的播放、暫停和停止。

2015111191047433.png (311×491)

程序代碼如下:

復制代碼 代碼如下:

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    //1.音頻文件的url路徑
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
   
    //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url)
    self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
   
    //3.緩沖
    [self.player prepareToPlay];

}

- (IBAction)play {
    //開始播放/繼續播放
    [self.player play];
}

- (IBAction)pause {
    //暫停
    [self.player pause];
}

- (IBAction)stop {
    //停止
    //注意:如果點擊了stop,那么一定要讓播放器重新創建,否則會出現一些莫名其面的問題
    [self.player stop];
}
@end


注意:如果點了“停止”,那么一定要播放器重新創建,不然的話會出現莫名其妙的問題。

  點擊了stop之后,播放器實際上就不能再繼續使用了,如果還繼續使用,那么后續的一些東西會無法控制。

推薦代碼:

復制代碼 代碼如下:

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end


復制代碼 代碼如下:

@implementation YYViewController

#pragma mark-懶加載
-(AVAudioPlayer *)player
{
    if (_player==Nil) {
       
        //1.音頻文件的url路徑
        NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
       
        //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url)
        self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
       
        //3.緩沖
        [self.player prepareToPlay];
    }
    return _player;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)play {
    //開始播放/繼續播放
    [self.player play];
}

- (IBAction)pause {
    //暫停
    [self.player pause];
}

- (IBAction)stop {
    //停止
    //注意:如果點擊了stop,那么一定要讓播放器重新創建,否則會出現一些莫名其面的問題
    [self.player stop];
    self.player=Nil;
}
@end


四、播放多個文件
2015111191115987.png (656×72)
點擊,url,按住common建查看。

2015111191137068.png (491×67)

可以發現,這個url是只讀的,因此只能通過initWithContentsOfUrl的方式進行設置,也就意味著一個播放器對象只能播放一個音頻文件。

那么如何實現播放多個音頻文件呢?

可以考慮封裝一個播放音樂的工具類,下一篇文章將會介紹具體怎么實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品首页| 久久人人爽亚洲精品天堂| 欧美成人中文字幕| 亚洲一区精品电影| 亚洲欧美在线磁力| 日韩欧美在线国产| 2019最新中文字幕| 精品国产视频在线| 欧美日韩国产精品一区二区不卡中文| 色视频www在线播放国产成人| 国产精品丝袜视频| 久久精品亚洲国产| 欧美日韩在线视频一区| 色爱av美腿丝袜综合粉嫩av| 国产成人综合av| 欧美激情中文字幕在线| 国产精品嫩草影院久久久| 国产精品视频导航| 国产精品视频永久免费播放| 久久天天躁狠狠躁夜夜躁| 国产精品久久久久影院日本| 国内精品久久久久影院 日本资源| 亚洲欧美制服另类日韩| 伊人亚洲福利一区二区三区| 在线亚洲男人天堂| 97色在线观看免费视频| 91亚洲一区精品| 欧美最猛性xxxx| 欧美日韩美女在线| 91精品久久久久久久久中文字幕| 亚洲天堂开心观看| 日韩精品电影网| 国产中文日韩欧美| 亚洲人成网7777777国产| 欧美国产极速在线| 欧美激情久久久久久| 日韩电影中文字幕在线| 综合网日日天干夜夜久久| 欧美国产高跟鞋裸体秀xxxhd| 久久久精品在线观看| 日韩欧美中文字幕在线播放| 一区二区欧美日韩视频| 欧美福利视频在线| 日韩一区二区三区在线播放| 欧美高清videos高潮hd| 欧美激情精品久久久| 久久亚洲综合国产精品99麻豆精品福利| 一个人www欧美| 欧美日韩精品在线| 91九色视频导航| 亚洲男人天堂九九视频| 久久国产精品影视| 欧美视频一区二区三区…| 日本一区二区三区在线播放| 亚洲电影免费观看高清完整版在线观看| 91色视频在线观看| 亚洲欧美激情视频| 亚洲自拍偷拍色片视频| 亚洲视频专区在线| 91精品视频专区| 日韩av中文字幕在线免费观看| 成人欧美一区二区三区黑人孕妇| 日韩av片免费在线观看| 日韩网站免费观看| 性欧美亚洲xxxx乳在线观看| 亚洲午夜av电影| 亚洲免费av电影| 国产精品久久久久久久久久三级| 国产精品视频色| 欧美性猛交xxxx富婆弯腰| 国产91九色视频| 大伊人狠狠躁夜夜躁av一区| 亚洲人成电影网站色www| 成人在线视频网站| 欧美成人午夜影院| 日韩av在线一区| 久热精品视频在线免费观看| 色99之美女主播在线视频| 欧美日韩福利在线观看| 精品中文字幕在线观看| 精品久久久久久久久久久久| 亚洲国产一区二区三区在线观看| 色狠狠av一区二区三区香蕉蜜桃| 日本三级久久久| 538国产精品一区二区在线| www.久久撸.com| 国产91精品视频在线观看| 81精品国产乱码久久久久久| 亚洲国产成人精品久久久国产成人一区| 黑人巨大精品欧美一区免费视频| 日韩欧美国产成人| 欧美激情一区二区三级高清视频| 亚洲男人天堂九九视频| 国产成人精品久久| 精品动漫一区二区三区| 国模极品一区二区三区| 国外成人在线直播| 亚洲mm色国产网站| 一区二区三区四区视频| 97不卡在线视频| 成人羞羞国产免费| 韩国视频理论视频久久| 欧美一级视频在线观看| 日韩大片免费观看视频播放| 精品美女久久久久久免费| 在线播放国产一区二区三区| 久久久久久久久久久网站| 亚洲欧美另类自拍| 久久久天堂国产精品女人| 久热精品视频在线| 日韩精品在线第一页| 国产成人小视频在线观看| 亚洲一区二区自拍| 成人黄在线观看| 日韩女优在线播放| 在线播放日韩欧美| 亚洲韩国欧洲国产日产av| 国产脚交av在线一区二区| 欧美日韩xxx| 国产视频精品一区二区三区| 欧美激情喷水视频| 日韩最新中文字幕电影免费看| 久久婷婷国产麻豆91天堂| 久久综合免费视频| 亚洲视频一区二区| 91香蕉嫩草影院入口| 日本免费一区二区三区视频观看| 日韩av网站导航| 国产精品视频yy9099| 国产精品av免费在线观看| 亚洲一区二区三| 伊人久久男人天堂| 欧美激情在线视频二区| 久久全国免费视频| 久久久久久久一区二区| 亚洲片av在线| 亚洲国产欧美一区二区三区同亚洲| 久久视频在线免费观看| 久久视频在线直播| 欧美激情国产高清| 国产精品美女主播在线观看纯欲| 国产成人午夜视频网址| 91网站在线免费观看| 欧美黑人狂野猛交老妇| xx视频.9999.com| 日韩精品视频免费专区在线播放| 国产精品青草久久久久福利99| 日韩欧美精品免费在线| 不卡av电影在线观看| 日本韩国欧美精品大片卡二| 亚洲欧美日韩国产中文专区| 中文字幕在线观看日韩| 亚洲小视频在线| 欧美裸体男粗大视频在线观看| 欧美麻豆久久久久久中文| 精品中文字幕在线观看| 欧美在线视频在线播放完整版免费观看| 成人精品久久av网站| 国产精品美女主播在线观看纯欲| 久久躁狠狠躁夜夜爽| 韩国国内大量揄拍精品视频| 日本精品久久中文字幕佐佐木| 欧美视频一区二区三区…| 久久久亚洲欧洲日产国码aⅴ|