音频播放

iOS中音频播放的一般格式:
ACC ALAC IMA4 MP3 caf linear

音效播放:是播放一些短音频 长做点缀音频使用
AudioToolbox.framework

音乐播放:是播放一些较长的音频,对于这些音频的播放 通常需要进行精确的控制 使用
AVFoundation.framework

音效

AudioToolbox.framework是一套基于C语言的框架 使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service)System Sound Service是一种简单的。底层的声音播放服务,但他本身也存在一些限制

音效播放时间不能超过30S
数据必须是PCM或则IMA4格式
音频文件必须打包成.caf .aif .wav中得一种(官方说法。实测中MP3也可以放)

使用System Sound Service播放音效的步骤如下:
1注册ID
调用AUdioService是CreateSystemSoundID( CFURLRefinFileURL)函数获得系统声音
2:播放
播放
// AudioServicesPlaySystemSound(ID);
振动
AudioServicesPlayAlertSound(ID);

音效播放 (系统声音服务) 是不允许咱们取控制音频的

//要想播放音乐、音效,就必须导入系统文件
//音效播放的AudioToolbox

#import <AudioToolbox/AudioToolbox.h>

//音频播放的AVFoundation

#import <AVFoundation/AVFoundation.h>

AudioToolbox 通过系统声音ID 播放音效
步骤:1注册 2播放
//
// NSString *path =[[NSBundle mainBundle]pathForResource:@”背景音乐” ofType:@”caf”];
//
//
// SystemSoundID ID =1;
//
注册系统声音的ID
// AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:path]), &ID);
//
播放
// AudioServicesPlaySystemSound(ID);
振动
AudioServicesPlayAlertSound(ID);
//
//
//

// 播放是声音文件
// 使用AVFoundation(audio video)处理 音频视频的播放

// 1. 音频播放
// 如果想使用 音乐播放功能 就必须导入AVFoundation
// 使用AVAUdioPlayer 播放音频
// 设置音频的音量(volume) 播放速率(rate) 音频播放的位置、得到总时长、监测音频是否播放完毕、音频播放的循环次数……操作

调用方法

 [self createPlayerWithAudioName:@""];;
-(void)createPlayerWithAudioName:(NSString *)name
{

        NSString *path =[[NSBundle mainBundle]pathForResource:name ofType:nil];



    if (player) {
        player =nil;
    }
    NSError *error;
//    初始化音频播放器
    player =[[AVAudioPlayer alloc ]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];

//    挂上代理
    player.delegate =self;

//速率
//    如果想设置播放速率 必须得先开启允许设置
    player.enableRate =YES;
//    播放速率
    player.rate =1;

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


//    循环的次数(0播放一次  负数是循环播放  正数设置次数为  数字+1)
    player.numberOfLoops =1;




//    预播放(把音乐文件的数据 加载到内存)
    [player prepareToPlay];
//    播放
    [player play];

//    设置音乐播放器当前播放的时间(可以用来设置前进到哪播放)
    player.currentTime = 100;

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

//
    NSLog(@"通道的数量%lu",(unsigned long)player.numberOfChannels);

//
//    player.isPlaying

//    暂停
    [player pause];

//    停止
    [player stop];

//    
    NSLog(@"设备当前的时间%f",player.deviceCurrentTime);

}
#pragma mark------音乐播放的代理AVAudioPlayerDelegate方法

//音乐播放完成的时候调用(可以让他播放完播放下一首)
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{

    NSLog(@"……");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ldl_csdn_ios

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值