在视频音频方面苹果为我们提供了不少选择,其中有MediaPlayer(iOS9后遭到废弃),我们这里用的是基于AVFounditon类库的AVPlayer。
AVPlayer是用于管理媒体资产的播放和定时控制器对象它提供了控制播放器的有运输行为的接口,如它可以在媒体的时限内播放,暂停,和改变播放的速度,并有定位各个动态点的能力。可以使用AVPlayer来播放本地和远程的视频媒体文件,这里我们实现一个音乐播放器的一些基础功能:支持播放/暂停、左右退拽快进、上下滑动调节音量、收藏等。
1.导入头文件
#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;
//播放进度
@property(nonatomic, strong)UISlider *songSlide;
//接收歌曲地址
@property(nonatomic,copy)NSString *musicUrl;
//播放按钮
@property(nonatomic, strong)UIButton *playButton;
3.创建播放器
//如果AVPlayer要显示必须创建一个播放器层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.进度条
//利用avplayer的currentItem属性,duration是总时间,currentTime是当前时间
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.单例
最重要的一点就是要将播放器写成单例!!!!
+(PlayingViewController *)defaultPlayingViewController{
static PlayingViewController *playingViewController = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
playingViewController = [[PlayingViewController alloc]init];
});
return playingViewController;
}
到此你应该有了一个很基础但可以播放的音乐播放器,一般播放器还应该具有的随机播放,收藏等功能也非常简单,这里就不多说了。