简介

IOS短视频SDK 是阿里云支持的一款播放器组件,拥有视频强大的播放功能,支持视频录制、视频合拍、视频拼接等能力。

版本信息

短视频SDK提供了AliyunVideoSDKInfo类获取SDK版本的信息,您可以通过下列接口获取SDK版本信息,帮助我们更快速的定位问题。
操作项 操作实例
获取版本号
+ (NSString *)version;
获取alivc commit id
+ (NSString *)alivcCommitId;
获取mediacore commit id
+ (NSString *)mediaCoreCommitId;
获取video sdk commid id
+ (NSString *)videoSDKCommitId;
获取build id
+ (NSString *)videoSDKBuildId;
控制台打印版本信息
+ (void)printSDKInfo;
说明 另外,在AliyunVideoSDKInfo.h头文件注释中也注明了版本信息。

License

短视频SDK服务需要开通License,开通方式请参考产品介绍页
说明 开通License后,请确保提交的bundle id和XCode中对应配置保持一致。

TaskPath

TaskPath是文件夹路径,SDK的多个模块需要传入taskPath完成初始化。接口调用过程中生成的配置文件和临时文件都会存放到taskPath中,模块间配置传递也通过taskPath完成。taskPath的生成和删除由开发者维护。

视频分辨率

视频分辨率指的是视频横向和纵向上的有效像素,理论上视频分辨率越高,图像越清晰。但分辨率越高也意味着文件越大,处理越耗时。移动端考虑到不同设备性能差异,建议设置分辨率720p及以下。常见的视频分辨率如下:
清晰度 1:1 3:4 9:16
480p 480*480 480*640 480*848
540p 540*540 540*720 540*960
720p 720*720 720*960 720*1280
1080p 1080*1080 1080*1440 1080*1920
  • 录制模块可以通过AliyunIRecorder的初始化方法- (instancetype)initWithDelegate:(id<AliyunIRecorderDelegate>)delegate videoSize:(CGSize)videoSize;设置videoSize作为录制视频分辨率。
  • 裁剪模块可以通过AliyunCrop的outputSize属性设置裁剪视频分辨率。
  • 编辑模块可以通过AliyunImporter的初始化方法- (instancetype)initWithPath:(NSString *)taskPath outputSize:(CGSize)outputSize;设置outputSize作为编辑导出视频分辨率。
说明 不要直接使用屏幕像素值作为视频分辨率。

视频旋转角度

视频文件可以带有旋转角度信息,SDK也支持为录制的视频设置旋转角度。横屏录制的场景下可以通过AliyunIRecorder的cameraRotate属性设置摄像头,录制后的视频会相应带有旋转角度。

码率

码率又叫比特率,指的是每秒传送的比特(bit)数。单位为bps(Bit Per Second)。压缩视频的时候给这个视频指定码率参数,用以告诉视频编码器期望的压缩后视频的大小。在一定范围内,码率越高,视频越清晰,文件也越大。建议码率:
清晰度 建议码率
480P 1000000-2000000
540P 2000000-3000000
720P 2000000-4000000
1080 2000000-6000000
  • 录制模块

    可以通过AliyunIRecorder的bitrate属性设置码率。

  • 裁剪模块

    可以通过AliyunCrop的bitrate属性设置码率。

  • 编辑模块

    可以通过AliyunImporter的- (void)setVideoParam:(AliyunVideoParam *)videoParam;方法,创建AliyunVideoParam并设置其bitrate属性设置码率。

帧率

视频帧率指的是每秒钟显示的图像帧数,单位fps(Frame per Second)。帧率越高,图像越流畅,文件也越大。建议视频帧率:25-30。
  • 录制模块

    可以通过AliyunIRecorder的recordFps属性设置帧率。

  • 裁剪模块

    可以通过AliyunCrop的fps属性设置帧率。

  • 编辑模块

    可以通过AliyunImporter的- (void)setVideoParam:(AliyunVideoParam *)videoParam;方法,创建AliyunVideoParam并设置其fps属性设置帧率。

关键帧

帧是组成视频图像的基本单位,视频文件是由多个连续的帧组成。关键帧也叫I帧,它是帧间压缩编码里的重要帧,解码时仅用I帧的数据就可重构完整图像,I帧不需要参考其他画面而生成。关键帧可以做为随机访问(seek)的参考点,可以当成图像。

GOP

Group of Picture(以下简称GOP)顾名思义就是有一组帧组成的一个序列。一个GOP由关键帧开始,后面跟随者一组B帧和P帧。GOP过小,会导致I帧的比例增高,压缩比降低。GOP过大,会导致随机访问(seek)更耗时,同时,会导致倒播卡顿(倒播需要解码一个GOP才能播放视频帧)。SDK中GOP默认值为5,建议GOP值为5-30。
  • 录制模块

    可以通过AliyunIRecorder的GOP属性设置GOP。

  • 裁剪模块

    可以通过AliyunCrop的gop属性设置GOP。

  • 编辑模块

    可以通过AliyunImporter的- (void)setVideoParam:(AliyunVideoParam *)videoParam;方法,创建AliyunVideoParam并设置其gop属性设置GOP。

说明 编辑模块实现视频倒播功能,如果导入视频GOP过大,需要先转码处理。

填充模式

当素材图片或视频的分辨率长宽比与导出视频分辨率长宽比不一致时,会涉及填充模式的选择。

SDK支持两种填充模式:
填充模式 处理方法
裁剪模式 保持长宽比,裁剪图片,只显示中间区域。
缩放模式 保持长宽比,使图片能完整显示,上下或左右填充颜色。
  • 裁剪模块

    可以通过AliyunCrop的cropMode属性设置填充模式。

  • 编辑模块

    可以通过AliyunImporter中- (void)setVideoParam:(AliyunVideoParam *)videoParam;方法,创建AliyunVideoParam并设置其scaleMode属性设置填充模式。

编码方式

编码方式有以下两种:
编码方式 编码详情
软编 使用CPU进行编码。软编可以配置的参数更丰富,同等码率下生成的视频更清晰;但是编码速度比较慢,CPU负载高,手机更容易发热。
硬编 使用非CPU硬件进行编码。硬编编码速度更快,CPU负载低;但清晰度比软编略差,部分安卓设备上可能存在适配性问题。

支持格式

类型 格式
视频 MP4、MOV、FLV
音频 MP3、AAC、PCM
图片 JPG、PNG、GIF