Skip to content

Commit

Permalink
Release 3.2.1
Browse files Browse the repository at this point in the history
- 新增了一些通知
- 新增了播放记录的功能
- 为播放器添加了几个判断当前状态的方法
- 为左下角弹框新增了几个方法
- 重构`playbackController`, 增加了`SJMediaPlaybackController`抽象类, 便于后续扩展更多的第三方播放器.a
  • Loading branch information
changsanjiang committed Feb 20, 2020
1 parent 7dcd85d commit 8d20068
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 39 deletions.
38 changes: 10 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
[![Platform](https://img.shields.io/badge/platform-iOS-blue.svg)](https://github.com/changsanjiang)
[![License](https://img.shields.io/github/license/changsanjiang/SJVideoPlayer.svg)](https://github.com/changsanjiang/SJVideoPlayer/blob/master/LICENSE.md)

## Getting Started
wiki: https://github.com/changsanjiang/SJVideoPlayer/wiki

## Installation
```ruby
# Player with default control layer.
Expand All @@ -17,12 +14,15 @@ pod 'SJVideoPlayer'
pod 'SJBaseVideoPlayer'
```

## Getting Started
- wiki: https://github.com/changsanjiang/SJVideoPlayer/wiki
- 快速开始: https://github.com/changsanjiang/SJVideoPlayer/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B

## 天朝
```ruby
# 如果网络不行安装不了, 可改成以下方式进行安装
pod 'SJBaseVideoPlayer', :git => 'https://gitee.com/changsanjiang/SJBaseVideoPlayer.git'
pod 'SJVideoPlayer', :git => 'https://gitee.com/changsanjiang/SJVideoPlayer.git'
pod 'SJUIKit/Queues', :git => 'https://gitee.com/changsanjiang/SJUIKit.git'
$ pod update --no-repo-update (不要用 pod install 了, 用这个命令安装)
```

Expand All @@ -35,20 +35,7 @@ $ pod update --no-repo-update (不要用 pod install 了, 用这个命令安
- wiki: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-AliPlayer
- 播放控制切换为: AliyunVodPlayer
- wiki: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-AliVodPlayer


## Example

```Objective-C
_player = [SJVideoPlayer player];
_player.view.frame = CGRectMake(0, 0, 200, 200);
[self.view addSubview:_player.view];

// 设置资源进行播放
_player.URLAsset = [[SJVideoPlayerURLAsset alloc] initWithURL:URL];

... 等等, 更多设置, 请查看头文件. 相应功能均为懒加载, 用到时才会创建.
```


## Author

Expand Down Expand Up @@ -81,7 +68,7 @@ v2.6.5 往后的版本, 请[配置旋转 !!](https://github.com/changsanjiang/SJ
* [2.2 播放 AVAsset 或其子类](#2.2)
* [2.3 从指定的位置开始播放](#2.3)
* [2.4 续播(进入下个页面时, 继续播放)](#2.4)
* [2.5 销毁时的回调. 可在此做一些记录工作, 如播放记录](#2.5)
* [2.5 播放记录](#2.5)

#### [3. 播放控制](#3)
* [3.1 播放](#3.1)
Expand Down Expand Up @@ -467,16 +454,11 @@ _player.URLAsset = [[SJVideoPlayerURLAsset alloc] initWithURL:URL startPosition:
_player.URLAsset = [SJVideoPlayerURLAsset.alloc initWithOtherAsset:otherAsset];
```
<h3 id="2.5">2.5 销毁时的回调. 可在此做一些记录工作, 如播放记录</h3>

```Objective-C
// 每个资源dealloc时的回调
_player.assetDeallocExeBlock = ^(__kindof SJBaseVideoPlayer * _Nonnull videoPlayer) {
// .....
};
```
<h3 id="2.5">2.5 播放记录</h3>
当资源销毁时, 播放器将会回调该 block.
<p>
内容已迁移至wiki: https://github.com/changsanjiang/SJVideoPlayer/wiki/%E6%92%AD%E6%94%BE%E8%AE%B0%E5%BD%95
</p>
___
Expand Down
2 changes: 1 addition & 1 deletion SJBaseVideoPlayer.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'SJBaseVideoPlayer'
s.version = '3.2.0'
s.version = '3.2.1'
s.summary = 'video player.'
s.description = 'https://github.com/changsanjiang/SJBaseVideoPlayer/blob/master/README.md'
s.homepage = 'https://github.com/changsanjiang/SJBaseVideoPlayer'
Expand Down
10 changes: 9 additions & 1 deletion SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,15 @@ + (nullable SJAVMediaPlayer *)loadPlayerForMedia:(SJVideoPlayerURLAsset *)media

AVPlayer *avPlayer = target.avPlayer;
if ( avPlayer == nil ) {
return nil;
AVPlayerItem *avPlayerItem = target.avPlayerItem;
if ( avPlayerItem == nil ) {
AVAsset *avAsset = target.avAsset;
if ( avAsset == nil ) {
avAsset = [AVURLAsset URLAssetWithURL:target.mediaURL options:nil];
}
avPlayerItem = [AVPlayerItem playerItemWithAsset:avAsset];
}
avPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem];
}

player = [SJAVMediaPlayer.alloc initWithAVPlayer:avPlayer startPosition:media.startPosition];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN
startPosition:(NSTimeInterval)startPosition
playModel:(__kindof SJPlayModel *)playModel;

@property (nonatomic, strong, readonly, nullable) __kindof AVAsset *avAsset;
@property (nonatomic, strong, readonly, nullable) AVPlayerItem *avPlayerItem;
@property (nonatomic, strong, readonly, nullable) AVPlayer *avPlayer;

- (nullable instancetype)initWithOtherAsset:(SJVideoPlayerURLAsset *)otherAsset
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ - (nullable instancetype)initWithAVAsset:(__kindof AVAsset *)asset playModel:(__
}
- (nullable instancetype)initWithAVAsset:(__kindof AVAsset *)asset startPosition:(NSTimeInterval)startPosition playModel:(__kindof SJPlayModel *)playModel {
if ( asset == nil ) return nil;
return [self initWithAVPlayerItem:[AVPlayerItem playerItemWithAsset:asset] startPosition:startPosition playModel:playModel];
self = [super init];
if ( self ) {
self.avAsset = asset;
self.playModel = playModel;
self.startPosition = startPosition;
}
return self;
}

- (nullable instancetype)initWithAVPlayerItem:(AVPlayerItem *)playerItem {
Expand All @@ -30,7 +36,13 @@ - (nullable instancetype)initWithAVPlayerItem:(AVPlayerItem *)playerItem playMod
}
- (nullable instancetype)initWithAVPlayerItem:(AVPlayerItem *)playerItem startPosition:(NSTimeInterval)startPosition playModel:(__kindof SJPlayModel *)playModel {
if ( playerItem == nil ) return nil;
return [self initWithAVPlayer:[AVPlayer playerWithPlayerItem:playerItem] startPosition:startPosition playModel:playModel];
self = [super init];
if ( self ) {
self.avPlayerItem = playerItem;
self.playModel = playModel;
self.startPosition = startPosition;
}
return self;
}

- (nullable instancetype)initWithAVPlayer:(AVPlayer *)player {
Expand All @@ -49,18 +61,28 @@ - (nullable instancetype)initWithAVPlayer:(AVPlayer *)player startPosition:(NSTi
}
return self;
}
- (void)setAvAsset:(__kindof AVAsset * _Nullable)avAsset {
objc_setAssociatedObject(self, @selector(avAsset), avAsset, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (nullable __kindof AVAsset *)avAsset {
if ( self.original != nil ) return self.original.avAsset;
return objc_getAssociatedObject(self, _cmd);
}

- (void)setAvPlayerItem:(AVPlayerItem * _Nullable)avPlayerItem {
objc_setAssociatedObject(self, @selector(avPlayerItem), avPlayerItem, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (nullable AVPlayerItem *)avPlayerItem {
if ( self.original != nil ) return self.original.avPlayerItem;
return objc_getAssociatedObject(self, _cmd);
}

- (void)setAvPlayer:(AVPlayer * _Nullable)avPlayer {
objc_setAssociatedObject(self, @selector(avPlayer), avPlayer, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (nullable AVPlayer *)avPlayer {
if ( self.original != nil ) return self.original.avPlayer;
AVPlayer *player = objc_getAssociatedObject(self, _cmd);
if ( player == nil && self.mediaURL != nil ) {
player = [AVPlayer playerWithURL:self.mediaURL];
objc_setAssociatedObject(self, _cmd, player, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return player;
return objc_getAssociatedObject(self, _cmd);
}

- (nullable instancetype)initWithOtherAsset:(SJVideoPlayerURLAsset *)otherAsset playModel:(nullable __kindof SJPlayModel *)playModel {
Expand Down
2 changes: 1 addition & 1 deletion SJBaseVideoPlayer/SJBaseVideoPlayer.m
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ + (instancetype)player {
}

+ (NSString *)version {
return @"v3.2.0";
return @"v3.2.1";
}

- (void)setVideoGravity:(SJVideoGravity)videoGravity {
Expand Down

0 comments on commit 8d20068

Please sign in to comment.