涂图

  • 首页
  • 解决方案
    • 拍照和图片编辑
    • 视频录制和后期编辑
    • 模板视频
    • 人像美颜
    • 人脸特效
    • 滤镜特效
    • 贴纸特效
  • API服务
    • 人像服务
    • 视频融合
    • 人脸云
    • 在线滤镜
  • 客户案例
  • 下载
  • 文档
  • 关于我们
  • 控制台
  • 一、新手上路
  • 控制台操作说明
    • 控制台使用说明
    • 自定义资源上传说明
  • 二、SDK 文档
  • 图像 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 相册组件的使用
      • 照片美化组件的使用
      • 主题包基础使用
      • 自定义滤镜
      • 自定义贴纸
      • 自定义界面
      • 自定义 ProgressHUD 提示框(2.0.0~3.2.7)
      • 自定义 ProgressHUD 提示框
      • API 文档
      • 致谢
    • Android 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 照片美化组件的使用
      • 头像设置组件的使用
      • 多选相册组件的使用
      • 主题包基础使用
      • 自定义贴纸
      • 自定义滤镜
      • 自定义界面
      • 自定义进度信息提示框
      • 自定义 Activity 打开相机
      • API 文档
      • 致谢
    • iOS 技术问题
      • 「Incorrenct app key」
      • 更换滤镜效果图
      • 导航栏与状态栏
      • 组件中使用部分滤镜
      • Cocoapods 相关问题
      • 图片尺寸变化
      • Photos.framework 相关错误
      • 多包名发布
      • GPUImage 的相关错误
      • TuSDKTSALAsset 转换系统对象
      • 滤镜无法显示名称
      • 获取相机的点击事件
    • Android 技术问题
      • Incorrenct app key
      • 重复引用包
      • Recyclerview 库缺失
      • 方法数超出 65536 限制
      • 传入图片路径
      • 指定裁剪比例
      • 指定相册每行列数
      • 禁用相册自动跳转
      • 如何使用部分滤镜?
      • 代码混淆
      • TuSDK 使用的依赖库
      • 多渠道打包
      • 设置相机输出尺寸
      • 相机横屏设置
      • 自定义照片美化组件各功能模块效果默认参数值
    • 拼图设计
      • 拼图模板导出
    • 版本更新日志
      • iOS 版本更新日志
      • Android 更新日志
  • 视频剪辑 SDK
    • 产品说明
      • 产品指南
    • iOS文档
      • TuSDK Video Editor iOS 接入文档
    • Android文档
      • TuSDK Video Editor Android 接入文档
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 流处理(特效相机) SDK
    • 产品说明
      • 产品指南
    • iOS 文档
      • TuSDK特效相机接入文档-iOS
      • TuSDK直播特效接入说明-iOS
    • Android 文档
      • TuSDK特效相机接入文档-Android
      • TuSDK直播特效接入说明-Android
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 视频融合 SDK
    • 产品说明
      • 产品指南
      • 模板管理
    • iOS 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 2.0
      • API文档
    • Android 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 (2.0.0+)
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 短视频 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • Android 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • iOS 技术问题
      • 常见问题
    • Android 技术问题
      • 常见问题
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 三、云服务文档
  • 人像服务
    • 使用文档
      • 快速入门
      • 核心功能
    • API概述
      • API 概述
      • API 文档
    • 常见问题
      • 常见问题
  • 视频融合(云渲染)
    • 使用文档
      • 快速入门
      • 模板管理
    • API概述
      • API概述
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 常见问题
    • 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 人脸云
    • 使用文档
      • 快速入门
      • 核心功能
    • API 概述
      • API 概述
    • 常见问题
      • 常见问题
  • 在线滤镜
    • 使用文档
      • 快速入门
      • 核心功能
      • FILTER API
      • API 错误码表
    • API概述
      • API 概述
    • 常见问题
      • 常见问题
  • 四、综合
  • 涂图隐私协议
  • 用户退出机制
  • 动态贴纸设计规范
  • 美妆贴纸设计规范
  • 云服务账单说明
  • 应用包名与密钥
  • 基础服务开发者升级流程
  • 五、常见问题
  • 常见问题
  • 遇到问题,怎么办?
  • 如何使用贴纸管理、滤镜管理?

录制相机的使用

头文件 功能说明
TuSDKRecordVideoCamera.h 相机拍照录制类,支持参数设置,包含添加滤镜,贴纸,录制变声功能

1.启动相机

1.1 创建相机对象

  • 录制相机对象

  • 遵守代理 TuSDKRecordVideoCameraDelegate

      @property (nonatomic, strong) TuSDKRecordVideoCamera *camera;

1.2 请求权限

  • 相机权限

      // 开启访问相机权限
      [TuSDKTSDeviceSettings checkAllowWithController:self
                                                 type:lsqDeviceSettingsCamera
                                            completed:^(lsqDeviceSettingsType type, BOOL openSetting)
       {
           if (openSetting) {
               lsqLError(@"Can not open camera");
               return;
           }
           // 启动相机的方法
           // ...
       }];
  • 相册权限

      // 测试相册访问权限
      [TuSDKTSAssetsManager testLibraryAuthor:^(NSError *error)
      {
          if (error) {
              [TuSDKTSAssetsManager showAlertWithController:self loadFailure:error];
          }else{
              NSLog(@"已经获得了相册的权限");
          }
      }];

1.3 配置滤镜列表

  • 滤镜列表,获取滤镜前往 TuSDK.bundle/others/lsq_tusdk_configs.json

  • TuSDK 滤镜信息介绍请参考文档自定义滤镜

  • 需要先配置好 _filterCodes 中的 filterCode

      _filterCodes = @[@"Normal", kCameraFilterCodes];

1.4 启动相机

  • 启动相机对象

      // SessionPreset :采集画面的清晰度,建议 AVCaptureSessionPresetHigh 
      // 设置参考:AVFoundation/AVCaptureSession.h
      // cameraPosition:默认前置摄像头,[AVCaptureDevice lsqFirstFrontCameraPosition]
      _camera = [TuSDKRecordVideoCamera initWithSessionPreset:AVCaptureSessionPresetHigh
         cameraPosition:[AVCaptureDevice lsqFirstFrontCameraPosition]
             cameraView:_cameraView];
      // 在这里进行相关参数的配置
      // ........
    
      // 启动相机
      [_camera tryStartCameraCapture];
  • 初始化相机时,以下几点需要注意

  • _camera.outputSize 和 _camera.videoQuality,影响保存视频的文件大小。

  • 设置 outputSize 尺寸时,需要设置为 16 的倍数。

1.5 相机参数配置

  • 相机初始化之后可根据实际使用需求进行相关参数配置

  • 设置录制文件格式(默认:lsqFileTypeQuickTimeMovie),可输出 MP4

      _camera.fileType = lsqFileTypeMPEG4;
  • 输出视频的画质,影响保存视频文件的体积

      _camera.videoQuality = [TuSDKVideoQuality makeQualityWith:TuSDKRecordVideoQuality_Medium2];  
  • 设置委托

      _camera.videoDelegate = self;
  • 预览画面画幅设置,_cameraView 设置为全屏尺寸后,调节比例可以输出 1:1 画幅视频

      _camera.cameraViewRatio = 1.0;
  • 指定比例后,建议输出画面尺寸比例和设定的 cameraViewRatio 保持一致,SDK 会根据设备情况自动输出最合适的尺寸

      _camera.outputSize = CGSizeMake(640, 640);
  • 禁止触摸聚焦功能 (默认: NO)

       _camera.disableTapFocus = NO;
  • 禁用持续自动对焦

      _camera.disableContinueFoucs = NO;
  • 视频覆盖区域颜色 (默认:[UIColor blackColor])

      _camera.regionViewColor = [UIColor blackColor];
  • 禁用前置摄像头自动水平镜像 (默认: NO,前置摄像头拍摄结果自动进行水平镜像)

      _camera.disableMirrorFrontFacing = NO;
  • 闪光灯模式(默认是关闭:AVCaptureFlashModeOff)

      [_camera flashWithMode:AVCaptureFlashModeOff];
  • 相机采集帧率,默认30帧; 开启智能贴纸时,帧率建议:25 ~ 30; 关闭智能贴纸时,帧率建议:30。(视机器性能决定)

      _camera.frameRate = 30;
  • 不保存到相册,可在代理方法中获取 result.videoPath(默认:YES,录制完成自动保存到相册)

      _camera.saveToAlbum = NO;
  • 保存到指定相册(需要将 saveToAlbum 置为 YES 后生效)

      _camera.saveToAlbumName = @"TuSDK";
  • 启用智能贴纸(开启后,可使用动态贴纸)

      _camera.enableLiveSticker = YES;
  • 设置是否启用人脸检测。 如果使用人脸贴纸及微整形功能,该项需置为 YES。 (注:须在相机启动之前调用)

      _camera.enableFaceDetection = YES;
  • 设置图片水印,默认为空

      _camera.waterMarkImage = [UIImage imageNamed:@"sample.png"];
  • 设置水印图片的位置

      _camera.waterMarkPosition = lsqWaterMarkBottomRight;
  • 最大录制时长 15s

      _camera.maxRecordingTime = 15;
  • 最小录制时长 3s

      _camera.minRecordingTime = 3;
  • 录制模式:续拍模式

      _camera.recordMode = lsqRecordModeKeep;
  • 设置默认滤镜(3.1.2 以后的版本请使用 TuSDKMediaFilterEffect 的 addMediaEffect 方法)

      [_camera switchFilterWithCode:_filterCodes[1]];
  • 设置使用录制相机最小空间限制,开发者可根据需要自行设置(单位:字节 默认:50M)

      _camera.minAvailableSpaceBytes = 1024.f*1024.f*50.f;  
  • 设置预览画面距离顶端距离,SDK 会自动调整预览画面位置

      CGFloat offset = 64/self.view.lsqGetSizeHeight;
      _camera.regionHandler.offsetPercentTop = offset;

1.6 开始录制&暂停录制&结束录制

  • 开始录制:

      [_camera startRecording];
  • 暂停录制:

       [_camera pauseRecording];
  • 结束录制:

      [_camera finishRecording];   
  • 取消录制:

      [_camera cancelRecording];

2.滤镜的使用

  • TuSDKMediaFilterEffect 滤镜特效

  • Demo 提供使用范例,用户可根据接口自定义修改相关使用

  • 视图层级介绍:CameraViewController -> cameraView -> CameraControlMaskView -> CameraFilterPanelView

  • CameraControlMaskView 引入头文件 #import "CameraFilterPanelView.h"

  • 需要先配置好 _filterCodes 中的 filterCode ,再初始化滤镜栏

      // 滤镜列表,获取滤镜前往 TuSDK.bundle/others/lsq_tusdk_configs.json  
      // TuSDK 滤镜信息介绍 @see-https://tusdk.com/docs/ios/self-customize-filter
      _filterCodes = @[kCameraFilterCodes];
  • CameraViewController 实现CameraFilterPanelDelegate代理方法,切换滤镜

       /**
       滤镜,美颜栏点击回调
    
       @param controlMask 相机界面遮罩视图
       @param filterPanel 滤镜回调事件
       */
      - (void)controlMask:(CameraControlMaskView *)controlMask didShowFilterPanel:(id<CameraFilterPanelProtocol>)filterPanel;

3.美颜,微整形的使用

  • TuSDKMediaSkinFaceEffect 滤镜参数调节,包含参数名,参数值等

  • Demo 提供使用范例,用户可根据接口自定义修改相关使用

  • 视图层级介绍:CameraViewController -> cameraView -> CameraControlMaskView -> CameraBeautyPanelView

  • CameraControlMaskView 引入头文件 #import "CameraBeautyPanelView.h"

      /**
       当前正在应用的特效
    
       @param videoCamera 相机对象
       @param mediaEffectData 正在预览特效
       @since v3.2.0
       */
      - (void)onVideoCamera:(TuSDKVideoCameraBase *_Nonnull)videoCamera didApplyingMediaEffect:(id<TuSDKMediaEffect>_Nonnull)mediaEffectData;               

4.1动态贴纸的使用

  • TuSDKPFStickerGroup 贴纸对象,包含贴纸id,缩略图地址等

  • Demo 提供使用范例,用户可根据接口自定义修改相关使用

  • 视图层级介绍:CameraViewController -> cameraView -> CameraControlMaskView -> StickerPanelView -> StickerCategoryPageView

  • CameraControlMaskView 引入头文件 #import "PropsPanelView.h"

  • CameraViewController 实现 PropsPanelViewDelegate 代理方法,添加贴纸

       /**
       贴纸选中回调
    
       @param propsPanelView 相机贴纸协议
       @param propsItem 贴纸组
       */
      - (void)propsPanel:(PropsPanelView *)propsPanelView didSelectPropsItem:(__kindof PropsItem *)propsItem;

4.2动态贴纸在线下载

  • 创建属性

      @property (nonatomic, strong) TuSDKOnlineStickerDownloader *_stickerDownloader;
  • 初始化贴纸在线下载工具

      - (TuSDKOnlineStickerDownloader *)stickerDownloader 
      {
          if (!_stickerDownloader) {
              _stickerDownloader = [[TuSDKOnlineStickerDownloader alloc] init];
              _stickerDownloader.delegate = self;
          }
          return _stickerDownloader;
      }
  • 遵守 TuSDKOnlineStickerDownloaderDelegate 代理,实现下载管理

      #pragma mark - TuSDKOnlineStickerDownloaderDelegate
    
      - (void)onDownloadProgressChanged:(uint64_t)stickerGroupId progress:(CGFloat)progress changedStatus:(lsqDownloadTaskStatus)status;
      {
          if (status == lsqDownloadTaskStatusDowned || status == lsqDownloadTaskStatusDownFailed) 
          {
              BOOL success = status == lsqDownloadTaskStatusDowned;
              void (^downloaderCompletion)(BOOL success) = _downloadCallbackDic[@(stickerGroupId)];
              if (downloaderCompletion) {
                  downloaderCompletion(success);
              }
          }
      }
  • Demo/Resources/Assets 提供了customStickerCategories.json 文件,用户可根据需要自行添加删除贴纸。

  • json 文件中信息如下

        {
          "categories": [
          {
              // 分类名称
              "categoryName": "搞怪cos",
              "stickers": [
              {  
                  // 贴纸名称
                  "name": "晕",
                  // 贴纸 ID, stickerID
                  "id": "1622",
                  // 贴纸 preview URL 地址
                  "previewImage": "https://img.tusdk.com/api/stickerGroup/img?id=1622"
              },
              {
                  "name": "绅士礼服",
                  "id": "1566",
                  "previewImage": "https://img.tusdk.com/api/stickerGroup/img?id=1566"
              }],
          },
          {
              "categoryName": "场景",
              "stickers": [
              {
                  "name": "星球",
                  "id": "1578",
                  "previewImage": "https://img.tusdk.com/api/stickerGroup/img?id=1578"
              }]
          },
          {
              "categoryName": "萌宠",
              "stickers": [
              {
                  "name": "白狐狸",
                  "id": "1602",
                  "previewImage": "https://img.tusdk.com/api/stickerGroup/img?id=1602"
              }]
          }]
          }
  • StickerPanelView 中 -(void)loadStickers; 方法中对 json 文件进行了读取使用

      // 获取本地所有贴纸,并创建索引字典
      NSArray<TuSDKPFStickerGroup *> *allLocalStickers = [[TuSDKPFStickerLocalPackage package] getSmartStickerGroups];
      NSMutableDictionary *localStickerDic = [NSMutableDictionary dictionary];
      for (TuSDKPFStickerGroup *sticker in allLocalStickers) {
          localStickerDic[@(sticker.idt)] = sticker;
      }
    
      // 遍历 categories 字段的数组,其每个元素是字典
      NSArray *jsonCategories = jsonDic[kStickerCategoryCategoriesKey];
      NSMutableArray *stickerCategories = [NSMutableArray array];
      for (NSDictionary *categoryDic in jsonCategories) {
          StickerCategory *stickerCategory = [[StickerCategory alloc] init];
          stickerCategory.name = categoryDic[kStickerCategoryNameKey];
    
          // 通过 idt 进行筛选,若本地存在该贴纸,则使用本地的贴纸对象;否则为在线贴纸
          NSMutableArray *stickers = [NSMutableArray array];
          for (NSDictionary *stickerDic in categoryDic[kStickerCategoryStickersKey]) {
              NSInteger idt = [stickerDic[kStickerIdKey] integerValue];
              TuSDKPFStickerGroup *sticker = localStickerDic[@(idt)];
              if (sticker) {
                  [stickers addObject:sticker];
              } else {
                  // 在线贴纸对象创建
                  OnlineStickerGroup *onlineSticker = [[OnlineStickerGroup alloc] init];
                  sticker = onlineSticker;
                  onlineSticker.idt = idt;
                  onlineSticker.previewImage = stickerDic[kStickerPreviewImageKey];
                  onlineSticker.name = stickerDic[kStickerNameKey];
                  [stickers addObject:sticker];
              }
          }
          // 贴纸数组添加各个分类贴纸数组
          stickerCategory.stickers = stickers.copy;
          [stickerCategories addObject:stickerCategory];
      }
  • 动态贴纸的在线下载功能实现需要贴纸 ID(stickerID),如 json 文件中配置的贴纸已经打包在本地,那么界面将不会展示该贴纸可以进行在线下载

  • 控制台操作,动态贴纸库,查看详情可看到对应的 贴纸 ID 和贴纸名称。

  • 可以动态下发包含贴纸 ID,categoryName 和 previewImage 的 URL 地址的 json 数据,来替换 demo customStickerCategories.json 文件来获取贴纸 ID,这部分为自定义操作。

  • customStickerCategories.json 不是必需文件,用户可自定义或调整。

4.3动态贴纸的删除

  • 清理或更新本地动态贴纸资源,可通过以下方式进行删除贴纸操作,然后选择重新下载或以后下载

      TuSDKPFStickerGroup *sticker = self.stickerCategorys[pageView.pageIndex].stickers[index];
      [[TuSDKPFStickerLocalPackage package] removeDownloadWithIdt:sticker.idt];
      // 完成删除操作后,记得重载数据刷新界面        
      // [self reloadDataWithStickerId:sticker.idt];

5.变脸特效(哈哈镜)

  • TuSDKMediaMonsterFaceEffect 变脸特效(哈哈镜)

  • 特效类型:

      typedef NS_ENUM(NSUInteger,TuSDKMonsterFaceType) {
          /** 哈哈镜 - 大鼻子  @since v3.2.1 */
          TuSDKMonsterFaceTypeBigNose,
          /** 哈哈镜 - 大饼脸 @since v3.2.1 */
          TuSDKMonsterFaceTypePieFace,
          /** 哈哈镜 - 国字脸 @since v3.2.1 */
          TuSDKMonsterFaceTypeSquareFace,
          /** 哈哈镜 - 厚嘴唇 @since v3.2.1 */
          TuSDKMonsterFaceTypeThickLips,
          /** 哈哈镜 - 眯眯眼 @since v3.2.1 */
          TuSDKMonsterFaceTypeSmallEyes,
          /** 哈哈镜 - 木瓜脸 @since v3.2.1 */
          TuSDKMonsterFaceTypePapayaFace,
          /** 哈哈镜 - 蛇精脸 @since v3.2.1 */
          TuSDKMonsterFaceTypeSnakeFace,
      };
    
      * 默认添加一个变脸特效
    
      TuSDKMediaMonsterFaceEffect *monsterEfffect = [[TuSDKMediaMonsterFaceEffect alloc]initWithMonsterFaceType:TuSDKMonsterFaceTypePapayaFace];
      [self.camera addMediaEffect:monsterEfffect];

6.录制支持音频变调

  • 变调参数设置须在点击录制按钮前调用,支持断点录制下不同声调的变换

  • 支持的声调:正常,怪兽,大叔,女生,萝莉

      /**
       * 录制变声类型
       *
       * @since v3.0.1
       */
      typedef NS_ENUM(NSUInteger, lsqSoundPitch) {
          // 正常
          lsqSoundPitchNormal,
          // 怪兽
          lsqSoundPitchMonster,
          // 大叔
          lsqSoundPitchUncle,
          // 女生
          lsqSoundPitchGirl,
          // 萝莉
          lsqSoundPitchLolita,
      };
  • 不支持自定义的声调调节

      // 变声开关回调
      - (void)moreMenu:(CameraMoreMenuView *)moreMenu didSwitchPitchType:(lsqSoundPitch)pitchType {
          _camera.soundPitch = pitchType;
      }

7.获取录制结果

  • 在 TuSDKVideoCameraDelegate 方法中获取录制结果

  • 录制视频的结果获取

      - (void)onVideoCamera:(TuSDKRecordVideoCamera *)camerea result:(TuSDKVideoResult *)result 
      {
          // 通过相机初始化设置  _camera.saveToAlbum = NO;  result.videoPath 拿到视频的临时文件路径
          if (result.videoPath) {
              [[TuSDK shared].messageHub showSuccess:@"录制完成"];
    
              // 进行自定义操作,例如保存到相册
              UISaveVideoAtPathToSavedPhotosAlbum(result.videoPath, nil, nil, nil);
              [[TuSDK shared].messageHub showSuccess:@"保存成功"];
          } else {
              [[TuSDK shared].messageHub showSuccess:@"保存成功"];
          }
    
          // 保存操作执行后,记得更新界面 UI 的状态
          // [_captureMode reset];
      }
    • saveToAlbum 置为 YES,在录制达到最大时长或中途保存后,会自动保存到相册中。
    • saveToAlbum 置为 NO,在录制达到最大时长或中途保存后,会通过 result.videoPath 获取到对应视频的临时文件,可进行自定义操作。
  • 拍照结果获取

      - (void)onVideoCamera:(id<TuSDKVideoCameraInterface>)camera takedResult:(TuSDKResult *)result error:(NSError *)error {
          if (result.image) {
              NSLog(@"result.image: %@",result.image);
              // 进行自定义操作,例如保存到相册
              // UIImageWriteToSavedPhotosAlbum(result.image, NULL, NULL, NULL);
          }
      }

7.错误信息

  • 录制出现错误的各种错误信息及处理

      /**
       *  组件错误类型
       */
      typedef NS_ENUM(NSInteger, lsqRecordError)
      {
          /**
           *  未知
           */
          lsqRecordVideoErrorUnknow,
    
          /**
           * 存储空间不足
           */
          lsqRecordVideoErrorNotEnoughSpace,
    
          /**
           *  小于最小录制时长
           */
          lsqRecordVideoErrorLessMinDuration,
    
          /**
           *  大于最大录制时长
           */
          lsqRecordVideoErrorMoreMaxDuration,
    
          /**
           * 文件保存失败
           */
          lsqRecordVideoErrorSaveFailed,
      };
    
      - (void)onVideoCamera:(TuSDKRecordVideoCamera *)camerea failedWithError:(NSError*)error;
      {
         switch (error.code) {
              case lsqRecordVideoErrorUnknow:
    
                  break;
              default:
              break;
           }
        }

8.相机状态

  • 相机录制操作过程中的各种录制状态

      /**
       *  录制状态
       */
      typedef NS_ENUM(NSInteger,lsqRecordState)
      {
          /** 正在录制 */
          lsqRecordStateRecording,
    
          /** 录制完成 */
          lsqRecordStateRecordingCompleted,
    
          /** 正在保存 */
          lsqRecordStateSaveing,
    
          /** 保存完成 */
          lsqRecordStateSaveingCompleted,
    
          /** 正在合并视频 */
          lsqRecordStateMerging,
    
          /** 已暂停 */
          lsqRecordStatePaused,
    
          /** 已取消 */
          lsqRecordStateCanceled,
      };
    
      - (void)onVideoCamera:(TuSDKRecordVideoCamera *)camerea recordStateChanged:(lsqRecordState)state;
      {
          switch (state) {
              case lsqRecordStatePaused:
    
                  break;
              default:
              break;
           }
      }
  • 相机的各种状态

      /**
       *  视频相机状态
       */
      typedef NS_ENUM(NSInteger, lsqCameraState)
      {
          /**
           *  未知
          */
          lsqCameraStateUnknow = 0,
          /**
           *  正在启动
           */
          lsqCameraStateStarting = 1,
          /**
           *  启动完成
           */
          lsqCameraStateStarted = 2,
          /**
           * 正在拍摄
           */
          lsqCameraStateCapturing = 3,
    
          /**
           * 录制暂停
           */
          lsqCameraStatePaused = 4,
    
          /**
           * 拍摄完成
           */
          lsqCameraStateCaptured = 5
      };
    
      - (void)onVideoCamera:(id<TuSDKVideoCameraInterface>)camera stateChanged:(lsqCameraState)state {
              switch (state) {
                  case lsqCameraStateStarting:
                      // 相机正在启动
                      NSLog(@"TuSDKRecordVideoCamera state: 相机正在启动");
                      break;
                  default:
                      break;
              }
      }

  • 1.启动相机
  • 2.滤镜的使用
  • 3.美颜,微整形的使用
  • 4.1动态贴纸的使用
  • 4.2动态贴纸在线下载
  • 4.3动态贴纸的删除
  • 5.变脸特效(哈哈镜)
  • 6.录制支持音频变调
  • 7.获取录制结果
  • 7.错误信息
  • 8.相机状态
  • 在线技术支持
  • 专业售前售后团队
  • 版本定期更新
  • 全方位解决方案

商务合作

  • 177-6716-7529
  • 2969573855
  • sales@tusdk.com
  • 浙江省 杭州市 西湖区 西斗门9号 福地创业园1号楼3楼301室

关注我们

qrcode

©2019-2025 TUTUCLOUD. All Rights Reserved. 杭州元凡视觉智能科技有限公司 | 浙ICP备14040447号-1 | 浙公网安备33010602001649号

  • 177-6716-7529
  • sales@tusdk.com
  • 2969573855