礼物动画特效

最近更新时间:2026-03-23 15:29:11

我的收藏

播放失败遇到 -10009 错误码

-10009错误码表示 License 校验失败,控制台会同时输出错误信息:License checked failed! tceffect player license required!
通常可以按照如下流程排查解决:
是必现的:
1. 检查项目中是否调用过 TCMediaXBase#setLicense 接口传入正确的 licenseUrl 和 licenseKey 信息,以及当前项目运行的 packageName/bundleId 是否匹配。
2. 检查 License 是否过期,可以登录腾讯云后台查看。
3. 检查当前是否网络正常,首次 License 鉴权需要联网查验。尤其是 iOS 端需要在 APP 允许访问网络之后再设置 License。
4. 观察 TCMediaXBase#setLicense 的 ILicenseCallback#onResult 接口回调,查询对应的错误码原因:
Android 端错误码
iOS 端错误码
Android 端错误码如下:
错误码
描述
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
授权文件已过期,需要向腾讯云申请续期。
其他
请联系腾讯云团队处理。
iOS 端错误码如下:
错误码
说明
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
鉴权失败。
其他
请联系腾讯云团队处理。
是偶现的:
1. 总结出现问题的用户的地区信息,出错场景,设备种类信息等。看是否存在复现规律,例如集中在某些固定地区、集中在固定的用户。
如果是固定地区的话,可以反馈给我们进行区域网络拨测。
如果是固定客户复现问题,可以优先排查网络,是否存在域名劫持情况。
2. 如果可以联系到出问题的用户,可以尝试抓取复现问题时控制台全量日志,抓取命令:adb logcat -v time > log.txt
业务上可以在网络可用时,尽可能增加 TCMediaXBase#setLicense 的触发时机。避免出现:只在 App 启动时调用,启动时可能无网络连接而导致在线鉴权失败的问题。

Android 端播放遇到 -10002/-10011 错误码

-10002和-10011错误码通常表示 MP4 动画在当前设备上由于硬解能力不支持导致的播放失败,一般常出现于低端机上(此时使用系统播放器,如 MediaPlayer 来播放该视频也是会失败的)。因此针对这种情况,可以按照如下方案来解决:
1. 控制 MP4 动画文件的输出尺寸。即控制 MP4 动画文件整体尺寸不要超过1080p(1920px × 1080px),以确保在低端机上可以正常硬件解码。如果该动画是使用我们提供的 TEPTools 转换工具生成的,则工具会默认控制输出最佳尺寸以确保兼容性。详见 特效转换工具 页关于 Compatibility mode 开关的介绍。
2. 补充接入软解能力。接入软解能力后,特效播放器会在硬件解码失败之后自动切换为软件解码,确保动画顺利播放。详见 集成指引 中关于软解能力集成的说明。

如何提取运行日志?

默认情况下, 特效播放器 SDK 会保存运行日志,如果测试过程中出现问题,可以提取日志反馈给腾讯云客服。

Android 端

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


iOS 端

特效播放器的日志保存沙箱 Documents/TCMedialog 文件夹
1. 导出沙箱文件,操作: 打开 XCode > Window > Devices and Simulators。

2. 提取 AppData/Documents/TCMedialog 文件夹。


没有日志文件,如何处理?

请检查是否通过 TCMediaXBase#setLogEnable 传入 true 开启了日志,默认日志输出&日志文件保存是关闭的。

原有透明 MP4 是否可以支持?

对于旧的透明 VAP 视频我们兼容播放。同时我们提供 特效转换工具,无论是 MP4、图片帧序列、VAP、SVGA、PAG、WebP 还是 Lottie / PNG 等格式,都能轻松转换成特效播放器支持的格式,让您的播放体验无缝对接。

处理礼物动画时,特效播放器相比 SVGA 或其他格式,怎么做到更高的压缩率?

动画文件体积 tcmp4 处于优势,测评显示:tcmp4 动画文件相对 svga 体积减少81.5%。我们使用纯二进制数据结构,采用极高压缩率的动态比特位存储,以及相似区块集中压缩等技术来实现高压缩率。

和视立方之间的关系,是否规划并到视立方里以解决几个播放器并存的问题?

2.0及以前的版本,特效播放器内核依赖腾讯-云点播播放器。3.0以后版本,所有必要的 SDK 功能整合到特效播放器中,只需购买特效播放器,即可享受完整的服务,无需额外依赖。

解码方式是什么?

特效播放器采用硬解码的方式。主要有两个原因:其一,App 产品一般需要同时处理大量的视频流,并实时传输给观众,硬解码可以快速解码高分辨率和高比特率的视频流;其二,可以减少对 CPU 资源的占用,提高播放的稳定性和效率。

播放器支持的最佳分辨率?

目前播放器对画面的分辨率没有限制,结合画面清晰度和设备性能,一般会选择 MP4 动画视频分辨率不超过1080p。

Android 端播放 tcmp4 动画必现不显示怎么处理?

观察复现问题时的控制台日志打印,如果有如下堆栈一直在打印:

则需要检查当前 TCEffectAnimView 实例所在的 Activity 或 ViewGroup 中是否有关闭硬件加速(系统默认是打开的)。优先按照如下顺序检查:
1. 在 AndroidManifest 中显式为当前 Activity 配置了 android:hardwareAccelerated="false" ;
2. 在代码中为当前 TCEffectAnimView 所在 view tree 上显式调用 view.setLayerType 方法关闭了硬件加速。
对于 tcmp4 动画内部会使用硬件加速相关特性,需要保持硬件加速开关打开来获取最佳播放性能体验。

Android SDK 是否支持x86架构?

支持,我们从 3.3.0.251 版本开始支持使用最广泛的 x86 64位架构。

MP4 和 TCMP4 最佳使用场景

MP4 格式动画适合大动画场景,例如直播间全屏礼物,使用时通常在一个页面只需要创建一个 TCEffectAnimView 实例,礼物播放队列复用这一个 TCEffectAnimView 实例按顺序播放即可。不建议同时播放多个 MP4 动画,例如列表场景下。因为每个 MP4 动画在播放时都需要对应一个解码器,在某些低端机上系统会对同时存在的解码器数量有限制,导致系统解码失败。
TCMP4 格式动画适合小动画场景,例如头像框,点赞小动画等。业务中使用时可以存在多实例同时播放,如同屏64个头像框一起播放。