短视频 SDK 源码解读(Android)

这篇档将介绍腾讯云小视频(UGC)Android Demo 的运行方式与源码结构。Demo 基于腾讯云短视频 SDK(LiteAVSDK)构建,涵盖短视频的录制、编辑、合成、发布、播放,以及腾讯特效美颜等能力。通过阅读这篇档,可以以快速理解工程各模块的职责与代码组织方式。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

一、如何运行 Demo

1. 下载 Demo,并解压。

2. 使用 Android Studio 打开项目 LiteAVDemo(UGC)。

3. 在 xiaoshipindemo 模块下找到 LicenseManager 类,填写申请的短视频 License 和腾讯特效 License 信息:

·ugcLicenceUrl / ugcKey:短视频 License 的授权地址与密钥。

·xmagicAuthLicenceUrl / xmagicAuthKey:腾讯特效 License 的授权地址与密钥。

4. 在 app 模块下找到 build.gradle 文件,将 applicationId 的值修改为申请 License 时填写的 Android 包名。

二、工程结构

小视频工程共包含六个模块,其中 app 为壳工程,业务功能分布在其余五个模块中:

模块 说明
app 壳工程,放置整个工程的 Application 类。
xiaoshipindemo 业务功能模块(账号、列表、播放、短视频等)。
ugckit 短视频 SDK 的高级封装(含 UI)。
xmagickit 腾讯特效美颜接入模块。
beautykit 基础美颜模块。
ugcquic 短视频上传的 QUIC 协议探测与加速模块。

三、app

app 模块目录结构参考如下:

此模块放置整个工程的 Application 类,具体功能模块在对应的功能 module 中。

文件/目录 说明
TCApplication.java 小视频 Application 类,负责 ELK 数据上报(统计应用使用时长)。
build.gradle 模块构建配置,applicationId 在此配置。
AndroidManifest.xml 应用清单文件。
debug.keystore 调试签名。
proguard-rules.pro 混淆规则。

四、xiaoshipindemo

xiaoshipindemo 模块目录结构参考如下:

小视频按照功能划分成账号、主界面、播放、短视频(编辑、合成、录制、发布)等模块,代码上也按此划分进行分类。下面分别介绍这些模块及相应实现。

五、目录结构

文件/目录 说明
common 通用组件,包括各种工具类、自定义界面(美颜、播放器控件)。
login 账号模块,包括登录以及注册。
logoff 账号注销页面。
mainui 小视频主界面,包括主 Activity 以及视频列表。
manager 权限处理模块。
play 点播播放模块。
userinfo 个人资料模块。
videochoose 短视频文件选择模块。
videoeditor 短视频编辑模块。
videojoiner 短视频合成模块。
videopublish 短视频发布模块。
videorecord 短视频录制模块。
webview 用于承载 H5 页面。

六、账号模块

·负责处理用户登录、注册以及登录缓存的逻辑。

·如果你已经有自己的账号体系,可以直接替换该模块。

·通过调用 TCUserMgr.register 将用户名、密码注册到小视频的业务后台;调用 TCUserMgr.login 进行登录,并将登录信息缓存到本地 SharedPreferences 中;退出登录时清空本地缓存。

相关代码:

类名 描述
TCLoginActivity.java 用户登录页面。
TCRegisterActivity.java 用户注册页面。
TCUserMgr 用户登录注册管理类。
ProgressFragmentUtil 显示进度条的控件。
TCUserInfoFragment.java 用户资料展示页面。
TCAboutActivity 小视频介绍的关于页面。

七、主界面和列表管理模块

·主界面主要负责短视频列表、短视频拍摄/编辑和个人资料三个一级功能的切换。

·登录成功后,默认展示列表界面;单击「+」号按钮后,弹出对话框让你选择录制小视频或编辑本地小视频;单击个人资料按钮,跳转到个人资料页面。

·列表管理包含列表的拉取和展示。

相关代码:

类名 描述
TCSplashActivity.java 闪屏界面。
TCMainActivity.java 主界面,用于呈现短视频列表、短视频拍摄/编辑、用户信息页。
TCLiveListMgr.java 列表管理类,提供接口获取本地内存列表及从服务器更新列表。
TCLiveListFragment.java 列表展示界面,负责呈现短视频的数据。
TCLiveListAdapter.java 短视频列表适配层。
TCUGCVideoListAdapter.java 短视频列表适配层。
TCVideoInfo 视频数据。

八、短视频录制模块

小视频提供 短视频录制 功能,可录制一分钟的短视频;SDK 本身不显示录制时长。

相关代码:

类名 描述
TCVideoRecordActivity.java 短视频录制界面。
RecordProgressView 按住拍摄短视频 View。
ComposeRecordBtn 短视频多段拍摄进度条。

九、文件选择模块

提供本地文件选择功能,列出手机中所有 mp4 视频文件。

相关代码:

类名 描述
TCVideoChooseActivity.java 本地 mp4 文件选择界面。
TCVideoEditerListAdapter.java 本地 mp4 文件列表适配器。
TCVideoEditerMgr.java mp4 视频文件管理类,提供接口获取存储在手机中的 mp4 文件。
TCVideoFileInfo.java 本地视频数据。

十、编辑模块

视频编辑 包括视频裁剪、慢动作、滤镜、音乐混音、贴纸、添加字幕等功能。

相关代码:

类名 描述
TCVideoCutterActivity.java 短视频裁剪界面。
TCVideoEditerActivity.java 短视频裁剪后编辑界面,底部有音乐、滤镜、速度、色调、贴纸、字幕等功能。
TCVideoEffectActivity.java 单击底部按钮,进入短视频添加特效界面。

十一、短视频合成模块

videojoiner/ 目录负责短视频合成相关功能。

十二、短视频发布模块

将录制的文件发布到腾讯云视频分发平台(点播系统)中。

相关代码:

类名 描述
TCVideoPublisherActivity.java 短视频发布界面。

十三、短视频播放模块

播放已经发布到点播系统中的视频,在小视频列表页面上下滑动可快速切换上/下一个视频。

相关代码:

类名 描述
TCVodPlayerActivity.java 短视频播放界面。

十四、ugckit

ugckit 模块目录结构参考如下:

此模块主要是对短视频 SDK 的高级封装(包含 UI),方便快速接入。

文件/目录 说明
basic 通用接口。
component 页面上使用的组件。
module 裁剪、编辑、特效、合成、多屏合拍、录制、上传、视频选择等模块封装,方便对应 View 使用。
utils 工具类模块。
PermissionIntroductionDialog 权限对话框。
UGCKit UGC 初始化类。
UGCKitConstants 常量配置信息。
UGCKitPicturePicker 图片选择模块 View。
UGCKitVideoCut 短视频裁剪模块 View。
UGCKitVideoEdit 短视频编辑模块 View。
UGCKitVideoEffect 短视频特效设置模块 View。
UGCKitVideoJoin 短视频合成模块 View。
UGCKitVideoMixRecord 多屏录制模块 View。
UGCKitVideoPicker 视频选择模块 View。
UGCKitVideoPublish 上传视频模块 View。
UGCKitVideoRecord 短视频录制模块 View。

十五、xmagickit

xmagickit 模块目录结构参考如下:

此模块用于快速接入腾讯特效美颜,是对腾讯特效美颜 Kit(TEBeautyKit)的二次封装。如果你需要在短视频中接入腾讯特效,可以参考 Demo 中使用此模块的方式快速接入。

文件/目录 说明
assets 存放腾讯特效中使用的滤镜和贴纸,以及 TEBeautyKit 中美颜面板需要使用的配置文件。
TEBeautySDKManger 腾讯特效美颜 SDK 管理类,负责 SDK 初始化、授权校验、美颜面板资源配置以及动效资源拷贝。
CustomPropertyManager 自定义属性管理类,处理自定义分割(自定义背景图片/视频)的素材选择与设置。
DefaultPanelViewCallback 美颜面板视图回调(TEPanelViewCallback)的默认实现。
utils 工具类,包含 AppUtils(应用信息)、BitmapUtil(图片压缩/旋转处理)、SPUtils(本地存储)、UriUtils(Uri 转文件路径)。

十六、beautykit

beautykit 模块目录结构参考如下:

此模块是短视频中的基础美颜模块。如果客户选择使用基础美颜,可以使用此模块进行快速集成。

文件/目录 说明
adapter 美颜面板 UI Adapter。
constant 美颜常量定义。
download 美颜下载模块。
model 美颜属性封装模块。
utils 工具类。
view 美颜面板。
BeautyImpl 使用美颜的封装类。
BeautyParams 美颜参数封装类。

十七、ugcquic

ugcquic 模块目录结构参考如下:

此模块用于短视频上传的 QUIC 协议探测与加速,是对腾讯云 QUIC(TQUIC)SDK 的封装。它能在短视频上传前探测 QUIC 链路是否连通,从而提升上传速度与成功率。

文件/目录 说明
impl QUIC 协议封装实现,包括 QUIC 客户端代理与回调接口。

相关代码:

类名 描述
UGCQuicClientProxy.java QUIC 客户端代理类,封装 TnetQuicRequest 的连接、请求、取消等操作,并转发底层回调。
UGCQuicCallback.java QUIC 回调接口,定义连接、网络建立、响应头/数据接收、完成及关闭等回调方法。

注意:说明:

注意:该模块通过 com.qcloud.cos:quic 依赖提供底层 QUIC 能力。上传模块(ugckit 中的 QuicClient)通过反射调用本模块的 UGCQuicClientProxy / UGCQuicCallback 完成上传前的 QUIC 链路探测;当业务无需 QUIC 加速时,可移除该模块依赖而不影响上传主流程。

赞 (0)
上一篇 4天前
下一篇 4天前