一、如何运行 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 加速时,可移除该模块依赖而不影响上传主流程。