iOS开发————几种音频播放方式

这篇同样是编者对自己学习的小总结以及对iOS初级开发者的小福利,大神莫吐槽...

首先来谈谈AVFoundation框架:它是iOS中用于处理基于时间的媒体数据的高级框架,也是基于Core Audio,Core Media,Core Video等框架构建的,充分利用了多核硬件的优势并大量使用了Block和GCD机制。

所有的iOS App都具有默认的音频会话,它定义了以下行为:

可以播放音频,但是不能录制音频。

静音模式下App播放的所有音频都会静音。

设备锁定时音频处于静音状态。

App播放音频时所有后台播放的音频都会静音。

iOS系统中音频播放方式:AVAudioPlayer,AVPlayer,播放系统声音,音频队列(小编也不熟...)。

AVAudioPlayer:使用简单,功能强大,但只能播放本地音频。

AVPlayer:可以播放网络音频,本地音频和流媒体播放,但处理音频不够灵活。

播放系统声音:系统声音属于非压缩的存储类型,但是系统声音时长短,不超过30s,格式为 : caf / wav / aiff。

举例:AVAudioPlayer

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController () <AVAudioPlayerDelegate> {
    
    AVAudioPlayer *_audioPlayer;
    AVPlayer *_avPlayer;
    
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //AVAudioPlayer
    //查找本地音乐文件路径
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"多远都要在一起" ofType:@"mp3"];
    
    //构建URL
    NSURL *url2 = [NSURL fileURLWithPath:filePath];
    
    //创建音乐播放器
    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url2 error:nil];
    
    //根据URL地址来读取音乐文件(写在ViewDidLoad中会自动播放)
    [_audioPlayer prepareToPlay];
    
    _audioPlayer.delegate = self;
    
}
- (IBAction)play:(id)sender {
    
    [_audioPlayer play];
    
    
}
- (IBAction)pause:(id)sender {
    
    [_audioPlayer pause];
    
    
    
}

举例:AVPlayer

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController () <AVAudioPlayerDelegate> {
    
    AVAudioPlayer *_audioPlayer;
    AVPlayer *_avPlayer;
    
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //在iOS9之后,苹果对http访问进行了限制,需要设置info.plist文件
    //在info.plist文件中加入字段App Transport Secruity Settings
    //在其中添加Allow Arbitrary Loads ------ YES
    
    //使用AVPlayer来播放在线音乐
    //@"http://218.76.27.57:8080/chinaschool_rs02/135275/153903/160861/160867/1370744550357/mp3"
    //创建URL
    NSURL *url = [NSURL URLWithString:@"http://218.76.27.57:8080/chinaschool_rs02/135275/153903/160861/160867/1370744550357.mp3"];

    //创建播放器
    _avPlayer = [[AVPlayer alloc] initWithURL:url];
    
    [_avPlayer play];
}


举例:播放系统声音

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController () <AVAudioPlayerDelegate> {
    
    AVAudioPlayer *_audioPlayer;
    AVPlayer *_avPlayer;
    SystemSoundID soundID;

    
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //播放系统声音
    //查找声音文件(此声音文件是编者自己添加到程序包中去的)
    NSString *filePath2 = [[NSBundle mainBundle] pathForResource:@"44th Street Medium" ofType:@"caf"];
    
    //构建URL
    NSURL *url3 = [NSURL fileURLWithPath:filePath2];
    
    //创建系统声音ID
    SystemSoundID soundID;
    
    //注册声音文件,并且将ID保存
    AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url3), &soundID);
    
    //播放声音
    AudioServicesPlaySystemSound(soundID);
    
  
    
}
//移除系统声音
- (void)dealloc {
    
    //移除注册的系统声音
    AudioServicesRemoveSystemSoundCompletion(soundID);
}



你可能感兴趣的:(视频,网络,ios开发)