全部产品
云市场

发布说明

更新时间:2019-07-31 16:29:28

v3.11.0

功能更新

  1. 提升片段录制起停的速度和录制合成的速度,分段录制更加流畅
  2. 优化录制进度回调粒度和精准度
  3. 精准控制gop,提升部分场景下的转码速度
  4. 优化切换摄像头耗时

接口变动

  1. 对外错误码统一,所有错误码统一到AliyunVideoCoreError
  2. 新增NSString* AlivcErrorMessage(int code);方法,获取错误描述

问题修复

  1. 修复gif帧数解析不准确的问题
  2. 修复特定视频倒播开始播放时卡顿问题
  3. 修复录制生成视频时长不精准的问题
  4. 修复多段录制输出视频音视频不同步

v3.10.5

功能更新

  1. 新增录制合拍功能(AliyunMixRecorder)
  2. 新增多轨道视频拼接(可以实现画中画,左右分屏等效果)(AliyunMixComposer)

v3.10.0

功能更新

  1. 编辑新增大魔王,小黄人音效
  2. 编辑新增mjpeg视频格式支持
  3. 编辑播放提升对部分损坏视频文件的兼容性
  4. 编辑新增draw方法支持强制绘制一帧

问题修复

  1. 录制修复小段录制视频时长不准确问题
  2. 录制修复添加水印后退后台水印消失的问题
  3. 录制修复切换前后摄像头卡顿的问题
  4. 编辑修复合成导出退后台可能导致崩溃的问题

v3.9.0

功能更新

  1. 新增音效接口,提供萝莉,大叔,混响,回声四种音效
  2. 提升编辑模块seek性能
  3. 提升SDK稳定性

v3.8.0

功能更新

  1. 提升录制稳定性
  2. 提升了选择裁剪时间的准确性
  3. 优化了编辑播放能力,流畅播放不卡顿
  4. 优化了编辑合成的速度
  5. 修复了一些bug
  6. 合成支持退后台返回继续合成
  7. 考虑到SDK稳定性监控和未来数据相关需求,短视频目前必须要依赖库: 手动集成需要添加 AlivcConan.framework cocoaPods集成 ‘pod ‘AlivcConan’, ‘0.9.0’ 可以参考demo

v3.7.7

功能更新

  1. SDK稳定性提升
  2. 裁剪,合成清晰度提升

v3.7.5

功能更新

  1. 修复导入iOS12系统生成的HEVC视频倒播显示异常的bug
  2. 修复编辑使用第三方渲染接口可能导致crash的bug
  3. 时间特效播放流畅度提升
  4. 导入GIF图片适配性增强
  5. 支持导入奇数分辨率视频
  6. 优化了多段录制音视频同步
  7. 提升稳定性

v3.7.0

功能更新

  1. 新增转场功能,包含淡入淡出、多边形转场、百叶窗等主流效果
  2. 新增特技效果接口,包含基本动画(旋转、平移、缩放、透明度)和自定义动画效果(线性擦除)
  3. 新增指定流、指定时间段添加高斯模糊效果
  4. 新增指定流、指定时间段添加显示模式(填充、裁剪)
  5. 新增配音接口,支持多段配音和变速
  6. 新增多段视频加多个变速时间特效(反复和倒放还是只支持单段视频的)

接口变动

  1. 编辑预览播放结束后需要调用replay接口,以前调用play接口
  2. 编辑新增prepare预加载数据接口,此接口在startEdit之后调用
  3. 水印的位置大小的参考坐标修改为输出分辨率坐标
  4. 在调用转场效果时,需要先调用stopEdit,然后调用转场,再调用startEdit
  5. AliyunPasterController删除delegate属性
  6. AliyunEditor删除destroyAllEffect接口
  7. QuCore-ThirdParty.framework改为alivcffmpeg.framework

v3.6.5.5

功能更新

  1. 兼容Xcode10.x

v3.6.5.3

功能更新

  1. 修复偶现录制添加mv锁屏导致的crash
  2. 修复倒播加特效滤镜时间不准确
  3. 修复部分视频色域显示不准确
  4. 支持aac sbr格式音频

v3.6.5

功能更新

  1. 修复偶现导出crash的bug
  2. 提升视频倒播流畅度

v3.6.0

功能更新

1.包大小和基本问题

AliyunVideoSDKPro.framework3.5.0 release包4.9M debug包10.1M3.6.0 release包7.6M debug包15.7M

QuCore-ThirdParty.framework3.5.0 release包9.3M debug包23.1M3.6.0 release包10.2M debug包23.2M

需要同时替换AliyunVideoSDKPro.framework和QuCore-ThirdParty.framework 否则会产生异常(如合成crash等)

audio 的部分log没有去掉

2.接口2.1 水印接口:-(void)setWaterMark: frame: 接口废弃启用: -(void)setWaterMark:示例: NSString watermarkPath = [[NSBundle mainBundle] pathForResource:@”watermark” ofType:@”png”]; AliyunEffectImage effectImage = [[AliyunEffectImage alloc] init]; effectImage.frame = CGRectMake(10, 10, 28, 20); effectImage.path = watermarkPath; [self.editor setWaterMark:effectImage];

2.2 片尾接口:3.6支持预览时查看 需要设置-(void)setTailWaterMark:示例: NSString tailWatermarkPath = [[NSBundle mainBundle] pathForResource:@”tail” ofType:@”png”]; AliyunEffectImage tailWatermark = [[AliyunEffectImage alloc] initWithFile:tailWatermarkPath]; tailWatermark.frame = CGRectMake(CGRectGetMidX(self.movieView.bounds) - 84 / 2, CGRectGetMidY(self.movieView.bounds) - 60 / 2, 84, 60); tailWatermark.endTime = 2; [self.editor setTailWaterMark:tailWatermark];

2.3 添加音乐接口:2.3.13.6版本支持多路音频混流 如果只需要加一路音频 需要调用remove接口示例: AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path]; [self.editor removeMusics];//只要一路音频的情况下可以调用 [self.editor applyMusic:music];

例如在我们的demo业务场景中,MV中包含的音乐和普通的音乐两个只能存在一个,所以:2.3.1.1 在加mv的时候需要调用 -(void)removeMusics 如: [self.editor removeMusics]; [self.editor applyMV:[[AliyunEffectMV alloc] initWithFile:str]]; [self.player replay];

2.3.1.2 在加音乐的时候需要调用 -(void)removeMVMusic 如:AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];

  1. [self.editor removeMVMusic];
  2. [self.editor removeMusics];
  3. [self.editor applyMusic:music];

2.3.23.6版本支持音乐选取自身的时间段进行播放如: AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path]; music.startTime = startTime; //音乐本身的开始播放时间 music.duration = duration; //音乐本身的播放持续时间 music.streamStartTime = streamStart [_player getStreamDuration]; //音乐在播放时间轴上的开始播放时间 music.streamDuration = streamDuration * [_player getStreamDuration]; //音乐在播放时间轴上的持续播放时间

2.4 3.6版本新增时间特效接口 接入到3.5不会产生兼容问题 具体代码参见3.6Demo示例

  1. AliyunEffectTimeFilter *timeFilter = [[AliyunEffectTimeFilter alloc] init];
  2. timeFilter.startTime = [_player getCurrentStreamTime];
  3. timeFilter.endTime = timeFilter.startTime + 1;
  4. timeFilter.type = TimeFilterTypeSpeed;
  5. timeFilter.param = 0.5;
  6. [self.editor applyTimeFilter:timeFilter];

2.5 由于有时间特效,播放器player有几个基本概念需要区别:/* 获取总时长,单位:秒 @return 总时长 /

  • (double)getDuration;

/* 获取当前播放时间,单位:秒 /

  • (double)getCurrentTime;

/* 获取原始视频流时长,单位:秒 @return 总时长 /

  • (double)getStreamDuration;

/* 获取原始视频流播放时间,单位:秒 /

  • (double)getCurrentStreamTime;

举例:例如:一个视频原本是15s,加全程快速2倍播放。 那么,从效果上看这个视频会被按照2倍去快速播放,此时,getDuration为 7.5s getCurrentTime为当前播放的时间(假如为3.5s),getStreamDuration为15s getCurrentStreamTime为7s(在getCurrentTime为3.5s的情况下)

再比如,原本视频15s,全程慢速2倍播放,那么getDuration为30s getCurrentTime假定为10s,则getStreamDuration为15s getCurrentStreamTime为7.5s

再再比如,原本视频为15s,全程倒播,那么getDuration为15s, getCurrentTime假定为6s,则getStreamDuration为15s,getCurrentStreamTime为9s

以上为全程的情况下 那么在局部(如局部变速和反复) 均按照以上的规则进行计算换算

2.6 由于有时间特效,Demo上导航条的交互变的复杂

2.6.1 新增时间特效显示

Demo中接口 -(void)addTimelineTimeFilterItem; 具体代码参见demo

2.6.2 时间特效和特效滤镜的相互影响

例如在全程变速的情况下加特效滤镜或者倒播的情况下加滤镜这个交互需要注意添加的时间段显示是否正确这部分的代码集中在3.6的

  • (void)didBeganLongPressEffectFilter:(AliyunEffectFilterInfo *)animtinoFilterInfo ;
  • (void)didTouchingProgress;
  • (void)didEndLongPress;

三个函数中,用户可以直接参考代码

  1. AliyunEffectFilter *animationFilter = [[AliyunEffectFilter alloc] initWithFile:[animtinoFilterInfo localFilterResourcePath]];
  2. float currentSec = [self.player getCurrentTime];
  3. float currentStreamSec = [self.player getCurrentStreamTime];
  4. animationFilter.startTime = currentSec;
  5. animationFilter.endTime = [self.player getDuration];
  6. animationFilter.streamStartTime = currentStreamSec; //新增 streamStartTime 如果在有时间特效的情况下需设置
  7. animationFilter.streamEndTime = [self.player getStreamDuration];//新增 如果在有时间特效的情况下需设置
  8. [self.editor applyAnimationFilter:animationFilter];

为了兼容老版本,如果在没有时间特效的情况下 仍然可以直接设置startTime和endTime 无需设置streamStartTime和streamEndTime

2.7 播放状态和接口调用的调整(如前后台切换,页面切换)

相比较3.5版本,3.6版本在内部对前后台切换和页面切换进行了处理,具体表现在:

2.7.1 -(void)setActive 弃用

2.7.2 viewWillAppear与viewWillDisappear的处理:viewWillDisappear时不需要stopEdit销毁整个AliyunEdit,只需要调用stop停止播放。同理,viewWillAppear时,只需要调用play重新播放。

2.7.3 退后台与返回前台的处理:退后台sdk会停止播放或导出,回前台默认会重新播放(或暂停)2.7.4 发生错误处理:3.6版本播放或导出发生错误时,会停止播放或导出,同时通过playError或exportError返回,用户可以根据情况处理。

2.8 AliyunImporter类接口调整

  • (void)addVideoWithPath:(NSString *)videoPath animDuration:(CGFloat)animDuration;
  • (void)addVideoWithPath:(NSString *)videoPath startTime:(CGFloat)startTime duration:(CGFloat)duration animDuration:(CGFloat)animDuration;
  • (NSString )addImage:(UIImage )image duration:(CGFloat)duration animDuration:(CGFloat)animDuration;以上三个接口废弃。 ——兼容老版本 调用暂时不会产生问题

新的接口通过构建 AliyunClip对象,调用 -(void)addMediaClip:(AliyunClip*)clip以添加视频片段示例:

  1. AliyunImporter *importor = [[AliyunImporter alloc] initWithPath:root outputSize:_compositionConfig.outputSize];
  2. AliyunClip *clip = [[AliyunClip alloc] initWithVideoPath:info.sourcePath startTime:info.startTime duration:info.duration animDuration:i == 0 ? 0 : 1];
  3. [importor addMediaClip:clip];

ReleaseNote:

1.新增时间特效功能 接口:

  • (int)applyTimeFilter:(AliyunEffectTimeFilter *)filter;
  • (int)removeTimeFilter;

2.AliyunImporter类接口进行调整废弃原本以下三个接口:

  • (void)addVideoWithPath:(NSString *)videoPath animDuration:(CGFloat)animDuration;
  • (void)addVideoWithPath:(NSString *)videoPath startTime:(CGFloat)startTime duration:(CGFloat)duration animDuration:(CGFloat)animDuration;
  • (NSString )addImage:(UIImage )image duration:(CGFloat)duration animDuration:(CGFloat)animDuration;

新的接口通过构建 AliyunClip对象,调用 -(void)addMediaClip:(AliyunClip)clip以添加视频片段示例: AliyunImporter importor = [[AliyunImporter alloc] initWithPath:root outputSize:_compositionConfig.outputSize]; AliyunClip *clip = [[AliyunClip alloc] initWithVideoPath:info.sourcePath startTime:info.startTime duration:info.duration animDuration:i == 0 ? 0 : 1]; [importor addMediaClip:clip];

3.播放状态和接口调用的调整相比较3.5版本,3.6版本在内部对前后台切换和页面切换进行了处理,具体表现在:3.1-(void)setActive 弃用3.2viewWillAppear与viewWillDisappear的处理:viewWillDisappear时不需要stopEdit销毁整个AliyunEdit,只需要调用stop停止播放。同理,viewWillAppear时,只需要调用play重新播放。3.3退后台与返回前台的处理:退后台sdk会停止播放或导出,回前台默认会重新播放(或暂停)3.4发生错误处理:3.6版本播放或导出发生错误时,会停止播放或导出,同时通过playError或exportError返回,用户可以根据情况处理。

4.播放器新增接口

  • (double)getStreamDuration; //获取原始视频流时长,单位:秒
  • (double)getCurrentStreamTime; //获取原始视频流播放时间,单位:秒

5.水印-(void)setWaterMark: frame: 接口废弃 新接口 -(void)setWaterMark:(AliyunEffect*)waterMark;6.片尾水印支持预览 需调用-(void)setTailWaterMark:接口7.音乐接口调整 支持多路音频流 支持选择音频时间段播放 如果只需要加一路音频 需要调用remove接口

示例: AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path]; [self.editor removeMusics];//只要一路音频的情况下可以调用 [self.editor applyMusic:music];

例如在我们的demo业务场景中,MV中包含的音乐和普通的音乐两个只能存在一个,所以:在加mv的时候需要调用 -(void)removeMusics 如: [self.editor removeMusics]; [self.editor applyMV:[[AliyunEffectMV alloc] initWithFile:str]]; [self.player replay];

在加音乐的时候需要调用 -(void)removeMVMusic 如:AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];

  1. [self.editor removeMVMusic];
  2. [self.editor removeMusics];
  3. [self.editor applyMusic:music];

支持音乐选取自身的时间段进行播放示例: AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path]; music.startTime = startTime; //音乐本身的开始播放时间 music.duration = duration; //音乐本身的播放持续时间 music.streamStartTime = streamStart [_player getStreamDuration]; //音乐在播放时间轴上的开始播放时间 music.streamDuration = streamDuration * [_player getStreamDuration]; //音乐在播放时间轴上的持续播放时间