操作场景
本文介绍如何在视频增强型实例 GN7vi 服务器上进行视频编解码和 AI 画质增强。视频增强型实例 GN7vi 提供了视频编解码功能和 AI 画质增强功能,使用方式和开源 FFmpeg 完全兼容,您可以参考本文完成视频画质处理。
操作步骤
实例环境准备
实例:根据对 GPU 和内核数量的需求,参见 视频增强型 GN7vi 选择。
镜像:可参考表格中的 可用镜像 进行选择。
驱动:CUDA 及 cuDNN 的自动安装并非本次部署的必选项,您可根据实际情况选择。可选择如下安装方式:
部分镜像支持自动安装驱动,通过勾选后台自动安装 GPU 驱动进行安装。如下图所示:

若您所选的镜像版本不支持自动安装驱动,可参考手动安装步骤登录实例进行安装。
1. 参见 使用标准方式登录 Windows 实例,登录已创建的 GPU 云服务器。
2. 执行以下命令,实现 GPU 驱动、CUDA、cuDNN 的自动安装。
说明:
wget https://gpu-related-scripts-1251783334.cos.ap-guangzhou.myqcloud.com/gpu-auto-install/gpu_auto_install_220823.sh && wget https://gpu-related-scripts-1251783334.cos.ap-guangzhou.myqcloud.com/gpu-auto-install/driver460_cuda11.2.2.txt && sudo bash ./gpu_auto_install_220823.sh install --config_file=./driver460_cuda11.2.2.txt && source /etc/bash.bashrc && source ${HOME}/.bashrc
文件总览
依次执行以下命令,进入 tscsdk-center 查看当前目录下的所有文件。
cd /usr/local/qcloud/tscsdk-center
ls -l
返回结果如下图所示:

说明如下:

文件名 | 说明 |
fflib_gpu | 画质处理程序的运行依赖库。 |
ffmpeg | 已经嵌入画质处理功能的 ffmpeg 程序。 |
tenmodel | 画质处理使用的 AI 模型。 |
videos | 内置的样例视频。 |
开始使用
1. 依次执行以下命令,设置环境变量。
cd /usr/local/qcloud/tscsdk-center
export LD_LIBRARY_PATH=./fflib_gpu:$LD_LIBRARY_PATH
2. 在 tscsdk-center 目录下,依次执行以下命令,生成经画质处理之后的样例输出视频。
低清视频处理:低清视频一般指分辨率小于或等于720p的视频,该命令使用了 tenfilter 中均衡模式下的标准超分辨率模型以及 unsharp 锐化处理。
./ffmpeg -i ./videos/input1.mp4 -vf tenfilter=mag_filter=1:mag_sr=2:mag_sr_stre=balance,unsharp -c:v libten264 -ten264opts crf=26:vbv-maxrate=2000 -y output1.mp4
高清视频处理:高清视频一般指分辨率大于720p的视频。该命令使用了 tenfilter 中的高质量超分辨率模型。
./ffmpeg -i ./videos/input2.mp4 -vf tenfilter=mag_srgan=1 -c:v libten264 -ten264opts crf=26:vbv-maxrate=2000 -y output2.mp4
快速处理模型:以下命令使用了 tenfilter 中的去压缩伪影、正常模式下的标准超分辨率模型以及 unsharp 锐化处理。
./ffmpeg -i ./videos/input1.mp4 -vf tenfilter=af=auto,tenfilter=mag_filter=1:mag_sr=2:mag_sr_stre=normal,unsharp -c:v libten264 -ten264-params crf=26:vbv-maxrate=2000 -y fast_output1.mp4
./ffmpeg -i ./videos/input2.mp4 -vf tenfilter=af=auto,tenfilter=mag_filter=1:mag_sr=2:mag_sr_stre=normal,unsharp -c:v libten264 -ten264-params crf=26:vbv-maxrate=2000 -y fast_output2.mp4
说明:
同一模型的运行速度会受到输入分辨率的影响,分辨率越大运行速度越慢。初次运行特定 AI 模型时,会耗费较长的时间初始化模型,后续重复执行相同命令时速度会有明显提升。如需评估运行速度,请参考重复执行时的结果。
ffmpeg 命令中的部分参数含义如下表:
参数内容 | 参数含义 |
-i videos/input1.mp4 | 指定输入视频文件。 |
-vf tenfilter=mag_srgan=1 | |
-c:v libten264 | 指定编码器为腾讯自研的 Ten264 或 Ten265 视频编码器。 |
-ten264opts crf=26:vbv-maxrate=2000 | |
-y output.mp4 | 指定输出视频文件,自动覆盖已有文件。 |
3. 等待程序运行结束后,可将输出视频文件下载到本地进行查看,建议使用 xshell、MobaXterm 等工具。以下为执行上述命令输出的4个视频文件截图,以用作对比验证。
截图时间:01分15秒


截图时间:01分15秒


截图时间:00分10秒


截图时间:00分10秒


功能清单
tscsdk-center 包含 视频处理 AI 模型 和 腾讯自研视频编码器 两部分视频能力的支持。
视频处理 AI 模型利用 FFmpeg 的滤镜(filter)机制进行集成,使相关 filter 能够将 AI 推理能力嵌入到视频编解码和处理流程中,提升硬件设备的利用效率和吞吐能力,结合腾讯自研的视频编码器,可以在视频画质增强的基础上带来更高的视频编码压缩率。
视频处理 AI 模型功能清单
视频处理 AI 模型全部集成在一个名为 tenfilter 的滤镜中。通过
"-vf tenfilter=name1=value1:name2=value2"
的方式实现调用和配置。在单个 tenfilter 中可以开启一个 AI 模型,多个 tenfilter 之间可以任意组合。
所有 AI 模型的详细描述如下表:模型或功能名称 | 参数 | 使用示例 |
通用参数 | mdir:模型配置文件路径。默认值为 "./tenmodel/tve-conf.json"。 gpu:tenfilter 所用的 GPU 编号。 | tenfilter=mdir=./tenmodel/tve-conf.json:gpu=1 |
去压缩伪影 | af:去压缩伪影强度。当前仅支持 auto。 | tenfilter=af=auto |
人脸保护 | face_protect_enable:为1时开启人脸保护逻辑。 face_af_ratio:人脸区域去噪弱化系数。 face_sp_ratio:人脸区域锐化强化系数。 | tenfilter=face_protect_enable=1:face_af_ratio=0.5:face_sp_ratio=0.5 |
视频插帧 | mag_fps:为1时开启视频插帧。 fps:目标帧率。 | tenfilter=mag_fps=1:fps=60 |
色彩增强 | mag_filter:需要设置为1。 cebb:为1时开启色彩增强。 | tenfilter=mag_filter=1:cebb=1 |
标准超分辨率 | mag_filter:需要设置为1。 mag_sr:超分辨率比率,当前仅支持2倍超分辨率。 mag_sr_stre:超分辨率模式。可设置为正常模式(normal)或均衡模式(balance)。 | tenfilter=mag_filter=1:mag_sr=2:mag_sr_stre=normal |
高质量超分辨率 | mag_srgan:为1时开启高质量超分辨率模型。 | tenfilter=mag_srgan=1 |
视频去噪声 | mag_filter:需要设置为1。 dn:去噪声强度,当前仅支持3。 | tenfilter=mag_filter=1:dn=3 |
视频画质增强人脸增强字体增强(支持多模型) | mag_filter:需要设置为1。 eh:为1时开启画质增强。 faceeh:为1时开启人脸增强。 fonteh:为1时开启字体增强。 prior:AI 模型执行优先级,例如 "faceeh-eh-fonteh",需同时开启对应模型。添加 "-parally" 时开启并行优化。 | 单模型:tenfilter=mag_filter=1:eh=1 多模型:tenfilter=mag_filter=1:eh=1:faceeh=1:prior=faceeh-eh-parally |
腾讯自研视频编码器
tscsdk-center 包含 Ten264 和 Ten265 两个腾讯自研的视频编码器。编码器类型以及编码器参数可以在视频处理时通过命令参数进行设置。
每种编码器的指定和设置方式如下:
编码器名称 | 指定方式 | 设置方式 |
Ten264 | -vcodec libten264-c:v libten264 | -ten264opts name1=value1:name2=value2 |
Ten265 | -vcodec libten265-c:v libten265 | -ten265-params name1=value1:name2=value2 |
每种编码器的具体参数及其详细说明如下:
参数名称 | 参数说明 |
preset | 指定编码器编码参数集合的配置。0:"ultrafast",1:"superfast",2:"veryfast",3:"faster",4:"fast",5:"medium",6:"slow",7:"slower",8:"veryslow",9:"placebo"。 |
bitrate | ABR 模式下面的输出视频的码率。 |
crf | CRF 模式下面的 CRF 数值。 |
aq-mode | 0:关闭 aqmode,1:开启 aqmode,2:基于方差的aqmode,3:基于方差的 aqmode 并且偏向于暗场景。默认2会产生更好的 ssim 结果。 |
vbv-maxrate | vbv 的最大码率。默认情况下该数值和配置的码率相同。 |
vbv-bufsize | vbv 缓冲 buffer 的大小。默认情况下该数值是配置的码率的四倍。 |
rc-lookahead | lookahead 长度。 |
scenecut | 是否开启场景切换。默认开启,一般不建议关闭。 |
keyint | 关键帧最长间隔。默认是256,可以根据实际业务情况配置,一般配置为2 - 5s的时间间隔的帧数。 |
threads | 使用的线程池的线程数。 |
lookahead-threads | 预分析,lookahead 使用线程数。 |
profile | "baseline","main","high","high422","high444"。 |
参数名称 | 参数说明 |
preset | 指定编码器编码参数集合的配置。-1:ripping,0:placebo,1:veryslow,2:slower,3:slow,4:universal,5:medium,6:fast,7:faster,8:veryfast,9:superfast。 |
rc | 码率控制方式。0:CQP,1:ABR_VBV,2:ABR,3:CRF_VBV,4:CRF。 |
bitrate | ABR 模式下面的输出视频的码率。 |
crf | CRF 模式下面的 CRF 数值,取值范围:[1,51]。 |
aq-mode | 0:关闭 aqmode,1:开启 aqmode,2:基于方差的 aqmode,3:基于方差的 aqmode 并且偏向于暗场景。默认2会产生更好的 ssim 结果。 |
vbv-maxrate | vbv 的最大码率。默认情况下该数值和配置的码率相同。 |
vbv-bufsize | vbv 缓冲 buffer 的大小。默认情况下该数值是配置的码率的四倍。 |
rc-lookahead | lookahead 长度。 |
scenecut | 场景切换阈值,取值范围[0,100]。0表示关闭。默认开启,一般不建议关闭。 |
open-gop | 是否开启 open gop。0:关闭,1:开启。默认开启,在直播场景中为了支持随机接入,建议关闭这个功能。 |
keyint | 关键帧最长间隔。默认是256,可以根据实际业务情况配置,需要大于50且是8的倍数。 |
ltr | 是否要支持长期参考帧 。0:关闭,1::开启。默认开启,如果播放 HEVC 视频的硬件设备比较差,建议关闭这个功能。 |
pool-threads | WPP 使用的线程池的线程数。默认和 CPU 的核数相同,如果想减少 CPU 占用,可以降低这个数目。 |
使用建议
tscsdk-center 支持每个 AI 模型的灵活控制,如果有特殊的需求和应用场景,可以通过设置每项功能的开关和组合顺序,以达到更好的适配和视频处理效果。
tscsdk-center 提供了两种超分辨率模型。其中,标准超分辨率模型相对适合于分辨率较低的老片源,高质量超分辨率模型相对适合于高清片源,建议结合片源类型对这两种超分辨率模型的实际效果进行评估。
tscsdk-center 提供 AI 模型需要运行在 GPU 上,而视频编码器只运行在 CPU 上。大部分情况下,在 GPU 算力跑满后,CPU 还会存在一定的空闲。此时可以合理安排一些只需运行在 CPU 上的视频处理任务(例如视频转码)以充分利用各类硬件资源。