AVplayer的使用教程

  • Post author:
  • Post category:其他



GitHub地址



公司做视频服务的,写了一个播放器Demo。主要功能都已经实现,自己再插入几个控制控件。

先梳理几个问题:

1.AVplayer的播放

2.uislider进度条

3.全屏模式

4.单个页面强制横屏

——————————————————————————————————————————————————————————————————————————————-

自定义一个view用来播放视频。

//
//  PlayerView.m
//  videodemo
//
//  Created by meipaipai on 17/2/3.
//  Copyright © 2017年 meipaipai. All rights reserved.
//

#import "PlayerView.h"
#import "LykSlider.h"

@interface PlayerView ()
@property (nonatomic, strong) AVPlayer *player;
@property (nonatomic, strong) AVPlayerItem *playerItem;
@property (nonatomic ,strong) id playbackTimeObserver;
@property (nonatomic, strong) NSString *totalTime;//视频总时间
@property (nonatomic, strong) NSDateFormatter *dateFormatter;//时间格式
//控制台
@property (nonatomic, strong) UIView *controlView;//控制台视图
@property (nonatomic, strong) UIButton *playButton;//播放按钮
@property (nonatomic, strong) LykSlider *playSlider;//进度条
@property (nonatomic, strong) UILabel *playTime;//播放时间
@property (nonatomic, strong) UIButton *fullScreen;//全屏
@end

static UIImage *thumbImage;

@implementation PlayerView

-(void)dealloc{
    [self.playerItem removeObserver:self forKeyPath:@"status" context:nil];
    [self.playerItem removeObserver:self forKeyPath:@"loadedTimeRanges" context:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:self.playerItem];
    [self.player removeTimeObserver:self.playbackTimeObserver];
}

-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        NSURL *videoUrl = [NSURL URLWithString:@"http://v.jxvdy.com/sendfile/w5bgP3A8JgiQQo5l0hvoNGE2H16WbN09X-ONHPq3P3C1BISgf7C-qVs6_c8oaw3zKScO78I--b0BGFBRxlpw13sf2e54QA"];
        self.playerItem = [AVPlayerItem playerItemWithURL:videoUrl];
        self.player = [AVPlayer playerWithPlayerItem:self.playerItem];
        //解决iOS 10偶尔播放不了的问题
        if([[UIDevice currentDevice] systemVersion].intValue>=10){
            //      增加下面这行可以解决ios10兼容性问题了
            self.player.automaticallyWaitsToMinimizeStalling = NO;
        }
        
        // 添加视频播放结束通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayDidEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.playerItem];
        //  监听status属性
        [self.playerItem addObserver:self 



版权声明:本文为viiimaus原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。