美文网首页
iOS中的视频播放

iOS中的视频播放

作者: 杨闯 | 来源:发表于2020-03-29 09:00 被阅读0次

播放视频,咱们首先用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);

相关文章

网友评论

      本文标题:iOS中的视频播放

      本文链接:https://www.haomeiwen.com/subject/bkcyuhtx.html