视频 AVPlayer

视频 AVPlayer/** * iOS中视频播放 可以使用AVPlayer AVPlayer:不仅可以播放音频,还可播放视频;支持播放网络音频. AVAudioPlayer:支持本地音频播放 */ – (void)viewDidLoad { [super viewDidLoad]; // Do any add

视频  AVPlayer

/**

 *   iOS中视频播放  可以使用AVPlayer

 AVPlayer:不仅可以播放音频,还可播放视频;支持播放网络音频.

 AVAudioPlayer:支持本地音频播放

 */

– (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    //获取播放网址

    NSURL *url = [NSURL URLWithString:@”http://video.weibo.com/show?fid=1034:c2b460554bd8334dcefa9ad4e03a8c79″];

   /*AVPlayerItem 可以获取视频的信息,如播放当前时长,总时长等等

    状态  status属性:

    AVPlayerItemStatusUnknown, 播放器未知问题

    AVPlayerItemStatusReadyToPlay, 代表可以播放 可以调用play

    AVPlayerItemStatusFailed 代表视频无法播放

       loadedTimeRanges: 已缓存的进度

    监测该属性  展示更新UI上的缓存进度.

    */

    //根据网址创建AVPlayerItem

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];

    playerItem.status;

    playerItem.loadedTimeRanges;

    //监听item的status属性 KVO

    [playerItem addObserver:self forKeyPath:@”status” options:NSKeyValueObservingOptionNew context:nil];

    //创建播放器对象

    _player = [AVPlayer playerWithPlayerItem:playerItem];

    /**

     *   单独使用AVPlayer时无法显示视频的(该类并非真正的视图)

     需要将视图层添加到AVPlayerLayer中

     最后将layer添加到父视图的layer上.

     */

    //1.创建 AVPlayerLayer对象

    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:_player];

   //2.设置对应属性

   //设置视图层的frame

    layer.frame = CGRectMake(30, 200, self.view.bounds.size.width – 60, 300);

    //设置背景色

    layer.backgroundColor = [UIColor blackColor].CGColor;

    //设置图层的填充方式:

    /** AVLayerVideoGravityResize  视频会被拉伸填充播放界面的边界

     *  AVLayerVideoGravityResizeAspect (默认)保持视频的宽高比,且自动适应播放界面的边界.

    *   AVLayerVideoGravityResizeAspectFill  保持视频的宽高比,填充图层的边界.

     */

    layer.videoGravity = AVLayerVideoGravityResizeAspect;

    //添加到播放界面的layer层

    [self.view.layer addSublayer:layer];

}

– (IBAction)handlePlay:(id)sender {

    [self.player play];

}

– (IBAction)handlePause:(id)sender {

    [self.player pause];

}

#pragma KVO 回调方法

//监听对象的status属性发生变化时的回调方法

– (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{

    NSLog(@”%@ %@”,object,change);

    //获取播放的资源对象

    AVPlayerItem *item = object;

    //代表可以播放了

    if (item.status == AVPlayerStatusReadyToPlay) {

        //获取总时长 duration  (CMTime类型)

        /*CMTime  

         value:一共多少帧

         timescale:每秒多少帧

         */

        float total = item.duration.value / item.duration.timescale;

        NSLog(@”%f”,total);

    }

}

今天的文章视频 AVPlayer分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/54884.html

(0)
编程小号编程小号
上一篇 2023-08-28
下一篇 2023-08-28

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注