IOS开发之音效/音频播放

Posted Biaoac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS开发之音效/音频播放相关的知识,希望对你有一定的参考价值。

 

音频播放:

     1.音效播放

     2.音乐播放

 

(1)音频播放 :

        《1》系统声音 短小的声音 使用的框架 AudioToolBox

        《2》1、AudioservicesPlaySystemSound 播放系统声音

            2、AudioServicesPlayAlertSound播放系统声音有震动

        《3》使用:

            1.声明声音的ID  通过声音的id来区分是哪一个音效  无符号整形

            2.创建声音的服务 (告诉系统有一个可以使用的soundID) 需要声音文件路径和声音的ID

            3.播放声音   声音ID

  代码如下:

-(void)playSound{
    
    //    根据这个数字来区分是哪一个系统声音的
    SystemSoundID soundID = 1;
    //    创建一个系统声音的服务
    AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)([[NSBundle mainBundle]URLForResource:@"胜利.aiff" withExtension:nil]), &soundID);
    //    播放系统声音
    AudioServicesPlaySystemSound(soundID);
    AudioServicesPlayAlertSound(soundID);
    
 
}

    注意:这里只是播放短的音效,比如提示音,较长的音乐不能播放,使用的是纯C语言写的,    

 

 

 

(2)音频播放 :音乐 音频  指的是那些音乐类似的长文件

        《1》介绍

            1.   使用框架  AVFoundation框架  AVaudioplayer

            2.注意:

                     (1)必须声明属性、全局变量的音乐对象才可以播放

                     (2)在退出播放页面的时候 一定要把播放对象制空 同时把delegate制空

            3.属性

 

        《2》使用

            1.资源文件路径

            2.初始化播放器

            3.设置播放器

            4.预播放

            5.播放

 

-(void)playMusicWithName:(NSString *)name{
    NSError *error;
//    创建一个音乐播放对象
    avplayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSBundle mainBundle]URLForResource:name withExtension:nil]  error:&error];
//   如果有错误  打印出来
    if (error) {
        NSLog(@"%@",error);
    }
    
//    预播放
    [avplayer prepareToPlay];
    NSLog(@"%lu",(unsigned long)avplayer.numberOfChannels);
    
//    如果想设置播放速率  必须得先开启允许设置
avplayer.enableRate = YES;
//    速率rate
//    player.rate = 10;
    
//    峰值  获得峰值  必须设置enableMeters=YES;
//    更新峰值
//    [avplayer updateMeters];
    NSLog(@"%f",[avplayer peakPowerForChannel:2]);//当前峰值
    NSLog(@"%f",[avplayer averagePowerForChannel:2]);//获得平均峰值

//    声道 (-1.0 左声道  0.0中间  1.0右声道)
//    player.pan = -1.0;

//    循环次数 0播放一次  负数循环播放 正数设置数字+1
avplayer.numberOfLoops = 0;

//avplayer.delegate = self;

//    设置音乐播放器 当前播放的时间
//    player.currentTime = 50;

//    duration 总时长  只读
NSLog(@"乐音的总时长%f",avplayer.duration);

NSLog(@"通道的数量%ld",avplayer.numberOfChannels);
    
NSLog(@"设备当前时间%f",avplayer.deviceCurrentTime);

//    设置播放次数
    avplayer.numberOfLoops = -1;

    
    
//     播放
//    [avplayer play];
}


     这里也需要提示一下几个代理方法在音乐播放的时候可以调用:

//播放完成的时候调用

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{}

//解码错误的时候调用

- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error{}

//被打扰开始中断的时候调用

- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{}

//中断结束的时候调用

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{}

 

          好了,感觉自己理解的可以试着去做一个音乐播放器了 ,尝试一下

 

以上是关于IOS开发之音效/音频播放的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发 - 多媒体

Android开发之SoundPool使用详解

iOS学习笔记23-音效与音乐

使其他音频安静的音效 iOS AVAudio

iOS 播放系统音效

iOS 播放系统音效