音频的播放方法

来源:互联网 发布:日本教科书知乎 编辑:程序博客网 时间:2024/05/18 17:40

总结了三个播放音频的方法:AVAudioPlayer、AVPlayer以及注册系统声音,没有什么技巧,直接用就行了(^__^)

#import "ViewController.h"//1.引入框架#import <AVFoundation/AVFoundation.h>//2.引入代理@interface ViewController()<AVAudioPlayerDelegate> {    //3.创建播放对象(设置为全局的,防止一运行完就销毁的情况    AVAudioPlayer *audioPlayer; //只能播放本地的文件    AVPlayer *avPlayer;     //本地和网络都可以    SystemSoundID soundID;      //系统声音的注册ID}@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //-------------AVAudioPlayer使用//    [self createAudioPlayer];    //-------------AVPlayer使用//    [self createAVPlayer];    //------------SystemSound使用    [self createSystemSound];}#pragma mark - AVAudioPlayer使用(本地文件播放)- (void) createAudioPlayer {    //获取文件路径    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"音频名" ofType:@"mp3"];    //将本地文件路径,转成url    NSURL *url = [NSURL fileURLWithPath:filePath];    /*        NSURL *url = [NSURL URLWithString:@""];     //将网址转成路径     */    //初始化播放数据    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];    //设置代理    audioPlayer.delegate = self;    //     AVAudioPlayer常用属性和方法    /*        //1.音量(0.0 - 1.0)        audioPlayer.volume = 0.5;        //2.循环次数(默认一次)        audioPlayer.numberOfLoops = 1;        //3.设置播放时间        audioPlayer.currentTime = 125;    */    //准备播放    [audioPlayer prepareToPlay];    //播放    [audioPlayer play];}#pragma mark - 创建AVPlayer(本地和网络都可以)- (void) createAVPlayer {    //获取本地的操作,看AVAudioPlayer的代码就行    //获取网络地址    //注意的:访问网络地址,要再info.plist里面添加NSAppTansportSecurity 设置为字典,然后在字典中添加NSAllowsArbitraryLoads 设置值为Yes,就可以访问网络了(Xcode 7.0版本,是这么设置滴,其他的我就不清楚啦^*^    NSURL *url = [NSURL URLWithString:@"音频的网址,自己找"];    //初始化数据    avPlayer = [[AVPlayer alloc] initWithURL:url];    //准备播放    [avPlayer play];}#pragma mark - 创建系统声音- (void) createSystemSound {    /*        注册的系统声音,时长小于30s,格式为caf/wav/aiff     */    //获取本地文件    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"音频名" ofType:@"caf"];    //转成url    NSURL *url = [NSURL fileURLWithPath:filePath];    //注册系统声音    //soundID:标识音频 ,这里的soundID,我设置成全局的    AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &soundID);    //播放    AudioServicesPlaySystemSound(soundID);}#pragma mark - 销毁注册的系统声音- (void) dealloc {    //ARC中C语言的函数需要我们手动管理内存    //1.移除注册系统声音//    AudioServicesRemoveSystemSoundCompletion(soundID);    //2.销毁注册系统声音    AudioServicesDisposeSystemSoundID(soundID);}@end
0 0