|
@@ -31,10 +31,6 @@
|
|
|
//公用类相关
|
|
|
#import "AliyunDBHelper.h"
|
|
|
#import "AliyunPathManager.h"
|
|
|
-#import "AliyunTimelineItem.h"
|
|
|
-#import "AliyunTimelineMediaInfo.h"
|
|
|
-#import "AliyunTimelineView.h"
|
|
|
-
|
|
|
#import "AliyunCoverPickViewController.h"
|
|
|
#import "AliyunPublishService.h"
|
|
|
|
|
@@ -54,13 +50,6 @@
|
|
|
|
|
|
#import "RainbowPlanet-Swift.h"
|
|
|
|
|
|
-//用户操作事件,目前特效里长按特效和缩略图滑动互斥,长按特效优先
|
|
|
-typedef NS_ENUM(NSInteger, AliyunEditUserEvent) {
|
|
|
- AliyunEditUserEvent_None, //当前用户无操作
|
|
|
- AliyunEditUserEvent_Effect_LongPress, //特效长按
|
|
|
- AliyunEditUserEvent_Effect_Slider, //特效缩略图滑动
|
|
|
-};
|
|
|
-
|
|
|
typedef enum : NSUInteger {
|
|
|
AlivcEditVCStatus_Normal = 0, //播放或者暂停状态 - 非编辑状态
|
|
|
AlivcEditVCStatus_Edit, //编辑状态
|
|
@@ -72,7 +61,6 @@ typedef enum : NSUInteger {
|
|
|
AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDelegate>
|
|
|
|
|
|
@property(nonatomic, strong) UIView *movieView;
|
|
|
-@property(nonatomic, strong) AliyunTimelineView *currentTimelineView;
|
|
|
@property(nonatomic, strong) UIButton *backgroundTouchButton;
|
|
|
@property(nonatomic, strong) UILabel *currentTimeLabel;
|
|
|
@property(nonatomic, strong) UILabel *totalTimeLabel;
|
|
@@ -90,10 +78,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
@property(nonatomic, strong) AliyunEffectFilterView *filterView;
|
|
|
@property (nonatomic, strong) UIView *rateViewWithDim;
|
|
|
|
|
|
-/**
|
|
|
- 用户操作的记录
|
|
|
- */
|
|
|
-@property(nonatomic, assign) AliyunEditUserEvent userAction;
|
|
|
|
|
|
/**
|
|
|
保存的时间特效
|
|
@@ -112,11 +96,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
@property(nonatomic, assign) BOOL exportFinished;
|
|
|
@property(nonatomic, assign) BOOL exportFailed;
|
|
|
|
|
|
-/**
|
|
|
- 是否是编辑时间的拖动动作
|
|
|
- */
|
|
|
-@property(nonatomic, assign) BOOL isEidtTuchAction;
|
|
|
-
|
|
|
@property(nonatomic, assign) CGSize outputSize;
|
|
|
@property(nonatomic, strong) AliyunCustomFilter *filter;
|
|
|
|
|
@@ -150,8 +129,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
BOOL _prePlaying; //是:播放中,否:不在播放中
|
|
|
BOOL _tryResumeWhenBack; //本界面的基础上跳转其他界面,回来的时候,尝试继续播放
|
|
|
AliyunEffectFilter *_processAnimationFilter;
|
|
|
- AliyunTimelineFilterItem *_processAnimationFilterItem;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
#pragma mark - System
|
|
@@ -379,8 +356,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
[super viewWillAppear:animated];
|
|
|
self.isAppear = YES;
|
|
|
[[UIApplication sharedApplication]setStatusBarHidden:YES];
|
|
|
- //为了让导航条播放时长匹配,必须在这里设置时长
|
|
|
- self.currentTimelineView.actualDuration = [self.player getStreamDuration];
|
|
|
if (_tryResumeWhenBack) {
|
|
|
if (!_prePlaying) {
|
|
|
[self resume];
|
|
@@ -564,7 +539,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
#pragma mark - ButtonAction
|
|
|
|
|
|
- (void)playControlClick:(UIButton *)sender {
|
|
|
- _isEidtTuchAction = NO;
|
|
|
[self playButtonTouchedHandle];
|
|
|
}
|
|
|
|
|
@@ -703,7 +677,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
}
|
|
|
if (self.vcStatus == AlivcEditVCStatus_Edit) { //编辑状态下,app进入前台,手动同步播放器播放进度到缩略图。
|
|
|
[self play];
|
|
|
- [self.currentTimelineView seekToTime:[self.player getCurrentTime]];
|
|
|
}
|
|
|
if (!_exportFinished && !_exportFailed) {
|
|
|
[[AliyunPublishService service] exportWithTaskPath:_taskPath
|
|
@@ -717,10 +690,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
- (void)applicationWillResignActive {
|
|
|
if (self.isAppear) {
|
|
|
self.isBackground = YES;
|
|
|
-
|
|
|
- // app退到后台前先停止滑动,否则播放器状态在特定情境下会出现异常
|
|
|
- [self.currentTimelineView stopSlid];
|
|
|
- NSLog(@"\n ++++>程序挂起!");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -842,11 +811,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
if (canEditFrame) {
|
|
|
[self p_changeUIToEnterEditFrameModeCompletionHandle:completion];
|
|
|
[self pause];
|
|
|
- //每次进入编辑模式,同步播放器进度到timelineView
|
|
|
- [self.currentTimelineView setActualDuration:[self.player
|
|
|
- getStreamDuration]];
|
|
|
- CGFloat time = [self.player getCurrentStreamTime];
|
|
|
- [self.currentTimelineView seekToTime:time];
|
|
|
} else {
|
|
|
[self p_presentBackgroundButton];
|
|
|
}
|
|
@@ -865,8 +829,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
CompletionHandle:(void (^__nullable)(BOOL finished))completion {
|
|
|
_vcStatus = AlivcEditVCStatus_Normal;
|
|
|
|
|
|
- _isEidtTuchAction = NO;
|
|
|
-
|
|
|
CGFloat animationTime = 0.2f;
|
|
|
UIView *view = [self editViewWithType:type];
|
|
|
if (view) {
|
|
@@ -1137,11 +1099,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
}
|
|
|
|
|
|
- (void)playProgress:(double)playSec streamProgress:(double)streamSec {
|
|
|
- if (!_isEidtTuchAction) {
|
|
|
- // 1.添加动图并且调整遮罩层时,_isEidtTuchAction 为YES为了保持缩略条不动。
|
|
|
- // 2.添加动图时,如果遮罩层在动,那么对于缩略图来说,他不能动,因为如果2者同时动的话,用户体验不好,所有有这个判断
|
|
|
- [self.currentTimelineView seekToTime:streamSec];
|
|
|
- }
|
|
|
|
|
|
self.currentTimeLabel.text = [self stringFromTimeInterval:streamSec];
|
|
|
|
|
@@ -1150,10 +1107,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
self.playSlider.value = time;
|
|
|
}
|
|
|
|
|
|
-- (void)seekDidEnd {
|
|
|
- NSLog(@"seek end");
|
|
|
-}
|
|
|
-
|
|
|
- (NSString *)stringFromTimeInterval:(NSTimeInterval)interval {
|
|
|
NSInteger ti = (NSInteger)interval;
|
|
|
NSInteger seconds = ti % 60;
|
|
@@ -1271,71 +1224,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
[self.navigationController pushViewController:vc animated:YES];
|
|
|
}
|
|
|
|
|
|
-#pragma mark - AliyunTimelineView相关 -
|
|
|
-- (void)addAnimationFilterToTimeline:(AliyunEffectFilter *)animationFilter {
|
|
|
- AliyunTimelineFilterItem *filterItem = [[AliyunTimelineFilterItem alloc] init];
|
|
|
- NSLog(@"边缘特效:%f--%f", animationFilter.streamStartTime, animationFilter.streamEndTime);
|
|
|
-
|
|
|
- filterItem.startTime = animationFilter.streamStartTime;
|
|
|
- filterItem.endTime = animationFilter.streamEndTime;
|
|
|
-
|
|
|
- NSLog(@"特效结束时间%f--%f", filterItem.startTime, filterItem.endTime);
|
|
|
-
|
|
|
-
|
|
|
- filterItem.obj = animationFilter;
|
|
|
- [self.currentTimelineView addTimelineFilterItem:filterItem];
|
|
|
-}
|
|
|
-
|
|
|
-- (void)updateAnimationFilterToTimeline:(AliyunEffectFilter *)animationFilter {
|
|
|
- if (_processAnimationFilterItem == NULL) {
|
|
|
- _processAnimationFilterItem = [[AliyunTimelineFilterItem alloc] init];
|
|
|
- }
|
|
|
-
|
|
|
- _processAnimationFilterItem.startTime = animationFilter.streamStartTime;
|
|
|
- _processAnimationFilterItem.endTime = animationFilter.streamEndTime;
|
|
|
-
|
|
|
- [self.currentTimelineView updateTimelineFilterItems:_processAnimationFilterItem];
|
|
|
-}
|
|
|
-
|
|
|
-- (void)removeAnimationFilterFromTimeline:(AliyunTimelineFilterItem *)animationFilterItem {
|
|
|
- [self.currentTimelineView removeTimelineFilterItem:animationFilterItem];
|
|
|
-}
|
|
|
-
|
|
|
-- (void)removeLastAnimtionFilterItemFromTimeLineView {
|
|
|
- [self.currentTimelineView removeLastFilterItemFromTimeline];
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-#pragma mark - AliyunTimelineViewDelegate -
|
|
|
-
|
|
|
-//时间轴拖动事件
|
|
|
-- (void)timelineBeginDragging {
|
|
|
- self.userAction = AliyunEditUserEvent_Effect_Slider;
|
|
|
-}
|
|
|
-
|
|
|
-- (void)timelineDraggingAtTime:(CGFloat)time {
|
|
|
- [self.player seek:time];
|
|
|
- self.currentTimeLabel.text = [self stringFromTimeInterval:time];
|
|
|
- [self updateUIAndDataWhenPlayStatusChanged];
|
|
|
-}
|
|
|
-
|
|
|
-- (void)timelineEndDraggingAndDecelerate:(CGFloat)time {
|
|
|
- _isEidtTuchAction = NO;
|
|
|
-
|
|
|
- [self.player seek:time];
|
|
|
- if (_prePlaying) {
|
|
|
- [self resume];
|
|
|
- }
|
|
|
- self.userAction = AliyunEditUserEvent_None;
|
|
|
-}
|
|
|
-
|
|
|
-- (void)timelineEditDraggingAtTime:(CGFloat)time {
|
|
|
- _isEidtTuchAction = YES;
|
|
|
- [self.player seek:time];
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
#pragma mark -
|
|
|
//滤镜
|
|
|
- (void)filterButtonClicked {
|
|
@@ -1456,7 +1344,6 @@ AliyunIExporterCallback, AliyunIPlayerCallback, AliyunMusicPickViewControllerDel
|
|
|
self.currentTimeFilter = nil;
|
|
|
[_editor removeTimeFilter];
|
|
|
[self resume];
|
|
|
- [_currentTimelineView removeAllTimelineTimeFilterItem];
|
|
|
}
|
|
|
|
|
|
@end
|