腾讯特效 SDK 使用文档(Flutter)

这篇将介绍如何在项目中快速使用腾讯礼物动画特效 Flutter SDK。只需遵循以下步骤,即可完成 SDK 的配置和使用。

相关产品
腾讯特效 SDK 产品页,含版本规格、价格与购买入口。

一、初始化注册 License

在正式使用腾讯礼物动画特效 SDK 时,需要先设置 License,设置 License 成功之后,才可以进行后续的 SDK 使用。

设置 License 方式如下:

import 'package:flutter_effect_player/ftceffect_player.dart';const LICENSE_URL = "${licenseUrl}";const LICENSE_KEY = "${licenseKey}";FTCMediaXBase.instance.setLicense(LICENSE_URL, LICENSE_KEY, (code, msg) { print("TCMediaX license result: errCode:${code}, msg:${msg}");});

鉴权 errorCode 说明:

错误码 描述
0 成功。Success。
-1 输入参数无效,例如 URL 或 KEY 为空。
-3 下载环节失败,请检查网络设置。
-4 从本地读取的 TE 授权信息为空,可能是 IO 失败引起。
-5 读取 VCUBE TEMP License文件内容为空,可能是 IO 失败引起。
-6 v_cube.license 文件 JSON 字段不对。请联系腾讯云团队处理。
-7 签名校验失败。请联系腾讯云团队处理。
-8 解密失败。请联系腾讯云团队处理。
-9 TELicense 字段里的 JSON 字段不对。请联系腾讯云团队处理。
-10 从网络解析的 TE 授权信息为空。请联系腾讯云团队处理。
-11 把 TE 授权信息写到本地文件时失败,可能是 IO 失败引起。
-12 下载失败,解析本地 asset 也失败。
-13 鉴权失败,请检查 so 是否在包里,或者已正确设置 so 路径。
3004/3005 无效授权。请联系腾讯云团队处理。
3015 Bundle Id / Package Name 不匹配。检查你的 App 使用的 Bundle Id / Package Name 和申请的是否一致,检查是否使用了正确的授权文件。
3018 授权文件已过期,需要向腾讯云申请续期。
其他 请联系腾讯云团队处理。

二、日志管理

腾讯礼物动画特效 SDK 默认支持保存运行日志,如果测试过程中出现问题,可以提取日志反馈给腾讯云客服,你可以根据业务需要把此目录的日志上传到业务后台,用于定位线上用户问题。

·Android 端的日志保存在目录:/sdcard/Android/data/${your_packagename}/files/TCMediaLog,日志文件按照日期命名,把 TCMediaLog 文件夹导出即可。

·iOS 端保存在沙箱 Documents/TCMedialog 文件夹,日志文件按照日期命名。详细日志导出教程 参考这里。

注意:没有日志文件?

注意:请检查是否通过 FTCMediaXBase.instance.setLogEnable 传入 false 关闭了日志,默认文件日志是开启的。

三、引入 FTCEffectAnimView

FTCEffectViewController? controller;Widget _getFTCEffectAnimView() { return FTCEffectAnimView( controllerCallback: (controller){ // controller.setLoop(true); // controller.startPlay("xxxxxxx"); } );}

四、播放监听

可以在开始播放之前通过调用setPlayListener方法来设置动画播放状态监听。

controller?.setPlayListener(FAnimPlayListener(onPlayStart: () { // on anim play start}, onPlayEnd: () { // on anim play end}, onPlayEvent: (int event, Map params) { // on anim play events}, onPlayError: (code) { // on anim play error}));

如果你需要获取当前正在播放的动画信息,可以在onPlayStart()方法中(或者该方法执行之后)调用getTCAnimInfo()方法来获取到FTCEffectAnimInfo对象实例,进而获取到当前播放动画的类型、时长、宽高、融合动画等信息。

五、播放配置

// 设置播放配置,非必需的步骤final FTCEffectConfig _curConfig = FTCEffectConfig()..codecType = FCodecType.TC_MPLAYER;controller?.setConfig(_curConfig);

FTCEffectConfig 中目前支持:

1. FCodecType codecType :它有三个取值,分别是:

·FCodecType.TC_MPLAYER (MPLAYER 播放引擎)

·FCodecType.TC_MCODEC(MCODEC 播放引擎) (仅支持 Android)

·FCodecType.TX_LITEAV_SDK (腾讯云播放器 SDK)

2. FFreezeFrame freezeFrame:用于设置播放动画冻结帧,详细解释见 API 文档。

3. FAnimType animType(仅支持 Android):用于指定后续要播放的动画格式,适用于某些情况下,要播放的动画文件后缀被修改的场景。可取值如下:

·FAnimType.AUTO(SDK 默认策略,即以动画文件的后缀来判断动画格式,例如 tcmp4/mp4/tep/tepg 等格式)。

·FAnimType.MP4(MP4 动画格式,后续都将动画文件当做 MP4 类型来播放,无视文件后缀名)

·FAnimType.TCMP4(TCMP4 动画格式,后续都将动画文件当做 TCMP4 类型来播放,无视文件后缀名)。

六、融合动画配置

实现 mp4 或者 tcmp4 融合动画的播放,需要实现 FResourceFetcher。

·如果是图片类型的融合动画,需要实现 FResImgResultFetcher ,来返回对应图片的 Uint8List 来替换对应的元素;

·如果是文字类型的融合动画,需要实现 FResTextResultFetcher ,来返回对应的 FTCEffectText 对象实例,来指定文字的显示配置信息。

controller?.setFetchResource(FResourceFetcher(textFetcher: (res) { // 返回 FTCEffectText 实例,内部可以指定文字内容、颜色等 return FTCEffectText() ..text = "FTCEffect${res.id}" ..color = 0xff0000ff; }, imgFetcher: (res) { // 需要提前准备好要替换的图片数据,这里直接返回即可。 // final data = await rootBundle.load('asset/image/head1.png'); // _samplePng = data.buffer.asUint8List(); return _samplePng; }));

七、开始播放

支持播放 .mp4、.tcmp4 文件格式资源。

String localPath = /path/files/tep_cool_ss.mp4controller?.startPlay("xxxx")

八、暂停播放

controller?.pause()

九、继续播放

controller?.resume()

十、循环播放

controller?.setLoop(true)

十一、静音播放

controller?.setMute(true)

十二、停止播放

当不需要继续使用播放器时,需要停止播放,释放占用的资源。

controller?.stopPlay()

十三、在播放过程中出现下面的日志信息,如何处理?

License checked failed! tceffect player license required!

请检查是否申请特效播放器 License,并进行了初始化注册。

十四、常见错误码

错误码 描述
-10003 创建线程失败。
-10004 render 创建失败。
-10005 配置解析失败。
-10006 文件无法读取。
-10007 动画视频编码格式是 H.265,在当前设备上不支持。
-10008 参数非法。
-10009 license 不合法。
-10010 MediaPlayer 播放失败。
-10012 缺少必备的依赖,例如播放类型为 TX_LITEAV_SDK 时没有引入 liteavSDK。
赞 (0)
上一篇 4天前
下一篇 4天前