本文主要介绍短视频SDK在iOS端的使用问题。

SDK集成

导入短视频SDK时,控制台提示category方法未找到,该如何解决?

在工程target中选择Build Setting > other linker flags,添加-ObjC

Debug包和Release包有什么区别?

Debug包包含模拟器和真机版本,可以保证模拟器编译通过,本地调试时推荐使用Debug包;Release包只包含真机版本,在提交App Store时必须使用Release包,因为Apple要求动态库提交不能包含模拟器版本。

导入短视频SDK后运行crash,提示image not found,该如何解决?

短视频SDK使用了动态库,导入动态库需要在Embedded Binaries中添加对应的framework,详细操作请参考集成SDK

短视频SDK支持bitcode吗?

短视频SDK不支持bitcode,需要在设置中把Enable Bitcode设为NO。打包如果出现failed to verify bitcode错误,需要取消勾选rebuild for bitcode选项。

提示[NSDictionary oss_dictionaryWithXMLData:]: unrecognized selector sent to class,是什么原因?

未导入上传SDK,短视频SDK需要依赖上传SDK的AliyunOSSiOS.framework,详细操作请参见集成SDK

视频录制

普通录制完成后,获取不到视频,该如何解决?

需要在录制完成回调函数- (void)recorderDidFinishRecording;里才能获取到视频。

如何实现横屏录制?

录制时候设置cameraRotate角度值,录制的视频方向会以第一段视频的角度值为准。

录制过程中更换音乐,没有生效,是什么原因?

录制过程中不支持更换音乐。

如何实现全屏录制方案?

录制分辨率9:16显示有以下两种方案:
  • 方案一:和短视频SDK提供的demo中一致,iphone X上下留黑边。
  • 方案二:可以调整view布局上下撑满,左右一部分内容不显示。

视频裁剪

裁剪提示1008错误,该如何解决?

关闭shouldOptimize选项。

裁剪提示700004错误,该如何解决?

输出路径未设置,请设置输出路径,可通过AliyunCropoutputPath参数设置。

如何实现没有黑边的裁剪?

根据原始分辨率,做一个缩放,缩放后的分辨率保证是偶数。

如何裁剪一段音乐?

裁剪参数videoSizeouptutSize都无需设置,其他操作和裁剪视频时的参数保持一致。

视频编辑

编辑完成后,合成crash,出现报错提示[null length],该如何解决?

检查水印路径(AEPGlobalWatermarkTrack的source参数)是否设置正确。

调用音量接口出现破音,是什么原因?

音量默认值100代表原声,大于100可能会破音,建议保证音量值设置在0~100。

滤镜、MV等资源找不到,该如何解决?

资源拷贝到项目中需要用folder方式导入才能保证层级关系,注意在xcode中显示的文件夹是蓝色的。

导入视频,提示operation not permit,该如何解决?

从系统相册导入的视频,需要调用系统接口获取相册访问权限,同时保证对应的AVAseset没有被销毁。

加入音频后,无法调节音量和添加、删除音效,该如何解决?

注意加入的音频需要为pcm、mp3等格式的音频文件,不能为视频文件。

视频上传

上传报错,提示没有授权,该如何解决?

问题现象:上传报错,提示没有授权。

可能原因:通过STS方式上传时所使用的STS授权已到期。

解决方案:重新获取STS授权后,再次上传。获取STS授权的流程简单介绍如下:
  1. 使用阿里云主账号创建用户,给用户授予AliyunSTSAssumeRoleAccess权限。
  2. 使用用户创建角色,给角色授予VODFULL权限。
  3. 通过调用STS的SDK,获取STS,参考:创建RAM角色并进行STS临时授权
    说明 调用STS的SDK中的AK必须是RAM用户的AK。更多关于账号、RAM用户及授权的信息请参见账号和授权
  4. 修改policy为点播的VODFULL权限。
  String policy = "{\n" +
           "    \"Version\": \"1\", \n" +                
           "    \"Statement\": [\n" +                
           "        {\n" +                
           "            \"Action\": [\n" +                
           "                \"vod:*\"\n" +                
           "            ], \n" +                
           "            \"Resource\": [\n" +                
           "                \"*\" \n" +                
           "            ], \n" +                
           "            \"Effect\": \"Allow\"\n" +                
           "        }\n" +                
           "    ]\n" +                
           “}”

上传过程中断网,为什么没有失败回调?

上传过程中断网,会自动重试,如果不想走重试接口,可以手动调用取消上传的接口。

上传后的视频,通过服务端SDK下载的视频格式为什么是m3u8?

转码配置里面,如果勾选了hls选项,则会生成m3u8格式的视频。

上传App Store

提交App Store审核时报错,该如何解决?

问题现象:提示Invalid CFBundleSupportedPlatforms value错误。

问题原因:4.3.1和3.15.0版本的QuCore-ThirdParty会存在上述问题。QuCore-ThirdParty中info.plist的CFBundleSupportedPlatforms支持的平台为iPhoneSimulator。

解决方案:
  • 方法一:将info.plist中CFBundleSupportedPlatforms下支持的平台值改为iPhoneOS。
  • 方法二:使用其他QuCore-ThirdParty的版本,推荐版本如下表所示。
    QuCore-ThirdParty版本 短视频SDK版本
    ≥ 4.3.2(推荐) ≥ v3.26.0
    4.3.1(不推荐) v3.26.0 ~ v3.29.0
    4.3.0 v3.24.0 ~ v3.25.1
    3.15.0 < v3.24.0