美文网首页
ios AVPlayer 读取本地视频的使用

ios AVPlayer 读取本地视频的使用

作者: AlexLi_ | 来源:发表于2016-05-19 20:26 被阅读1841次

这里我使用一个播放视频的小例子,会有源码分享给大家
如果要读取网络视频,视频如果是http的则需要修改info.plist

  • 添加 App Transport Security Settings 字典类型
  • 在 App Transport Security Settings 下添加 Allow Arbitrary Loads 改为YES

1.导入AVFoundation.framework框架



2.在头部导入

#import <AVFoundation/AVFoundation.h>

跳过创建视图部分,会有源码分享给大家,只介绍下关键的方法



重要的几个类:AVPlayer 、AVPlayerItem 、AVPlayerLayer

#判断AVPlayerItem的状态(status)来对AVPlayer进行操作
#AVPlayer本身无法播放视频,必须要把视频加到AVPlayerLayer中,才能显示。

两个KVO :
NSKeyValueObservingOptionNew 
NSKeyValueObservingOptionOld


AVPlayerItem

//添加观察者
[_playerItem 
    addObserver:self 
    forKeyPath:@"status"
    options:NSKeyValueObservingOptionNew 
    context:nil];
//对播放源的三个状态(status)
AVPlayerItemStatusReadyToPlay播放源准备好
AVPlayerItemStatusUnknown播放源未知
AVPlayerItemStatusFailed播放源失败
currentTime 获取播放源当前播放时间
duration 获取播放源总播放时长
#获取到的是CMTime  value/timescale = 秒数

AVPlayer

//添加定时器,更新当前的播放进度
- (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(nullable dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block;
//设置当前播放时间
- (void)seekToTime:(CMTime)time;
//开始播放
- (void)play;
//停止播放
- (void)pause;

AVPlayerLayer

//将player添加到layer中
+ (AVPlayerLayer *)playerLayerWithPlayer:(nullable AVPlayer *)player;
//设置player的播放方式
_playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
/*
AVLayerVideoGravityResizeAspectFill
AVLayerVideoGravityResizeAspect
AVCoreAnimationBeginTimeAtZero
AVLayerVideoGravityResize
*/

创建一个视频播放器的思路:

  • 创建一个view用来放置AVPlayerLayer
  • 设置AVPlayer AVPlayerItem 并将 AVPlayer放到AVPlayerLayer中,在将AVPlayerLayer添加到[view.layer addSubLayer]中
  • 添加观察者,观察播放源的状态
    1. 如果状态是AVPlayerItemStatusReadyToPlay就开始播放
  • 在做一些功能上的操作
    //获取url 本地url
    //NSURL *url = [[NSBundle mainBundle]URLForResource:@"视频" withExtension:@"mp4"];
    NSURL *url = [NSURL URLWithString:@"http://v1.mukewang.com/a45016f4-08d6-4277-abe6-bcfd5244c201/L.mp4"];
    //创建playerItem
    _playerItem = [AVPlayerItem playerItemWithURL:url];
    //添加item的观察者 监听播放源的播放状态(status)
    [_playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
    //创建playerItem
    _player = [AVPlayer playerWithPlayerItem:_playerItem];
    //创建playerLayer
    _playerLayer=[AVPlayerLayer playerLayerWithPlayer:_player];
    //设置_layer的frame
    _playerLayer.frame=CGRectMake(_playerView.frame.origin.x, _playerView.frame.origin.y, _playerView.frame.size.width,300);
    //添加到_playerView中
    [_playerView.layer addSublayer:_playerLayer];

demo 链接 --> (百度网盘)简单视频播放器 提取密码:3zv4

相关文章

  • ios AVPlayer 读取本地视频的使用

    这里我使用一个播放视频的小例子,会有源码分享给大家如果要读取网络视频,视频如果是http的则需要修改info.pl...

  • iOS使用AVPlayer自定义视频播放器

    上一篇:iOS使用AVPlayer自定义音频播放器iOS内部提供的有三种视频播放的方式,且都能播放本地、远程的音频...

  • AVPlayer播放本地视频

    AVPlayer播放本地视频,代码如下 本地视频的加载很简单,可以直接构造出AVPlayer,自把AVPlaerL...

  • 播放音频

    AVAudioplayer ->只能播放本地音乐AVPlayer ->(本地音乐.远程音乐,本地视频,远程视频) ...

  • 使用 AVPlayer 进行多视频播放

    使用 AVPlayer 进行多视频播放 链接:http://ios.jobbole.com/84287/ 从前……...

  • iOS 音频

    iOS 音频播放 本地音频文件 AVPlayer / AVAudioPlayer 在线音频流 AVPlayer i...

  • iOS AVPlayer 播放本地视频

    AVPlayer 这个自iOS 4.0+ 就有了的东西,随着iOS系统的不断优化而变得更强大,目前不止支持本地的音...

  • iOS音频篇-AVPlayer

    iOS音频篇:使用AVPlayer播放网络音乐 iOS音频篇:AVPlayer的缓存实现

  • AVPlayer那些坑

    AVPlayer是iOS上常用的视频播放器组件,支持常见的音视频格式。对于一般应用而言,使用AVPlayer和一套...

  • wkwebview遇到的问题

    1. ios9以前版本读取本地HTML的问题 当使用loadRequest来读取本地的HTML时,WKWebVie...

网友评论

      本文标题:ios AVPlayer 读取本地视频的使用

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