iOS 音频播放

一、知识点

iOS中音频播放从形式上可以分为音频播放音乐播放

 AAC ALAC IMA4 liner MP3 caf

 

 音效播放:是播放一些短音频,常作为点缀音频使用AudioToolbox.frameWork.

 

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

 

 音效

    AudioToolbox.framework

    限制:

    音频控制时间不能超过30s

    数据必须是PCM或者IMA4格式

    音频文件必须打包成.caf .aif .wav中的一种

 

 使用System Sound Service 播放音效的步奏:

 调用AudioToolboxPLAY 通过系统声音ID 播放音效

    1.注册

    2.播放

 音效播放(系统声音服务是不允许去控制音频


二、 相关代码

注意:

(1)如果想使用音乐播放功能, 就必须导入

#import <AVFoundation/AVFoundation.h>

//
//  ViewController.m
//  UI-NO-19音频播放
//
//  Created by 蜂蜜哦 on 15/8/19.
//  Copyright (c) 2015年 guanyi. All rights reserved.
//

#import "ViewController.h"
#import <AudioToolbox/AudioToolbox.h>
// 如果想使用 音乐播放功能 就必须导入AVFoundation
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVAudioPlayerDelegate>
{
    AVAudioPlayer *player;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *path = [[NSBundle mainBundle]pathForResource:@"胜利" ofType:@"aiff"];
    
//    1.注册系统声音的ID

    SystemSoundID ID = 1;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:path]), &ID);
//    2.播放
    AudioServicesPlaySystemSound(ID);
    /*
    播放声音文件
    使用AVFoundation(audio video) 处理 音频视频的操作
    1.音频播放
        如果想使用 音乐播放功能 就必须导入AVFoundation
        使用AVAudioPlayer 播放音频
        设置音频音量(volume) 音频播放速率(rate) 音频播放位置 得到总时长 检测音频是否播放完毕 音乐播放的循环次数 ...
    */

    [self creatPlayerWithAudioName:nil];
}

- (void)creatPlayerWithAudioName:(NSString *)name
{
   
    NSString *path = [[NSBundle mainBundle]pathForResource:@"张学友 - 每次都想呼喊你的名字" ofType:@"mp3"];
    
    if (player) {
        player = nil;
    }
    
    NSError *error;
//    初始化音乐播放器
    player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
//    预播放(把音乐文件的数据 加载到内存)
    [player prepareToPlay];
//    音量
    player.volume = 2;
//    速率
//    如果想设置播放速率 必须得先开启允许位置
    
    player.enableRate = YES;
    player.rate = 1;
//    声道(-1.0 左声道 0.0 中间 1.0 右声道 )
//    player.pan = -1.0;
    
//    循环次数 0:播放一次 负数:循环播放 正数:设置次数+1
    player.numberOfLoops = 0;
    player.delegate = self;
    
//    设置音乐播放器 当前播放的时间
    player.currentTime = 100;
    NSLog(@"音乐的总时长%f", player.duration);
    NSLog(@"通道的数量%ld", player.numberOfChannels);

//    player.isPlaying
//    暂停
    [player pause];
//    停止
    [player stop];
    
//    播放
    [player play];
    NSLog(@"设备当前时间%lf", player.deviceCurrentTime);
}

#pragma mark - 音频播放结束 代理方法
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    NSLog(@"播放结束");
}
@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值