iOS 音樂播放器

Simulator Screen Shot 2017年9月20日 下午12.23.32.png

在視頻音頻方面蘋果為我們提供了不少選擇,其中有MediaPlayer(iOS9后遭到廢棄),我們這里用的是基于AVFounditon類庫的AVPlayer。
AVPlayer是用于管理媒體資產(chǎn)的播放和定時(shí)控制器對(duì)象它提供了控制播放器的有運(yùn)輸行為的接口,如它可以在媒體的時(shí)限內(nèi)播放,暫停,和改變播放的速度,并有定位各個(gè)動(dòng)態(tài)點(diǎn)的能力??梢允褂肁VPlayer來播放本地和遠(yuǎn)程的視頻媒體文件,這里我們實(shí)現(xiàn)一個(gè)音樂播放器的一些基礎(chǔ)功能:支持播放/暫停、左右退拽快進(jìn)、上下滑動(dòng)調(diào)節(jié)音量、收藏等。

1.導(dǎo)入頭文件

#import <AVFoundation/AVFoundation.h>

2.一些要用到的東西

@property(nonatomic, strong)AVPlayer *avPlayer;

@property(nonatomic, strong)AVPlayerLayer *playerLayer;
//音量
@property(nonatomic, strong)UISlider *volumeSlider;

@property(nonatomic, strong)NSTimer *timer;
//播放進(jìn)度
@property(nonatomic, strong)UISlider *songSlide;
//接收歌曲地址
@property(nonatomic,copy)NSString *musicUrl;
//播放按鈕
@property(nonatomic, strong)UIButton *playButton;

3.創(chuàng)建播放器

//如果AVPlayer要顯示必須創(chuàng)建一個(gè)播放器層AVPlayerLayer用于展示,播放器層繼承于CALayer,有了AVPlayerLayer之添加到控制器視圖的layer中即可。
    self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
    self.playerLayer.frame = CGRectMake(0, 500, 375, 100);
    self.playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
    self.avPlayer.volume = 3.0f;
    [self.view.layer addSublayer:self.playerLayer];

4.播放歌曲

//用avplayer播放歌曲很簡便,知道歌曲的URL就可以了
        NSURL *playURL = [NSURL URLWithString:self.musicUrl];
        AVAsset *musicAsset = [AVURLAsset URLAssetWithURL:playURL options:nil];
        AVPlayerItem *playItem = [AVPlayerItem playerItemWithAsset:musicAsset];
        self.avPlayer = [AVPlayer playerWithPlayerItem:playItem];

5.播放和暫停

[self.avPlayer play];       //播放
[self.avPlayer pause];   //暫停

6.音量

self.avPlayer.volume = 0;
self.avPlayer.volume = 3.0f;

7.進(jìn)度條

//利用avplayer的currentItem屬性,duration是總時(shí)間,currentTime是當(dāng)前時(shí)間
    NSInteger all = CMTimeGetSeconds(self.avPlayer.currentItem.duration);
    NSInteger now = CMTimeGetSeconds(self.avPlayer.currentItem.currentTime);
    self.songSlide.value = CMTimeGetSeconds(self.avPlayer.currentItem.currentTime) / CMTimeGetSeconds(self.avPlayer.currentItem.duration);

8.單例
最重要的一點(diǎn)就是要將播放器寫成單例!?。?!

+(PlayingViewController *)defaultPlayingViewController{
    
    static PlayingViewController *playingViewController = nil;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        
        playingViewController = [[PlayingViewController alloc]init];
        
    });
    
    return playingViewController;
}

到此你應(yīng)該有了一個(gè)很基礎(chǔ)但可以播放的音樂播放器,一般播放器還應(yīng)該具有的隨機(jī)播放,收藏等功能也非常簡單,這里就不多說了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容