All Products
Search
Document Center

Release notes

Last Updated: Aug 19, 2019

Feature updates

  1. Improved the start and stop speeds of clip recording and the video production speed, enabling smoother clip recording.
  2. Optimized the granularity and accuracy of the recording progress callback.
  3. Improved the transcoding speed in some scenarios through precise control of the GOP size.
  4. Reduced the time required to switch between cameras.

Method changes

  1. Integrated all error codes to AliyunVideoCoreError.
  2. Added the NSString* AlivcErrorMessage(int code); method for obtaining the error description.

Bug fixes

  1. Fixed the bug that the number of frames in a GIF image is incorrectly parsed.
  2. Fixed the bug that certain videos freeze when being played reversely.
  3. Fixed the bug of inaccurate duration of a recorded video.
  4. Fixed the bug that audio and image of a multi-clip video are not synchronized.

v3.10.5

Feature updates

  1. Added the AliyunMixRecorder class to provide the duet feature.
  2. Added the AliyunMixComposer class for producing a video from multiple videos. This class can be used to achieve effects such as picture-in-picture and left-right split-screen.

v3.10.0

Feature updates

  1. Supported adding the big devil and Minions sound effects during editing.
  2. Supported editing videos in the MJPEG format.
  3. Improved compatibility with some damaged video files for playback during editing.
  4. Added the draw method to forcibly draw a frame during editing.

Bug fixes

  1. Fixed the bug that the duration is displayed incorrectly for a recorded video clip.
  2. Fixed the bug that the watermark added during recording disappears when the application is switched to the background.
  3. Fixed the issue of frame freezing that occurs when you switch between the front and rear cameras during recording.
  4. Fixed the crash that may occur when the application is switched to the background during production.

V3.9.0

Feature updates

  1. Added the sound effects of lolita, uncle, reverberation, and echo.
  2. Improved the seeking performance during editing.
  3. Improved SDK stability.

V3.8.0

Feature updates

  1. Improved recording stability.
  2. Improved the accuracy in time selection during cropping.
  3. Optimized the playback capability during editing to ensure smooth playback.
  4. Improved the production speed.
  5. Fixed some bugs.
  6. Supported resuming production after the application is switched to the foreground from the background.
  7. Changed the AlivcConan framework as a required dependency to meet the requirement of SDK stability monitoring and data-related requirements in the future.Manual integration: Add AlivcConan.framework.CocoaPods integration: Add pod ‘AlivcConan’, ‘0.9.0’ to Podfile.For more information, see the demo.

V3.7.7

Feature updates

  1. Improved SDK stability.
  2. Improved the definition of cropped and produced videos.

V3.7.5

Feature updates

  1. Fixed the display exception that occurs during the reverse playback of HEVC videos generated by iOS 12.
  2. Fixed the crash that may occur when a third-party rendering interface is used in editing.
  3. Improved the playback smoothness of videos with time effects.
  4. Improved the compatibility with GIF images.
  5. Supported importing videos whose resolution consists of odd numbers.
  6. Optimized audio and video synchronization during multi-clip recording.
  7. Improved stability.

V3.7.0

Feature updates

  1. Added the transition feature, including mainstream effects such as fade, polygon, and shutter.
  2. Added the animation feature, including basic animations (rotation, translation, scaling, and alpha) and custom animations (linear erasure).
  3. Supported adding the Gaussian blur effect to the specified stream in the specified time period.
  4. Supported setting the display mode (padding and cropping) for the specified stream in the specified time period.
  5. Added the dubbing feature, including multi-track dubbing and speed adjustment.
  6. Supported adding multiple speed control effects to multiple videos. (The repetition and reverse playback effects can still be configured for a single video.)

Method changes

  1. Changed the method to be called after preview playback ends from play to replay.
  2. Added the prepare method for preloading data, which is called after startEdit.
  3. Changed the reference coordinates of the watermark position and size to the output resolution coordinates.
  4. Modified the logic for adding a transition. You need to call the stopEdit method before adding a transition. After the transition is added, call the startEdit method.
  5. Deleted the delegate property from the AliyunPasterController class.
  6. Deleted the destroyAllEffect method from the AliyunEditor class.
  7. Changed the name of QuCore-ThirdParty.framework to alivcffmpeg.framework.

V3.6.5.5

Feature updates

  1. Compatible with Xcode 10.

V3.6.5.3

Feature updates

  1. Fixed the crash that occasionally occurs if the screen is locked when you add an MV during recording.
  2. Fixed the bug that an animated filter is not displayed in the specified time period during the reverse playback.
  3. Fixed the bug that some videos are not displayed in the correct color.
  4. Supported audio files in the AAC SBR format.

V3.6.5

Feature updates

  1. Fixed the crash that occasionally occurs during production.
  2. Improved the reverse playback smoothness.

V3.6.0

Feature updates

  1. Framework file size and basic issues

AliyunVideoSDKPro.frameworkV3.5.0: 4.9 MB in the Release folder and 10.1 MB in the Debug folderV3.6.0: 7.6 MB in the Release folder and 15.7 MB in the Debug folder

QuCore-ThirdParty.frameworkV3.5.0: 9.3 MB in the Release folder and 23.1 MB in the Debug folderV3.6.0: 10.2 MB in the Release folder and 23.2 MB in the Debug folder

You need to replace AliyunVideoSDKPro.framework and QuCore-ThirdParty.framework at the same time. Otherwise, exceptions such as a crash during production will occur.

Some audio logs are not removed.

  1. Method changes2.1 WatermarkDeprecated method: -(void)setWaterMark: frame:New method: -(void)setWaterMark:Example: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 End watermark: Supported viewing the end watermark during preview. You need to call the setTailWaterMark method to set an end watermark.-(void)setTailWaterMark:Example: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 Music2.3.1Supported mixing multiple audio streams. To add only one audio stream, you need to call the method for removing music first.Example:AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];[self.editor removeMusics];// Call the removeMusics method first if you want to add only one audio stream.[self.editor applyMusic:music];

For example, in the business scenario of the demo, MV music and common music cannot coexist. You need to do as follows:2.3.1.1 To add an MV, call the removeMusics method first.[self.editor removeMusics];[self.editor applyMV:[[AliyunEffectMV alloc] initWithFile:str]];[self.player replay];

2.3.1.2 To add common music, call the removeMVMusic method first.AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];

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

2.3.2Supported playing the specified part of a music stream.Example:AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path];music.startTime = startTime; // Sets the start time of the part to be played in the music stream.music.duration = duration; // Sets the duration of the part to be played in the music stream.music.streamStartTime = streamStart [_player getStreamDuration]; // Sets the time when the music stream starts to be played in the playback timeline.music.streamDuration = streamDuration * [_player getStreamDuration]; // Sets the playback duration of the music stream in the playback timeline.

2.4 New methods for configuring time effects (For more information about the code, see the demo of V3.6.0.)Example

  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 New basic concepts about the player when time effects are added/*Obtains the total playback duration. Unit: seconds.@return The total duration. /

  • (double)getDuration;

/*Obtains the current playback position. Unit: seconds. /

  • (double)getCurrentTime;

/*Obtains the duration of the original video stream. Unit: seconds.@return The total duration. /

  • (double)getStreamDuration;

/*Obtains the playback position in the original video stream. Unit: seconds. /

  • (double)getCurrentStreamTime;

Example 1:The duration of a video is 15s and the entire video is played at twice the speed.Then,getDuration returns 7.5s and getStreamDuration returns 15s.If getCurrentTime returns 3.5s, getCurrentStreamTime returns 7s.

Example 2: The duration of a video is 15s and the entire video is played at half the speed.Then, getDuration returns 30s and getStreamDuration returns 15s.If getCurrentTime returns 10s, getCurrentStreamTime returns 5s.

Example 3: The duration of a video is 15s and the entire video is played reversely.Then, getDuration returns 15s and getStreamDuration returns 15s.If getCurrentTime returns 6s, getCurrentStreamTime returns 9s.

In the preceding examples, the time effect is applied to the entire video. If the time effect is applied only to a part of the video, the playback duration, stream duration, and playback positions are calculated according to the same rules.

2.6 Changes to the interaction with the progress bar in the demo

2.6.1 Added the new time effect display method: -(void)addTimelineTimeFilterItem.

For more information about the code, see the demo.

2.6.2 Time effects affect animated filters.

If you add an animated filter when the playback speed is adjusted in the entire video or the entire video is played reversely, make sure that the animated filter is displayed in the desired time period.The related code is located in the following methods in V3.6.0:

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

Reference code for the three methods is as follows:

  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; // The streamStartTime property is new. It needs to be set when a time effect is applied.
  7. animationFilter.streamEndTime = [self.player getStreamDuration];// The streamEndTime property is new. It needs to be set when a time effect is applied.
  8. [self.editor applyAnimationFilter:animationFilter];

For compatibility with earlier versions, you can still set the startTime and endTime properties when no time effect is applied. In this case, streamStartTime and streamEndTime are not required.

2.7 Playback status adjustment and the methods that need to be called upon events such as switching between the foreground and background and screen switching

Compared with V3.5.0, the events of switching between the foreground and background and screen switching are handled internally in V3.6.0.

2.7.1 Deprecated method: -(void)setActive

2.7.2 Handling of viewWillAppear and viewWillDisappear: When the viewWillDisappear callback is received, you do not need to call the stopEdit method to destroy the entire AliyunEdit instance. Instead, you only need to call the stop method to stop the playback. Similarly, when the viewWillAppear callback is received, you only need to call the play method to start the playback again.

2.7.3 Handling when the application is switched to the background or foreground: When the application is switched to the background, the SDK stops the playback or production. When the application is switched to the foreground, the SDK starts or pauses the playback by default.2.7.4 Error handling: In V3.6.0, when an error occurs during the playback or production, the playback or production is stopped, and the error is returned through playError or exportError. You can handle the error as needed.

2.8 Method adjustment of the AliyunImporter class

  • -(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)animDurationThe preceding three methods are deprecated. For compatibility with earlier versions, the preceding methods can still be used in V3.6.0.

In V3.6.0, you can construct an AliyunClip object and call the -(void)addMediaClip:(AliyunClip*)clip method to add a video clip.Example:

  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];

Release notes:

  1. Added the time effect feature. The related methods are as follows:
  • (int)applyTimeFilter:(AliyunEffectTimeFilter *)filter
  • (int)removeTimeFilter
  1. Adjusted methods of the AliyunImporter class.Deprecated the following three methods:
  • -(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

In V3.6.0, you can construct an AliyunClip object and call the -(void)addMediaClip:(AliyunClip)clip method to add a video clip.Example: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];

  1. Adjusted the playback status and method calling.Compared with V3.5.0, the events of switching between the foreground and background and screen switching are handled internally in V3.6.0.3.1 Deprecated method: -(void)setActive3.2 Handling of viewWillAppear and viewWillDisappear: When the viewWillDisappear callback is received, you do not need to call the stopEdit method to destroy the entire AliyunEdit instance. Instead, you only need to call the stop method to stop the playback. Similarly, when the viewWillAppear callback is received, you only need to call the play method to start the playback again.3.3 Handling when the application is switched to the background or foreground: When the application is switched to the background, the SDK stops the playback or production. When the application is switched to the foreground, the SDK starts or pauses the playback by default.3.4 Error handling: In V3.6.0, when an error occurs during the playback or production, the playback or production is stopped, and the error is returned through playError or exportError. You can handle the error as needed.

  2. Added the following methods for the player:

  • (double)getStreamDuration; // Obtains the duration of the original stream. Unit: seconds.
  • (double)getCurrentStreamTime; // Obtains the playback position in the original video stream. Unit: seconds.
  1. Deprecated the -(void)setWaterMark: frame: method and added the new method -(void)setWaterMark:(AliyunEffect*)waterMark; for setting a watermark.
  2. Supported the -(void)setTailWaterMark: method to set an end watermark during preview.
  3. Adjusted music-related methods.

Supported mixing multiple audio streams.Supported playing the specified part of a music stream.To add only one audio stream, you need to call the method for removing music first.

Example:

  1. AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
  2. [self.editor removeMusics];// Call the removeMusics method first if you want to add only one audio stream.
  3. [self.editor applyMusic:music];

For example, in the business scenario of the demo, MV music and common music cannot coexist. You need to do as follows:To add an MV, call the removeMusics method first.

  1. [self.editor removeMusics];
  2. [self.editor applyMV:[[AliyunEffectMV alloc] initWithFile:str]];
  3. [self.player replay];

To add common music, call the removeMVMusic method first.

  1. AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
  2. [self.editor removeMVMusic];
  3. [self.editor removeMusics];
  4. [self.editor applyMusic:music];

Supported playing the specified part of a music stream.Example:

  1. AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
  2. music.startTime = startTime; // Sets the start time of the part to be played in the music stream.
  3. music.duration = duration; // Sets the duration of the part to be played in the music stream.
  4. music.streamStartTime = streamStart * [_player getStreamDuration]; // Sets the time when the music stream starts to be played in the playback timeline.
  5. music.streamDuration = streamDuration * [_player getStreamDuration]; // Sets the playback duration of the music stream in the playback timeline.