播放视频,咱们首先用AVFoundation进行开发
需要先添加库 AVFoundation.framework
#import <AVFoundation/AVFoundation.h>
正常播放视频
NSURL *remoteURL = [NSURL URLWithString:@"外部的视频源"];
self.player = [AVPlayer playerWithURL:remoteURL];
[self.player play];
// 3 实现视频显示功能
// 3.1 根据player对象, 创建 AVPlayerLayer 对象
AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.player];
// 3.2 添加到需要展示的视图上
[self.view.layer addSublayer:layer];
// 3.3 设置图层 AVPlayerLayer 的大小
// 不要在viewDidLoad设置,此时view的frame不一定准
layer.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height * 9 / 16);
暂停播放
[self.player pause];
继续播放或开始播放
[self.player play];
设置播放速率
self.player.rate = self.rateSlider.value;
但是目前发现,如果速率大于2倍的话,是没有声音的,如果小于0.5倍的话,速度等同于0.5倍,如果要设置0.5到2范围之外的速度,我后续将会继续调研。
另外有一点,rate的设置要在play之后生效,重新play的话要重新设置,否则不能生效
监听设置播放进度
监听
@weakify(self)
[self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1, NSEC_PER_SEC)
queue:NULL
usingBlock:^(CMTime time) {
@strongify(self)
NSLog(@"%lf %lf", CMTimeGetSeconds(self.player.currentItem.duration), //总时长
CMTimeGetSeconds(self.player.currentItem.currentTime));//现在的时间进度
}];
手动设置时间
float fps = self.player.currentItem.currentTime.timescale;
CMTime time = CMTimeMakeWithSeconds(self.playSlider.value, fps);
网友评论