V3.27.0

Feature updates

  • The feature that allows you to crop a video in the same style as the current video is added.
  • Echo removal, noise reduction, and mixing of background music and recorded audio are supported during multi-source recording.
  • The Lookup Table (LUT) filter is added.
  • Specific known issues are fixed.

V3.26.0

Feature updates

  • The stability of the short video SDK for iOS is improved.
  • The issue that specific audio formats are not supported is fixed.

V3.25.1

Feature updates

  • The subtitle memory is optimized.
  • The issue that the screen flickers when you use the short video SDK for iOS to crop a High Dynamic Range (HDR) video that is edited by using the built-in editing feature of an iPhone is fixed.
  • The issue that a display exception occurs after you export a video that is recorded in landscape mode is fixed.
  • Specific known issues are fixed.

V3.25.0

Feature updates

  • The Picture-in-Picture (PiP) feature is added. You can add the PiP effect to the editing user interface (UI).
  • The subtitle animation feature is improved. You can add animation effects for subtitles by using word art designs.
  • The custom thumbnail feature is added to the draft box.
  • Specific known issues are fixed.

V3.24.0

Feature updates

  • The short video SDK for iOS is optimized and support for software encoding based on FFmpeg is removed.
  • The issue that the background color setting does not take effect during cropping and editing is fixed.
  • Specific known issues are fixed.

V3.23.0

Feature updates

  • The draft box feature is added. This feature allows you to export drafts.
  • Subtitle features such as background color and alignment are added.
  • Echoes can be removed during duet recording.
  • The retouching module in the demo is replaced with Queen SDK.
  • Six filter effects for split-screen are added to the demo.
  • Temporary video files can be automatically deleted during recording.
  • HDR video editing and cropping are supported.

V3.22.0

Feature updates

  • The word art feature is supported 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 Shader class for custom special effects.
  • The stability of the short video SDK for iOS is improved in specific scenarios.

Changes to API operations

  • The following API operation is added:

    (AliyunStickerManager *)getStickerManager;

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

V3.21.0

Feature updates

  • View levels can be adjusted and border effects can be configured for duet recording.
  • Mirrored videos can be imported and edited.
  • The memory usage during software encoding is optimized.
  • 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 feature is added to the editing module.
  • Video thumbnails can be obtained at specified timestamps.
  • The issue that the frame rate configured for an 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 specified 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 that the halo color changes when a transparent halo effect is applied to a watermark or an image is fixed.
  • The issue that the added static images are not rotated to the specified angle is fixed.

Changes to API operations

The following API operation is deprecated:

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

V3.18.1

Feature updates

The issue that a memory leak occurs when hardware encoding is used on specific iOS devices is fixed.

V3.18.0

Feature updates

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

V3.17.1

Feature updates

  • The scaling mode is supported for front cameras.
  • The issue that Open Graphics Library (OpenGL) unexpectedly exits applications on specific devices 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 that the screen turns green when a video shot on iPhone 12 is imported to the cropping or editing module is fixed.

V3.16.2

Feature updates

The Gaussian blur effect for the background is improved.

V3.16.1

Feature updates

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

V3.16.0

Feature updates

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

V3.15.0

Feature updates

  • The issue that stuttering occurs during the playback of produced videos is fixed.
  • The issue that 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 the production of custom effects.

Changes to API operations

  • An API operation to modify the parameters of custom effects in real time is added.
  • Custom filters and transition effects are supported. For more information about the standards for production of custom effects, see the official documentation.

V3.14.0

Feature updates

  • The cropping module is optimized to avoid chromatic distortion when a video is cropped multiple times.
  • The stability of the recording module is optimized. Errors such as unexpected background exit and hardware resource occupation are fixed.
  • Memory leaks are fixed and the performance of specific modules is optimized.

Fixed issues

  • The issue that the system gets stuck when the application is switched to the background during recording is fixed.
  • The issue that exceptions occur when audio resources are occupied during recording is fixed.
  • The issue that the background color setting does not take effect is fixed.
  • The issue that a part of the playback image is enlarged after the view of the editing module is changed on iOS devices is fixed.
  • Memory leaks and other specific issues are fixed.

Changes to API operations

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

see Project configurations.

V3.13.0

Feature updates

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

Changes to API operations

The API operation for music videos (MVs) is deprecated in the recording module. The feature of adding MVs is removed.

V3.12.0

Feature updates

  • The log analysis feature is supported. The AliyunVideoSDKInfo setDebugLogLevel operation used to specify whether to enable the feature is added. The following three options are provided:
    AlivcDebugLogClose: disables the log analysis feature.
    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. We also recommend that you do not use this option in the official release because this option can be used only to analyze the logs of the short video SDK for iOS.                       
  • The performance of the editing module is improved.

Fixed issues

The issue that the thread of the recording process continues to run even if the recording process is stopped is fixed.

Changes to API operations

The applyRunningDisplayMode operation is removed from the editing module.

V3.11.0

Feature updates

  • The start and stop speeds of clip recording and the video production speed are improved.
  • The granularity and accuracy of the recording progress callback are improved.
  • The group of pictures (GOP) size is adjusted to improve the transcoding speed in specific scenarios.
  • The time that is required to switch between cameras is reduced.

Fixed issues

  • The issue that the number of frames in a GIF image is incorrectly parsed is fixed.
  • The issue that specific videos stutter when played in reverse is fixed.
  • The issue that the duration displayed for a recorded video is not accurate is fixed.
  • The issue of video and audio out of sync in recorded multi-clip videos is fixed.

Changes to API operations

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

V3.10.5

Feature updates

  • AliyunMixRecorder that is used for duet recording is added.
  • AliyunMixComposer is added. It can be used to add effects such as 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 with specific damaged video files is improved for playback during editing.
  • The draw method that can be used to forcibly draw a frame during editing is added.

Fixed issues

  • The issue that the duration displayed for a recorded video clip is not accurate is fixed.
  • The issue that the watermark added during recording disappears when the application is switched to the background is fixed.
  • The issue that stuttering occurs when you switch between the front and rear cameras during recording is fixed.
  • The issue that an unexpected crash occurs when the application is switched to the background during the export of a video in the editing module 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 selecting a time period during cropping is improved.
  • The playback feature during editing is optimized.
  • The video production speed for the editing module is improved.
  • Specific bugs are fixed.
  • The video production can be resumed after the application is switched to the background.
  • To continue to meet the requirement of SDK stability monitoring and data-related requirements in the future, you must add the AlivcConan.framework dependency to the short video SDK. In CocoaPods integration, you must add pod ‘AlivcConan’, ‘0.9.0’ to the Podfile. For more information, see the demo code.

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 that a display exception occurs during reverse playback of High Efficiency Video Coding (HEVC) videos that are generated by iOS 12 is fixed.
  • The bug that causes unexpected exits to occur when a third-party rendering API is used in the editing module is fixed.
  • The playback smoothness of videos with time effects is improved.
  • The compatibility with GIF images is improved.
  • Videos with odd resolutions can be imported.
  • Audio and video synchronization during multi-clip recording is optimized.
  • The stability is improved.

V3.7.0

Feature updates

  • New transition effects are added, including fade-in, fade-out, polygon, and blinds.
  • The animation feature is added. Basic animations such as rotation, translation, scaling, and alpha and custom animations such as linear erasure are supported.
  • The Gaussian blur effect can be added to a specified stream in a specified period of time.
  • The display mode, including padding and cropping, can be set for a specified stream in a specified period of time.
  • The dubbing feature that supports multi-track dubbing and speed ramping is added.
  • Multiple speed ramping effects can be added to a multi-clip video. Note that the repetition and reverse playback effects can still only be added to a single-clip video.

Changes to API operations

  • The API operation that you need to call after preview ends in the editing module is changed from play to replay.
  • The prepare API operation that is used to preload data is added to the editing module. Call this operation after you call startEdit.
  • The reference coordinates that indicate the position and size of watermarks are changed to the output resolution coordinates.
  • The logic for adding a transition is modified. You must call stopEdit before you add a transition. After the transition is added, call startEdit.
  • The delegate attribute is deleted from AliyunPasterController.
  • The destroyAllEffect operation is deleted from AliyunEditor.
  • 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 that an unexpected crash occurs when you add an MV lock screen during recording is fixed.
  • The issue that a filter is not displayed in the specified period of time during reverse playback is fixed.
  • The issue that incorrect color gamut is displayed for specific videos is fixed.
  • Audio files in the AAC SBR format are supported.

V3.6.5

Feature updates

  • The issue that an unexpected crash occurs when you export a video is fixed.
  • The smoothness of videos during reverse playback is improved.

V3.6.0

Feature updates

Package size and basic issues
Package 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 You must replace AliyunVideoSDKPro.framework and QuCore-ThirdParty.framework at the same time. Otherwise, exceptions such as a crash during production may occur.

Changes to API operations

  • API operations related to watermarks
    The -(void)setWaterMark:frame operation is deprecated and the -(void)setWaterMark operation is added. See the following sample code:
    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];
  • API operations related to end watermarks
    V3.6.0 provides the (void)setTailWaterMark operation that allows you to configure an end watermark for a video and view the end watermark when you preview the video. See the following sample code:
    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];
  • New API operations used to add music
    • Multiple audio streams can be mixed in V3.6.0. If you want to add only one audio stream, call the removeMusics operation. See the following sample code:
      AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
      [self.editor removeMusics]; // Call this operation if you want to add only one audio stream.
      [self.editor applyMusic:music];
    • If you want to add music, call the -(void)removeMVMusic operation. 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 sample code shows how to specify a time range:
      AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path];
      music.startTime = startTime; // Specify the start time of the part of the music stream that you want to play.
      music.duration = duration; // Specify the duration of the part of the music stream that you want to play.
      music.streamStartTime = streamStart [_player getStreamDuration]; // Specify the point in time on the playback timeline when the music stream starts.
      music.streamDuration = streamDuration * [_player getStreamDuration]; // Specify the playback duration of the music stream on the playback timeline.
  • New API operations used to display time effects
    • The -(void)addTimelineTimeFilterItem operation is added to the demo. For information about the code, see the demo.
    • Time effects and filters affect each other.
      If you add a filter when speed ramping applies over the entire video or the video is played in reverse, make sure that the filter is displayed in the specified time period. Relevant code in V3.6.0 is included in the following API operations:
      (void)didBeganLongPressEffectFilter:(AliyunEffectFilterInfo *)animtinoFilterInfo;
      (void)didTouchingProgress;
      (void)didEndLongPress;
      Sample code:
      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 configure this parameter when a time effect is applied.
      animationFilter.streamEndTime = [self.player getStreamDuration]; // The streamEndTime parameter is added. You must configure this 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 API operations related to time effects
    The new API operations can be used in V3.5.0 without causing compatibility issues. 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];
  • Modification of playback status and relevant API operations, such as the operations used to switch screens and switch between the foreground and background
    Compared with V3.5.0, the operations that are used to switch screens and switch between the foreground and background are internally handled in V3.6.0.
    • The -(void)setActive operation is deprecated.
    • Handling of viewWillAppear and viewWillDisappear: When the viewWillDisappear callback is returned, you do not need to call the stopEdit operation to destroy the AliyunEdit instance. You need only to call the stop operation to stop the playback. Similarly, when the viewWillAppear callback is returned, you need only to call the play operation 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 stops playing or exporting the video. When the application is switched to the foreground, the short video SDK restarts or pauses the video playback.

      Error handling:

      In V3.6.0, when an error occurs during playback or export, the playback or export is stopped and the error is returned in the playError or exportError callback. You can handle the error as needed.

  • The following operations of the AliyunImporter class are deprecated. For compatibility with earlier versions, these operations can still be called 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

    You can construct an AliyunClip object and call the -(void)addMediaClip:(AliyunClip*)clip operation to add a video clip. See the following sample code:

    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 Before you use time effects, make sure that you know basic concepts about the player.
  • /* Obtain the total playback duration. Unit: seconds. @return total duration. /

    (double)getDuration

  • /* Obtain the elapsed time since the video started playing. Unit: seconds. /

    (double)getCurrentTime

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

    (double)getStreamDuration

  • /* Obtain the elapsed time since the original video stream started playing. Unit: seconds. /

    (double)getCurrentStreamTime

Examples

  • If the duration of a video is 15 seconds and the video is played at twice the speed, getDuration is 7.5 seconds. 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 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 video is played in reverse, getDuration is 15 seconds. If getCurrentTime is 6 seconds, getStreamDuration is 15 seconds and getCurrentStreamTime is 9 seconds.

In the preceding examples, the time effect is used for the entire video. If the time effect is used only for a part of the video, the playback duration, stream duration, and playback positions are obtained based on the same rules.

Others

ReleaseNote

  • New API operations used to add time effects
    • (int)applyTimeFilter:(AliyunEffectTimeFilter *)filter
    • (int)removeTimeFilter
  • The following operations 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 operation to add a video clip. See the following sample code:
      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];
  • Modification of playback status and relevant API operations: Compared with V3.5.0, the operations that are used to switch screens and switch between the foreground and background are internally handled in V3.6.0.

    The (void)setActive operation is deprecated.

    Handling of viewWillAppear and viewWillDisappear: When the viewWillDisappear callback is returned, you do not need to call the stopEdit operation to destroy the AliyunEdit instance. You need only to call the stop operation to stop the playback. Similarly, when the viewWillAppear callback is returned, you need only to call the play operation 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 stops playing or exporting the video. When the application is switched to the foreground, the short video SDK restarts or pauses the video playback.

    Error handling: In V3.6.0, when an error occurs during playback or export, the playback or export is stopped and the error is returned in the playError or exportError callback. You can handle the error as needed.

  • New API operations related to the player
    • (double)getStreamDuration; // Obtain the duration of the original video stream. Unit: seconds.
    • (double)getCurrentStreamTime; // Obtain the elapsed time since the original video stream started playing. Unit: seconds.
  • API operations related to watermarks
    • The (void)setWaterMark: frame operation is deprecated.
    • The (void)setWaterMark:(AliyunEffect*)waterMark operation is added.
    • The -(void)setTailWaterMark operation can be called to set an end watermark, which can be previewed.
  • New API operations used to add music
    • Multiple audio streams are supported. The specified part of an audio stream can be played. If you want to add only one audio stream, call the removeMusics operation. Examples:
      AliyunEffectMusic *music = [[AliyunEffectMusic alloc] initWithFile:path];
      [self.editor removeMusics]; // Call this operation if you want to add only one audio stream. 
      [self.editor applyMusic:music];
    • A specified part of a music stream can be played. Examples:
      AliyunEffectMusic music = [[AliyunEffectMusic alloc] initWithFile:path];
      music.startTime = startTime; // Specify the start time of the part of the music stream that you want to play.
      music.duration = duration; // Specify the duration of the part of the music stream that you want to play.
      music.streamStartTime = streamStart [_player getStreamDuration]; // Specify the point in time on the playback timeline when the music stream starts.
      music.streamDuration = streamDuration * [_player getStreamDuration]; // Specify the playback duration of the music stream on the playback timeline.