V3.23.0

Feature updates

  • The draft box feature is added. The feature allows you to export drafts.
  • Features for subtitles, such as background color and alignment, are added.
  • Echoes can be removed during duet recording.
  • Queen SDK is provided to replace the retouching module in the demo.
  • Six split-screen filter effects are added to the demo.
  • The temporary video file can be automatically deleted during recording.
  • High Dynamic Range (HDR) video editing and cropping are supported.

V3.22.0

Feature updates

  • The word art function is provided in the editing module.
  • Duet recording from different recording sources is supported.
  • Partial screenshots can be taken.
  • The built-in time variable BUILTIN_PROGRESS is added to the custom effect class Shader.
  • The stability of the short video SDK for iOS is improved in specific scenarios.

SDK changes

  • The following API is added:

    (AliyunStickerManager *)getStickerManager

  • The following APIs are deprecated:
    • (AliyunPasterManager *)getPasterManager
    • (id<AliyunIPasterRender>)getPasterRender

V3.21.0

Feature updates

  • View levels can be adjusted and borders can be configured for duet recording.
  • Mirrored videos can be imported and edited.
  • The memory usage during software encoding is improved.
  • The stability of the short video SDK for iOS is improved.

V3.20.0

Feature updates

  • The audio fade-in and fade-out effects are added to the editing module.
  • The subtitle combination feature is added to the editing module.
  • The basic editing capability is added to the editing module.
  • The capability to obtain thumbnails at specified timestamps is added.
  • The issue where the frame rate that is set for the exported video does not take effect is fixed.
  • The stability of the short video SDK for iOS is improved.

V3.19.0

Feature updates

  • The noise reduction feature is added to the editing module.
  • The background image and background color can be set during duet recording and video merging.
  • Audio tracks can be merged during duet recording and video merging.
  • Echoes can be removed during duet recording.
  • The issue where the halo color changes when a transparent halo effect is applied to a watermark or an image is fixed.
  • The issue where added static images are not rotated to the expected angle is fixed.

SDK changes

The following APIs are deprecated:

AliyunCamera & AliyunIRecorder, @property(nonatomic, assign) BOOL useAudioSessionModeVideoRecording

V3.18.1

Feature updates

The issue where a memory leak occurs when hardware encoding is used on specific iOS phone models is fixed.

V3.18.0

Feature updates

Audio track options are added for duet recording. You can use the original audio track or recorded audio tracks, or mute the audio.

V3.17.1

Feature updates

  • The scaling mode is supported for front cameras.
  • The issue where Open Graphics Library (OpenGL) unexpectedly quits applications on specific phone models after a video is produced is fixed.

V3.17.0

Feature updates

  • The lively female voice effect is optimized and the voice effects of Chinese dialects are added.
  • The issue where the screen becomes green when a video that is shot on iPhone 12 is imported to the cropping or editing module is fixed.

V3.16.2

Feature updates

The Gaussian blur effect for backgrounds is improved.

V3.16.1

Feature updates

The issue where a recorded video cannot be merged with an existing video whose length is shorter than that of the recorded video is fixed.

V3.16.0

Feature updates

  • The mainstream animation effects are restored.
  • The issue of intermittent unexpected quits that users report online is fixed.
  • The issue where stuttering may occur during the playback of long videos is fixed.
  • The issue where the watermark is not displayed in the expected direction when a video is recorded in landscape mode is fixed.

V3.15.0

Feature updates

  • The issue where stuttering occurs during the playback of produced videos is fixed.
  • The issue where the speed of multiple clips cannot be changed at the same time is fixed.
  • Two sets of transitions, filter effect transitions, and filters are added based on the standards for producing custom effects.

SDK changes

  • A method to modify the parameters of custom effects in real time is added.
  • The features of custom filters and transitions are supported. For more information about the standards of producing custom effects, see the official documentation.

V3.14.0

Feature updates

  • The cropping module is optimized to prevent color distortion when a video is cropped multiple times.
  • The stability of the recording module is optimized to deal with exceptions, such as unexpected background exit and hardware resource occupation.
  • Known memory leaks are fixed and the performance of specific modules is optimized.

Fixed issues

  • The issue where intermittent unexpected quits occur when the application is switched to the background during recording is fixed.
  • The issue where exceptions occur when audio resources are occupied during recording is fixed.
  • The issue where the background color setting does not take effect is fixed.
  • The issue where a part of the playback image is enlarged after the view of the editing module is changed on iOS devices is fixed.
  • Known issues, such as specific memory leaks, are fixed.

SDK changes

The AliyunVideoSDKPro.framework dynamic framework is split into the AliyunVideoSDKPro.framework static framework and AliyunVideoCore.framework dynamic framework. To manually integrate the short video SDK for iOS,

see Project configuration.

V3.13.0

Feature updates

  • The stability and performance of the recording module are optimized.
  • The Render And Compute Everything (RACE) engine-based retouching effects are added to the recording module.
  • The fluency of H.265 videos is improved in the editing module.

SDK changes

The method for the music video (MV) effect is deprecated. The feature of adding the MV effect is removed.

V3.12.0

Feature updates

  • The feature of log analysis is supported. The AliyunVideoSDKInfo setDebugLogLevel method is added to specify whether to enable the feature. The following three options are provided:
    AlivcDebugLogClose: disables the feature of log analysis.
    AlivcDebugLogNormal: analyzes warning or error logs. We recommend that you use this option to analyze logs.
    AlivcDebugLogAll: analyzes all logs. We recommend that you use this option only for troubleshooting. However, we recommend that you do not use this option in the official release since this option is only used to analyze the logs of the short video SDK for iOS.                       
  • The performance of the editing module is improved.

Fixed issues

The issue where the recording process is stopped but the corresponding thread is still running is fixed.

SDK changes

The applyRunningDisplayMode method is deleted from the editing module.

V3.11.0

Feature updates

  • The start and stop speeds for clip recording and the video production speed are improved, which allows smoother clip recording.
  • The granularity and accuracy of the recording progress callback are improved.
  • The transcoding speed in specific scenarios is improved by precisely adjusting the group of pictures (GOP) size.
  • The time that is required to switch between cameras is reduced.

Fixed issues

  • The issue where the number of frames in a GIF image is incorrectly parsed is fixed.
  • The issue where some videos stutter when the videos are played in reverse is fixed.
  • The issue where the duration of a recorded video is inaccurate is fixed.
  • The issue where the audio and image of a multi-clip video are not synchronized is fixed.

SDK changes

  • All error codes are integrated into AliyunVideoCoreError.
  • The NSString* AlivcErrorMessage(int code) method is added.

V3.10.5

Feature updates

  • The AliyunMixRecorder API is added.to record videos in duet mode.
  • The AliyunMixComposer API is added to achieve effects such as picture-in-picture (PiP) and left-right split-screen.

V3.10.0

Feature updates

  • The sinister and minion voice effects are added to the editing module.
  • Videos in the MJPEG format can be edited.
  • The compatibility for damaged video files is improved for playback during editing.
  • The draw method is added to forcibly draw a frame during editing.

Fixed issues

  • The issue where the duration is not accurately displayed for a recorded video clip is fixed.
  • The issue where the watermark that is added during recording disappears when the application is switched to the background is fixed.
  • The issue where stuttering occurs when you switch between the front and rear cameras during recording is fixed.
  • The issue where an unexpected quit may occur when the application is switched to the background during production is fixed.

V3.9.0

Feature updates

  • New voice effects are added, including lively female voice, husky male voice, reverberation, and echo.
  • The seeking performance during editing is improved.
  • The stability of the short video SDK for iOS is improved.

V3.8.0

Feature updates

  • The recording stability is improved.
  • The accuracy of time selection during cropping is improved.
  • The playback capability during editing is optimized to ensure smooth playback.
  • The video editing and production speeds are improved.
  • Specific issues are fixed.
  • The production can be resumed after an application is switched to the background.
  • To meet the requirement of SDK stability monitoring and data-related requirementsin manual integration, you must add AlivcConan.framework as the dependent framework. In CocoaPods integration, you must add pod 'AlivcConan', '0.9.0' to Podfile. For more information, see the demo.

V3.7.7

Feature updates

  • The stability of the short video SDK for iOS is improved.
  • The resolution of cropped and produced videos is improved.

V3.7.5

Feature updates

  • The issue where a display exception occurs during the reverse playback of High Efficiency Video Coding (HEVC) videos that are generated by iOS 12 is fixed.
  • The issue where unexpected quits may occur when a third-party rendering API is used in editing is fixed.
  • The playback smoothness of videos with time effects is improved.
  • The compatibility with GIF images is improved.
  • Videos with odd resolution can be imported.
  • Audio and video synchronization during multi-clip recording is optimized.
  • The stability is improved.

V3.7.0

Feature updates

  • The transition feature is supported with major effects, such as fade-in and fade-out, polygon, and blinds.
  • The animation feature is supported with basic animations, such as rotation, shifting, scaling, and transparency adjustment, and custom animations, such as linear erasure.
  • The Gaussian blur effect can be added to the specified stream at a specified time period.
  • The display mode, including padding and cropping, can be set for specified streams or at specified time periods.
  • The dubbing feature is supported with multi-track dubbing and speed adjustment.
  • Multiple speed ramping effects are added to a multi-clip video. The repetition and reverse playback effects can be configured only for a single-clip video.

SDK changes

  • The method to be called after preview ends is changed from play to replay.
  • The prepare method is added to preload data, which is called after the startEdit method is called.
  • The reference coordinates of the watermark position and size are changed to the output resolution coordinates.
  • The logic for adding a transition is modified. You must call the stopEdit method before you add a transition. After the transition is added, you can call the startEdit method.
  • The delegate attribute is deleted from the AliyunPasterController class.
  • The destroyAllEffect method is deleted from the AliyunEditor class.
  • The name of QuCore-ThirdParty.framework is changed to alivcffmpeg.framework.

V3.6.5.5

Feature updates

The short video SDK for iOS is compatible with Xcode 10.x.

V3.6.5.3

Feature updates

  • The issue where an unexpected quit may occur if the screen is locked when you add an MV during recording is fixed.
  • The issue where an animated filter is not displayed in the specified time period during reverse playback is fixed.
  • The issue where specific videos are not displayed in the correct color is fixed.
  • Audio files in the AAC SBR format are supported.

V3.6.5

Feature updates

  • The issue where an unexpected quit may occur when exporting a video is fixed.
  • The smoothness of reverse playback is improved.

V3.6.0

Feature updates

Framework file size and basic issues
Name Size (Unit: MB)
AliyunVideoSDKPro.framework3.5.0 release 4.9M
AliyunVideoSDKPro.framework3.5.0 debug 10.1M
AliyunVideoSDKPro.framework3.6.0 release 7.6M
AliyunVideoSDKPro.framework3.6.0 debug 15.7M
QuCore-ThirdParty.framework3.5.0 release 9.3M
QuCore-ThirdParty.framework3.5.0 debug 23.1M
QuCore-ThirdParty.framework3.6.0 release 10.2M
QuCore-ThirdParty.framework3.6.0 debug 23.2M
Note AliyunVideoSDKPro.framework and QuCore-ThirdParty.framework must be replaced at the same time. Otherwise, exceptions such as an unexpected quit during production may occur.

SDK changes

  • Method changes for watermarks
    The -(void)setWaterMark:frame method is deprecated and the -(void)setWaterMark method is added. The following code provides an example on how to set a watermark:
    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:effectImag];
  • Method changes for end watermarks
    The end watermark can be viewed during preview in V3.6.0. The following code provides an example on how to set an end watermark by calling the -(void)setTailWaterMark method:
    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];
  • Method for adding music
    • Multiple audio streams can be mixed in V3.6.0. To add only one audio stream, you must call the removeMusics method. The following code provides an example on how to add one audio stream:
      AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
      [self.editor removeMusics]; // If you want to add only one audio stream, call the removeMusics method.
      [self.editor applyMusic:music];
    • To add music, call the -(void)removeMVMusic method. Example: AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path].
      [self.editor removeMVMusic];
      [self.editor removeMusics];
      [self.editor applyMusic:music];
    • The playback of a specified part of a music stream is supported in V3.6.0. The following code provides an example on how to specify a time range:
      AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path];
      music.startTime = startTime; // Set the start time of the part to be played in the music stream.
      music.duration = duration; // Set the duration of the part to be played in the music stream.
      music.streamStartTime = streamStart [_player getStreamDuration]; // Set the time when the music stream starts to be played in the playback timeline.
      music.streamDuration = streamDuration * [_player getStreamDuration]; // Set the playback duration of the music stream in the playback timeline.
  • New method for displaying time effects
    • The -(void)addTimelineTimeFilterItem method is added. For more information about the code, see the demo.
    • Time effects affect animated filters.
      If you add an animated filter when the playback speed is adjusted for the entire video or the entire video is played in reverse, make sure that the animated filter is displayed in the expected time period. In V3.6.0, the code is in the following methods:
      (void)didBeganLongPressEffectFilter:(AliyunEffectFilterInfo *)animtinoFilterInfo;
      (void)didTouchingProgress;
      (void)didEndLongPress;
      You can reference the following code for three methods:
      AliyunEffectFilter *animationFilter = [[AliyunEffectFilter alloc] initWithFile:[animtinoFilterInfo localFilterResourcePath]];
      float currentSec = [self.player getCurrentTime];
      float currentStreamSec = [self.player getCurrentStreamTime];
      animationFilter.startTime = currentSec;
      animationFilter.endTime = [self.player getDuration];
      animationFilter.streamStartTime = currentStreamSec; // The streamStartTime parameter is added. You must set the parameter when a time effect is applied.
      animationFilter.streamEndTime = [self.player getStreamDuration]; // The streamEndTime parameter is added. You must set the parameter when a time effect is applied.
      [self.editor applyAnimationFilter:animationFilter];

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

  • New time effect method
    The new methods can also be used in V3.5.0. For more information about the code, see the V3.6.0 demo.
    AliyunEffectTimeFilter *timeFilter = [[AliyunEffectTimeFilter alloc] init];
    timeFilter.startTime = [_player getCurrentStreamTime];
    timeFilter.endTime = timeFilter.startTime + 1;
    timeFilter.type = TimeFilterTypeSpeed;
    timeFilter.param = 0.5;
    [self.editor applyTimeFilter:timeFilter];
  • The adjustment of playback status and methods, such as the methods for switching between the foreground and background and screen switching
    Compared with V3.5.0, the switching between the foreground and background and screen switching are internally handled in V3.6.0.
    • The -(void)setActive method is deprecated.
    • Handling of viewWillAppear and viewWillDisappear: When the viewWillDisappear callback is received, you do not need to call the stopEdit method to release the entire AliyunEdit instance. Instead, you need only to call the stop method to stop the playback. Similarly, when the viewWillAppear callback is received, you need only to call the play method to restart the playback.
    • Handling when the application is switched to the background or foreground:

      When the application is switched to the background, the short video SDK for iOS stops playing or exporting. When the application is switched to the foreground, the short video SDK for iOS restarts or pauses the playback by default.

      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 in the playError or exportError callback. You can handle the error as needed.

  • The following three methods of the AliyunImporter class are deprecated. For compatibility with earlier versions, these methods can still be used in V3.6.0.
    • (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. The following code provides an 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];
Note You need to know basic concepts about the player before you use time effects.
  • /* Obtain the total playback duration. Unit: seconds. @return The total duration. /

    (double)getDuration

  • /* Obtain the current playback position. Unit: seconds. /

    (double)getCurrentTime

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

    (double)getStreamDuration

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

    (double)getCurrentStreamTime

Examples

  • If the duration of a video is 15 seconds and the entire video is played at twice the speed, getDuration is 7.5 seconds. getCurrentTime is the current playback position. If getCurrentTime is 3.5 seconds, getStreamDuration is 15 seconds and getCurrentStreamTime is 7 seconds.
  • If the duration of a video is 15 seconds and the entire video is played at half the speed, getDuration is 30 seconds. If getCurrentTime is 10 seconds, getStreamDuration is 15 seconds and getCurrentStreamTime is 5 seconds.
  • If the duration of a video is 15 seconds and the entire video is played in reverse, getDuration is15 seconds. If getCurrentTime is 6 seconds, getStreamDuration is 15 seconds and getCurrentStreamTime is 9 seconds.

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 based on the same rules.

Others

ReleaseNote

  • New time effect methods
    • (int)applyTimeFilter:(AliyunEffectTimeFilter *)filter
    • (int)removeTimeFilter
  • The following methods of the AliyunImporter class are deprecated:
    • (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
      You can construct an AliyunClip object and call the -(void)addMediaClip:(AliyunClip*)clip method to add a video clip. The following code provides an 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];
  • The playback status and methods are adjusted. Compared with V3.5.0, the switchover between the foreground and background and screen switching are internally handled in V3.6.0.

    (void)setActive method is deprecated.

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

    Handling when the application is switched to the background or foreground: When the application is switched to the background, the short video SDK for iOS stops playing or exporting. When the application is switched to the foreground, the short video SDK for iOS restarts or pauses the playback by default.

    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 in the playError or exportError callback. You can handle the error as needed.

  • New methods for the player
    • (double)getStreamDuration; // Obtain the duration of the original video stream. Unit: seconds.
    • (double)getCurrentStreamTime; // Obtain the playback position in the original video stream. Unit: seconds.
  • Operation changes for watermarks
    • (void)setWaterMark: frame method is deprecated.
    • (void)setWaterMark:(AliyunEffect*)waterMark method is added.
    • -(void)setTailWaterMark method can be called to set an end watermark, which can be previewed.
  • Method for adding music
    • Multiple audio streams are supported. The specified part of an audio stream can be played. If you need to add only one audio stream, call the remove method. The following code provides an example:
      AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
      [self.editor removeMusics]; // If you want to add only one audio stream, call the removeMusics method. 
      [self.editor applyMusic:music];
    • The specified part of a music stream can be played. The following code provides an example:
      AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path];
      music.startTime = startTime; // Set the start time of the part to be played in the music stream.
      music.duration = duration; // Set the duration of the part to be played in the music stream.
      music.streamStartTime = streamStart [_player getStreamDuration]; // Set the time when the music stream starts to be played in the playback timeline.
      music.streamDuration = streamDuration * [_player getStreamDuration]; // Set the playback duration of the music stream in the playback timeline.