公司做视频服务的,写了一个播放器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 版权协议,转载请附上原文出处链接和本声明。