iOS AVPlayer使用总结

1、AVPlayer的创建
AVPlayer *player = [[AVPlayer alloc] init];
2、AVPlayer的配置 – AVPlayerLayer
//创建AVPlayerLayer
AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 

//frame
playerLayer.frame = self.bounds;

/**
	videoGravity //视频播放时的拉伸方式
	param:
		AVLayerVideoGravityResizeAspect //等比例填充,直到一个维度到达区域边界。部分机型有黑边
		AVLayerVideoGravityResizeAspectFill //等比例填充,直到填充满整个视图区域,其中一个维度的部分区域会被裁剪
		AVLayerVideoGravityResize //非均匀模式。两个维度完全填充至整个视图区域。会变形
*/
playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;

//去除黑边
//使playerLayer光栅化(即位图化),关闭了图层的blending(混合)。
playerLayer.shouldRasterize = YES;
//显式指定光栅化的范围,这样能保证视频的显示质量,不然容易出现视频质量显示不佳。
playerLayer.rasterizationScale = [UIScreen mainScreen].scale;

//在view的layer上添加layer
[self.layer addSublayer:_playerLayer];
3、AVPlayerItem 加载视频资源

该类主要是用于管理资源对象,提供播放数据源,旨在表示由AVPlayer播放的资源的呈现状态,并允许观察该状态,它控制着视频从创建到销毁的诸多状态。

//方式一
//通过设备相册里面的内容 创建一个要播放的对象
AVURLAsset *urlAsset = [[AVURLAsset alloc] initWithURL: urlStr options: nil];
[[urlAsset resourceLoader] setDelegate: self queue: dispatch_get_main_queue()];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:urlAsset];

//方式二
//类方法通过URl地址创建要播放的对象 可以是本地内容也可以是在线内容
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:mediaUrl];  

//切换视频资源
[player replaceCurrentItemWithPlayerItem:item];  
4、播放控制
  1. play //播放
  2. pause //暂停
  3. seekToTime: //跳转进度
  4. currentItem // 当前播放的视频元素
  5. volume //调节音量
  6. externalPlaybackVideoGravity //视频显示的播放样式
  7. currentTime 获得当前播放时间 -> CMTime
    CMTimeGetSeconds(<#CMTime time#>) 通过CMTime获得当前播放时间(秒)
5、监听播放状态

//通过KVO来观察status属性的变化,来获得播放之前的错误信息
[_player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
                 
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"status"]) {
        AVPlayerStatus status = [change[NSKeyValueChangeNewKey] intValue];
        switch (status) {
            case AVPlayerStatusFailed:
            {
                NSLog(@"url有误");
            }
                break;
            case AVPlayerStatusReadyToPlay:
            {
                NSLog(@"准备好播放了");
            }
                break;
            case AVPlayerStatusUnknown:
            {
                NSLog(@"视频资源出现未知错误");
            }
                break;
            default:
                break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iOS AVPlayer 是苹果官方提供的一个强大的音视频播放器框架。AVPlayer 提供了丰富的功能和接口,可以用来播放各种不同格式的音视频文件。 iOS AVPlayer 播放器的 UI 取决于个人的设计需求和实现方式。一般情况下,可以通过 AVPlayerLayer 来显示视频画面,并在其上添加一些自定义的控件来实现播放器的 UI。 可以使用 AVPlayerLayer 来创建一个视图层用于显示视频,然后将其添加到你的视图层级中。你可以设置 AVPlayerLayer 的 frame 属性来确定视频画面的位置和大小。 除了视频画面的显示,你还可以添加一些控件来实现播放器的控制功能。比如可以添加一个播放/暂停按钮、一个进度条显示当前播放的进度、一个音量调节控件等等。这些控件可以通过与 AVPlayer 进行交互来实现不同功能。 在实现过程中,你可以利用 AVPlayer 的一些相关属性和方法来控制播放器的状态。比如可以使用 play() 方法来播放视频,pause() 方法来暂停视频的播放,并且可以通过 KVO(键值观察)机制来监听播放器的状态变化,以及通过观察 AVPlayerItem 的属性来获取视频的总时长等信息。 另外,你还可以根据需要进行一些自定义的 UI 设计来美化播放器的外观,比如更改按钮的样式、调整进度条的颜色等等,以增强用户体验。 综上所述,iOS AVPlayer 播放器的 UI 取决于你个人的设计需求和实现方式,可以通过 AVPlayerLayer 实现视频画面的显示,通过添加自定义控件来实现播放器的控制功能,并根据需要进行一些自定义的 UI 设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值