功能介绍

短视频SDK提供视频合拍功能,可支持多视频拼接合成,核心类AliyunMixRecorder和AliyunMixComposer。

版本差异

版本 功能描述
专业版 支持所有功能。
标准版 支持所有功能。
基础版 不支持。

相关类功能

名称 功能
AliyunMixRecorder 合拍功能核心类,能快速实现合拍。
AliyunMixComposer 合拍功能核心类,能对多段视频进行拼接合成。

概念解释

在以下文档介绍中将提及一些特殊概念,为方便开发者理解,预先对概念做一些讲解。
  • 合拍功能(AliyunMixRecorder)
    视频合拍从产品功能层面看,就是两路视频(一路来自样本视频,一路来自设备摄像头采集),按照指定的布局模式(左右分屏,上下分屏,画中画等)进行合成,合成出来的视频每一帧画面将会同时包含两路视频的画面,而合拍视频的音频部分则采用样本视频的音频。以下为范例视图,实际上SDK内部支持开发者自己组织布局,关于如何布局将在后面讲述。合拍功能
  • 轨道(AliyunMixTrack)

    在概念1中提及的两路视频在SDK中被抽象为两个轨道:A轨道和B轨道,A轨放设备采集的视频,B轨放样本视频,用轨道抽象有利于开发者理解轨道布局的概念。

  • 轨道布局(CGRect:trackDisplayFrame)
    在iOS上,轨道创建时带有trackDisplayFrame位置属性。代表轨道在最终画面上占据的位置大小,其左上角为(0,0)原点,和系统的坐标系行为一致。如下示例图:轨道布局

    上图中:最终导出的分辨率为640×640,A轨道位置为(0,0,320,640),B轨道位置为(320,0,320,640),在轨道范围上可以加视频。

录制合拍(AliyunMixRecorder)

AliyunMixRecorder提供了快捷的录制和播放画面并存的能力。比如左边部分画面是摄像头采集,右边部分是播放视频。

初始化设置

  • 初始化创建AliyunMixRecorder对象,完成初始化。
    /**
     初始化方法
     @param param 媒体信息
     @param outputSize 最终的合成分辨率 
    @return 合拍对象 
    */
    - (instancetype)initWithMediaInfo:(AliyunMixMediaInfoParam *)param outputSize:(CGSize)outputSize;
  • 对AliyunMixMediaInfoParam对象描述了合拍的窗口,摄像头窗口的位置大小,样本播放视频的位置大小。具体的解释如下:
    /**
     合拍窗口View 必须设置
     */
    @property(nonatomic, strong) UIView *outputSizeView;
    
    /**
     合拍样本视频的窗口大小
     内部根据此frame在outputSizeView上展示样本播放窗口
     */
    @property(nonatomic, assign) CGRect mixVideoViewFrame;
    
    /**
     合拍摄像头采集窗口的大小
     内部根据此frame在outputSizeView上展示采集窗口
     */
    @property(nonatomic, assign) CGRect previewViewFrame;
    
    /**
     合拍摄像头录制的视频分辨率
     */
    @property(nonatomic, assign) CGSize previewVideoSize;
    
    /**
     参与合拍的视频路径
     */
    @property(nonatomic, copy) NSString *mixVideoFilePath;
    
    /**
     参与合拍的视频路径
     */
    @property(nonatomic, copy) NSString *mixVideoFilePath;
    
    /**
     参与合拍的视频开始时间
     */
    @property(nonatomic, assign) CGFloat streamStartTime;
    
    /**
     参与合拍的视频结束时间
     */
    @property(nonatomic, assign) CGFloat streamEndTime;

AliyunMixRecorder类的其他接口和普通录制的接口类似。通过此接口实现的合拍流程和普通录制的流程也相似。

开启预览视图

配置项 配置实例
开启预览
/** 
开始预览

@param cameraPosition 摄像头位置(前置、后置)
 */
- (void)startPreviewWithPositon:(AliyunIRecorderCameraPosition)cameraPosition;

/**
 开始预览 默认前置摄像头
 */
- (void)startPreview;
停止预览
- (void)stopPreview;
销毁对象
- (void)destroyRecorder;

录制视频

配置项 配置实例
开始录制一段视频
  - (int)startRecording;
停止录制一段视频
  - (void)stopRecording;
说明 startRecording和stopRecording需要成对出现。

其他参数设置

与录制模块的参数设置一致,更多信息,请参见视频录制