简介
本文档将介绍腾讯云小视频(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。 | |
短视频 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 | 框架公共头文件入口。 |