iOS 音频播放

来源:互联网 发布:数据图的类型 编辑:程序博客网 时间:2024/06/05 16:00

一、知识点

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