
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ī)播放,收藏等功能也非常簡單,這里就不多說了。