iOS音频播放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS音频播放相关的知识,希望对你有一定的参考价值。

参考技术A ·ios系统中的音频播放方式·AVAudioPlayer、AVPlayer、系统声音、音频队列

·AVAudioPlayer·使用简单方便,但只能播放本地音频,不支持流媒体播放

·AVPlayer·iOS4.0以后,可以使用AVPlayer播放本地音频和支持流媒体播放,但提供接口较少,处理音频不够灵活·音频队列

·音频队列主要处理流媒体播放,提供了强大且灵活的API接口(C函数的接口),但处理起来也较为复杂

·播放系统声音·音频数据可分为压缩和非压缩的存储类型。压缩的音频文件虽然文件体积较小(相对于非压缩的),但需要耗费处理器的性能进行解压和解码。

·如果音频文件体积较小,压缩后的音频文件,也不会节省较大的磁盘空间。像这一类小型非压缩的文件可以注册成为系统声音·格式为:caf/wav/aiff格式,且时长小于30s

- (void)viewDidLoad

    [super viewDidLoad];

    //1.plist文件Required background modes

    //App plays audio or streams audio/video using AirPlay

    //2.设置后台播放

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

    //1取得本地音频文件路径

    NSString*filePath =  [[NSBundle mainBundle] pathForResource:@"安静" ofType:@"mp3"];

    NSURL*url = [NSURLfileURLWithPath:filePath];

    //创建全局播放器  AVAudioPlayer 只能播放本地音频文件

    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

    //2播放流媒体音乐,AVPlayer都支持

    //获得网络链接

    NSString *str = @"http://ra01.sycdn.kuwo.cn/resource/n3/32/56/3260586875.mp3";

    NSURL*url1 = [NSURLURLWithString:str];

    _player= [[AVPlayeralloc]initWithURL:url1];



//1播放本地音乐

- (IBAction)playLocalMusic:(id)sender

    if(_audioPlayer.isPlaying)

        [_audioPlayerpause];

    else

        [_audioPlayerplay];

   



//2播放流媒体音乐

- (IBAction)playMusic:(id)sender

    if(_isPlay)

        [_playerpause];

    else

        [_playerplay];

   

    _isPlay = !_isPlay;



//3播放系统声音

- (IBAction)playSystemSound:(id)sender

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"44th Street Medium.caf" ofType:nil];

    NSURL*url = [NSURLfileURLWithPath:filePath];

    UInt32  systemSoundID =10;

    //注册系统声音

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &systemSoundID);

    //根据id播放系统声音

    AudioServicesPlaySystemSound(systemSoundID);

    //设置手机振动

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);



//设置锁屏时界面显示的播放信息

-(void)_initUI

    /* MPMediaItemPropertyAlbumTitle

     // MPMediaItemPropertyAlbumTrackCount

     // MPMediaItemPropertyAlbumTrackNumber

     // MPMediaItemPropertyArtist

     // MPMediaItemPropertyArtwork

     // MPMediaItemPropertyComposer

     // MPMediaItemPropertyDiscCount

     // MPMediaItemPropertyDiscNumber

     // MPMediaItemPropertyGenre

     // MPMediaItemPropertyPersistentID

     // MPMediaItemPropertyPlaybackDuration

     // MPMediaItemPropertyTitle*/

    MPMediaItemArtwork *artWork = [[MPMediaItemArtwork alloc ] initWithImage:[UIImage imageNamed:@"mp3.jpg"]];

   NSDictionary *dic = @

                          MPMediaItemPropertyAlbumTitle:@"兄弟你变了",

                          MPMediaItemPropertyArtist:@"庞龙",

                          MPMediaItemPropertyArtwork:  artWork

                          ;

    [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dic];



-(BOOL )canBecomeFirstResponder

    return YES;



-(void)viewWillAppear:(BOOL)animated

    [superviewWillAppear:animated];

    [self becomeFirstResponder];

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

    [self_initUI];



-(void)viewWillDisappear:(BOOL)animated

    [superviewWillDisappear:animated];

    [self resignFirstResponder];

    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];



//设置远程监控

-(void)remoteControlReceivedWithEvent:(UIEvent *)event

    if (event.type == UIEventTypeRemoteControl)

        switch(event.subtype)

            case UIEventSubtypeRemoteControlPlay:

                [_audioPlayerplay];

                NSLog(@"播放");

                break;

            case UIEventSubtypeRemoteControlPause:

                [_audioPlayerpause];

                NSLog(@"暂停");

                break;

            case UIEventSubtypeRemoteControlNextTrack:

                NSLog(@"下一首");

                break;

            case UIEventSubtypeRemoteControlPreviousTrack:

                NSLog(@"上一首");

                break;

            default:

                break;

       

   

以上是关于iOS音频播放的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之音频播放录音

iOS 通过Audio Queue播放音频数据

iOS音频播放

iOS音频问题通用配置

在IOS核心音频中,如何找到文件播放器音频单元的真实当前播放头位置?

ios 如何播放在线的音频文件