你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 講授iOS開辟中對音效和音樂播放的簡略完成

講授iOS開辟中對音效和音樂播放的簡略完成

編輯:IOS開發綜合

音效的播放

1、簡略引見

簡略來講,音頻可以分為2種

(1)音效

又稱“短音頻”,平日在法式中的播放時長為1~2秒

在運用法式中起到裝點後果,晉升全體用戶體驗

(2)音樂

  好比游戲中的“配景音樂”,普通播放時光較長

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

2、音效的播放

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)

 

3、法式示例

先導入須要依附的框架

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452611.png (363×152)

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

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452624.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

解釋:點擊屏幕可以播放音效文件。

音樂的播放

1、簡略解釋

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

留意:

  (1)該類(AVAudioPlayer)只能用於播放當地音頻。

  (2)時光比擬短的(稱之為音效)應用AudioServicesCreateSystemSoundID來創立,而當地時光較長(稱之為音樂)應用AVAudioPlayer類。

2、代碼示例

  AVAudioPlayer類依附於AVFoundation框架,是以應用該類必需先導入AVFoundation框架,並包括其頭文件(包括主頭文件便可)。

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452610.png (605×143)

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452702.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,假如想要播放多個文件,那末就得創立多個播放器。

3、相干解釋

新建一個項目,在storyboard中放三個按鈕,分離用來掌握音樂的播放、暫停和停滯。

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452757.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

4、播放多個文件
https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452719.png (656×72)
點擊,url,按住common建檢查。

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615452712.png (491×67)

可以發明,這個url是只讀的,是以只能經由過程initWithContentsOfUrl的方法停止設置,也就意味著一個播放器對象只能播放一個音頻文件。

那末若何完成播放多個音頻文件呢?

可以斟酌封裝一個播放音樂的對象類,下一篇文章將會引見詳細怎樣完成。

【講授iOS開辟中對音效和音樂播放的簡略完成】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved