tencent cloud

文档反馈

使用视频增型实例 GN7vi 实现视频画质增强

最后更新时间:2024-01-11 17:11:13

    操作场景

    本文介绍如何在视频增强型实例 GN7vi 服务器上进行视频编解码和 AI 画质增强。视频增强型实例 GN7vi 提供了视频编解码功能和 AI 画质增强功能,使用方式和开源 FFmpeg 完全兼容,您可以参考本文完成视频画质处理。

    操作步骤

    实例环境准备

    创建一台实例。其中:
    实例:根据对 GPU 和内核数量的需求,参见 视频增强型 GN7vi 选择。
    镜像:可参考表格中的 可用镜像 进行选择。
    驱动:CUDA 及 cuDNN 的自动安装并非本次部署的必选项,您可根据实际情况选择创建实例后手动安装:
    参见 使用标准方式登录 Windows 实例,登录已创建的 GPU 云服务器。
    执行以下命令,实现 GPU 驱动、CUDA、cuDNN 的自动安装。
    说明:
    环境版本配置为 GPU 驱动460.106.00、CUDA11.2.2和 cuDNN8.2.1。
    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
    指定视频处理滤镜(filter) 图,各参数含义请参见 视频处理 AI 模型功能清单
    -c:v libten264
    指定编码器为腾讯自研的 Ten264 或 Ten265 视频编码器。
    -ten264opts crf=26:vbv-maxrate=2000
    设置视频编码器的相关参数,各参数含义请参见 视频编码器功能清单
    -y output.mp4
    指定输出视频文件,自动覆盖已有文件。
    3. 等待程序运行结束后,可将输出视频文件下载到本地进行查看,建议使用 xshell、MobaXterm 等工具。以下为执行上述命令输出的4个视频文件截图,以用作对比验证。
    output1.mp4
    fast_output1.mp4
    output2.mp4
    fast_output2.mp4
    截图时间: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
    每种编码器的具体参数及其详细说明如下:
    Ten264 编码器
    Ten265 编码器
    
    参数名称
    参数说明
    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 上的视频处理任务(例如视频转码)以充分利用各类硬件资源。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持