帮你快速理解、总结文档立即下载

源码解读(iOS)

最近更新时间:2026-10-09 17:55:30
我的收藏

简介

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

如何运行 Demo

1. 下载 Demo,并解压。
2. 在 XiaoShiPin 目录下执行 pod install,完成后打开 XiaoShiPinApp.xcworkspace。
3. 在 XiaoShiPin/AppDelegate.m 的 setLicenceURL 方法中填写申请的短视频 License 和腾讯特效 License 信息:
TXLiveBase / TXUGCBase 的 setLicenceURL:key::短视频 License 的授权地址与密钥。
TELicenseCheck 的 setTELicense:key:completion::腾讯特效 License 的授权地址与密钥。
[TXLiveBase setLicenceURL:@"<License URL>" key:@"<License Key>"];
[TXUGCBase setLicenceURL:@"<License URL>" key:@"<License Key>"];
[TELicenseCheck setTELicense:@"<License URL>" key:@"<License Key>" completion:^(NSInteger authresult, NSString *_Nonnull errorMsg) {
// authresult == TELicenseCheckOk 表示鉴权成功
}];
4. 在 Xcode 中选中 TARGETS > XiaoShiPinApp > Signing & Capabilities,将 Bundle Identifier 修改为申请 License 时填写的 iOS 包名。

工程结构

小视频工程通过 Podfile 组织,业务模块与功能 Kit 划分如下:
模块
说明
业务模块(账号、列表、播放、发布、短视频等),编译产物为 XiaoShiPinApp。
UGCKit
短视频 SDK 的高级封装(含 UI)。
基础美颜模块。
腾讯特效美颜接入模块(远程 Pod 依赖)。

XiaoShiPin

XiaoShiPin 模块目录结构参考如下:
文件/目录
说明
AppDelegate.h/.m
应用入口,负责 License 设置、网络状态监控、Bugly 初始化,并拉起主界面 TCMainViewController。
main.m
程序入口。
ViewController.h/.m
启动引导页。
TCConstants.h
全局常量(HTTP 服务地址、分享 AppID、App Group、错误码等)。
SDKHeader.h
SDK 头文件统一入口。
Mem.h
内存辅助宏。
Info.plist
应用配置(权限声明等)。
AppViewControllers
各业务页面(账号、列表、播放、发布、个人资料等)。
Model
数据模型(登录、用户资料)。
Util
工具类。
TXBeautyRes
腾讯特效美颜使用的滤镜、动效、贴纸等资源。
Assets.xcassets / Assets
图片资源。
Base.lproj / en.lproj / zh-Hans.lproj
多语言资源。
业务功能按 AppViewControllers 下的子目录划分,下面分别介绍。

目录结构

文件/目录
说明
Account
账号模块,包括登录以及注册。
AccountInfo
个人资料模块,包括用户资料、设置、关于、注销账号、H5 承载页等。
MainList
小视频列表模块,包括列表数据与展示。
MainTab
小视频主界面(Tab 容器)。
NavigationController
自定义导航控制器。
Publish
短视频发布模块。
UGCKitWrapper
短视频录制/编辑流程的接入封装。
UGCVideoJoinDemo
短视频合成(多段拼接)预览。
VideoPlayer
点播播放模块。

账号模块

负责处理用户登录、注册、登录刷新以及账号注销的逻辑。
如果您已经有自己的账号体系,可以直接替换该模块。
调用 TCLoginModel 的 registerWithUsername:password:succ:fail: 注册账号、loginWithUsername:password:succ:fail: 登录,登录成功后调用 scheduleRefreshLoginForExpireDate: 定时刷新登录态;退出登录调用 logout:;注销账号调用 deleteAccount:completion:。
相关代码:
类名
描述
TCLoginViewController
用户登录页面。
TCRegisterViewController
用户注册页面。
TXWechatInfoView
微信信息展示控件。
TCLoginModel
用户登录注册管理类。
TCLoginParam
登录参数与登录信息缓存。
TCUserInfoModel
用户资料管理类(单例),负责资料拉取、保存与本地缓存。

主界面和列表管理模块

主界面 TCMainViewController 继承自 UITabBarController,主要负责短视频列表、短视频拍摄/编辑和个人资料三个一级功能的切换。
登录成功后,默认展示列表界面;单击「+」号按钮后,弹出对话框让您选择录制小视频或编辑本地小视频;单击个人资料按钮,跳转到个人资料页面。
列表管理包含列表的拉取和展示,数据层为 TCLiveListMgr(定义在 TCLiveListModel.h 中),负责列表数据的拉取、缓存和更新,列表拉取采用分页模式,拉取到第一页后即通知界面刷新。
相关代码:
类名
描述
TCMainViewController
主界面,用于呈现短视频列表、短视频拍摄/编辑、用户信息页。
TCNavigationController
自定义导航控制器。
TCLiveListMgr
列表管理类,提供接口获取本地内存列表及从服务器更新列表。
TCVideoListViewController
列表展示界面,负责呈现短视频的数据。
TCVideoListCell
短视频列表适配层(Cell)。
TCLiveListModel
视频数据(TCLiveInfo、TCLiveUserInfo)。

短视频录制模块

小视频提供 短视频录制 功能,可录制一分钟以内的短视频,支持多段拍摄(在录制页删除片段),并支持分屏合拍/三屏合拍模式。
录制页通过 UGCKitWrapper 创建并展示 UGCKitRecordViewController。
相关代码:
类名
描述
UGCKitWrapper
短视频录制/编辑流程的接入封装,负责按主题创建并展示录制页与编辑页。
UGCKitRecordViewController
短视频录制页面。
UGCKitRecordConfig
录制参数配置(画面比例、分辨率、码率、最小时长/最长时长、fps、水印、合唱视频、合拍模式等)。

文件选择模块

提供本地媒体选择功能,支持从系统相册中挑选视频(或图片),并可在选择后自动拼接多个视频。
媒体选择页通过 UGCKitMediaPickerViewController 实现,同时可配合 TCVideoEditPrevViewController 做拼接前的预览。
相关代码:
类名
描述
UGCKitMediaPickerViewController
本地媒体选择界面。
UGCKitMediaPickerConfig
媒体选择参数(可选数量、媒体类型、列数、是否拼接视频等)。
TCVideoEditPrevViewController
短视频合成预览界面。

编辑模块

视频编辑 包括视频裁剪、慢动作、滤镜、音乐混音、贴纸、添加字幕等功能。
裁剪页 UGCKitCutViewController 负责选择视频区间。
裁剪后进入编辑页 UGCKitEditViewController,底部有音乐、滤镜、速度、特效、贴纸、字幕等功能。
编辑页的贴纸、字幕、时间特效等由 UGCKitVideoEffectManager 统一管理。
相关代码:
类名
描述
UGCKitCutViewController
短视频裁剪界面。
UGCKitEditViewController
短视频裁剪后编辑界面,底部有音乐、滤镜、速度、特效、贴纸、字幕等功能。
UGCKitVideoEffectManager
编辑特效(贴纸、字幕、时间特效等)管理类。
UGCKitEditConfig
编辑参数配置(旋转角度、压缩分辨率、码率、水印、片尾水印、生成模式等)。

短视频合成模块

UGCVideoJoinDemo/ 目录与 UGCKit 中的合成能力负责短视频合成相关功能。
多段视频的拼接(combineVideos)在选择阶段由 UGCKitMediaPickerViewController + UGCKitAssetLoader 完成,录制页也实现了 TXVideoJoinerListener 以支持合拍、多段合成场景。
相关代码:
类名
描述
TCVideoEditPrevViewController
短视频合成/拼接预览界面。
UGCKitAssetLoader
媒体资源加载与拼接类。

短视频发布模块

将录制的文件发布到腾讯云视频分发平台(点播系统)中。
相关代码:
类名
描述
TCVideoPublishController
短视频发布界面。
TCUploadHelper
上传辅助类。

短视频播放模块

播放已经发布到点播系统中的视频,在小视频列表页面上下滑动可快速切换上/下一个视频。
相关代码:
类名
描述
TCBasePlayViewController
播放页基类。
TCVodPlayViewController
短视频点播播放界面。
TCPlayDecorateView
播放页装饰层(点赞、评论、分享等控件)。
TCPlayViewCell
播放列表 Cell。

UGCKit

UGCKit 是对短视频 SDK 的高级封装(包含 UI),以本地 Pod 形式引入,方便快速接入。
UGCKit 目录结构参考如下:
文件/目录
说明
UGCKit/Classes/Source
源码目录,按功能划分为 Common、Record、Edit、VideoCut、MediaPicker、Music、upload、Model、Theme、Report。
UGCKit/Assets
UI 图片与动效资源。
UGCKit/Localizable
多语言资源。
UGCKitRecordViewController
短视频录制模块 View Controller。
UGCKitEditViewController
短视频编辑模块 View Controller。
UGCKitCutViewController
短视频裁剪模块 View Controller。
UGCKitMediaPickerViewController
视频/图片选择模块 View Controller。
UGCKitBGMListViewController
背景音乐列表界面。
UGCKitTheme
主题配置(图标、颜色、本地化字符串等)。
UGCKitMedia / UGCKitResult / UGCKitWatermark
媒体、结果与水印数据模型。
UGCKitReporter
数据上报接口。
UGCKit.h
框架公共头文件入口。
UGCKitConstants.h
常量配置信息(缓存路径等)。

上传模块(含 QUIC 加速)

上传模块负责短视频上传(含 QUIC 协议探测与加速):
文件/目录
说明
TXUGCPublish
短视频上传入口。
QuicClient
QUIC 客户端封装,负责连接、请求、取消与回调转发。
TVCQuicConfigProxy
QUIC 配置代理。
TVCClient / TVCConfig / TVCReport
上传客户端、配置与数据上报。
TXUGCPublishOptCenter / TXUGCPublishUtil
上传优化中心与辅助工具。
说明:
该模块通过 QCloudQuic 与 QCloudCOSXML 依赖提供底层 QUIC 与对象存储能力。上传前会探测 QUIC 链路是否连通,从而提升上传速度与成功率;当业务无需 QUIC 加速时,可移除相关依赖而不影响上传主流程。

TEBeautyKit

此模块是腾讯特效美颜 Kit,用于快速接入腾讯特效美颜。Demo 中将其接入在 UGCKit 的录制控制器 UGCKitRecordViewController 中,您可以参考该方式快速接入。
文件/目录
说明
XiaoShiPin/TXBeautyRes
存放腾讯特效中使用的滤镜和贴纸,以及 TEBeautyKit 中美颜面板需要使用的配置文件。
TEBeautyKit
腾讯特效美颜 Kit(Pod 依赖),负责 SDK 初始化与纹理处理。
TEPanelView
腾讯特效美颜面板视图。
TEUIConfig
美颜面板资源配置。
TEUIProperty
美颜属性数据模型。
XMagic
腾讯特效渲染引擎。
UGCKitRecordViewController
美颜接入位置。

BeautySettingKit(基础美颜)

此模块是短视频中的基础美颜模块。如果客户选择使用基础美颜,可以使用此模块进行快速集成。
文件/目录
说明
Filter
滤镜定义。
Interfaces
美颜面板动作协议。
Model
美颜动作代理与动态贴纸管理。
View
美颜面板视图与主题。
Assets
美颜面板 UI 与滤镜资源。
TCBeautyPanel
美颜面板组件。
TCBeautyPanelView
美颜面板视图。
TCBeautyPanelActionPerformer
美颜参数设置协议,由 TCBeautyPanelActionProxy 代理给 SDK 对象。
TCBeautyPanelActionProxy
美颜动作代理。
TCFilter
滤镜定义与资源管理。
TCPituMotionManager
动态贴纸(P 图)管理。
TCBeautyPanelTheme
美颜面板主题配置。
TCMenuView
美颜面板菜单视图。
TCBeautyPanel.h
框架公共头文件入口。