为了给您提供便捷的使用体验,阿里云在AIACC视频增强实例规格族的预安装目录下,预置了视频增强模型、容器镜像、样例视频以及多个视频增强和转码脚本,本文为您介绍预安装目录下各个Demo文件的详细说明。

背景信息

AIACC视频增强实例将FFmpeg的Filter机制与AI推理服务结合,结合后的Inference Filter代码能够将AI模型推理嵌入编解码流程中,避免了数据在显存与主存间拷贝以及模型不断加载的性能开销。Fliter代码独立易定制,与其它组件无耦合,您可以使用video-enhance实例的预置软件,也可以参照Demo中的示例代码,在您自己的FFmpeg版本上添加Filter来完成相应的功能,不受任何限制。

预置Demo文件总览

AIACC视频增强实例规格族在预安装目录/root/demo-ve下,为您预置了如下Demo文件:image 19

视频增强模型文件

视频模型的相关文件位于serving_models/目录下的enhance_model_y模型中。Image 20
模型中的文件说明如下所示:
  • 1:指enhance_model_y模型的版本为1。该目录内放置了模型文件model.plan
  • config.pbtxt:配置文件。您在使用时,需要根据自身模型修改配置文件。默认内容如下所示:
    name: "enhance_model_y"
    platform: "tensorrt_plan"
    #max_batch_size: 1
    max_batch_size: 0
    input [
      {
        name: "input.1"
        data_type: TYPE_FP16
        dims: [1,1,-1,-1]
      }
    ]
    output [
      {
        name: "78"
        data_type: TYPE_FP16
        dims: [1,1,-1,-1]
      }
    ]
  • ecs.key:video-enhance实例的授权文件。该文件默认在此路径下,您可以根据自身情况将文件放置在容器可访问到的任意位置,并在启动容器时使用文件所在的新路径。

容器镜像

Triton Inference Server是一个开源的推理服务引擎,它支持多种框架的模型,且具有良好的性能,Demo中使用它作为推理服务引擎。更多信息,请参见官方文档

启动Triton服务docker容器的命令脚本start-triton-docker.sh的参数说明如下所示:

参数 说明
-e AIACC_VE_LIC_FILE="/models/enhance_model_y/ecs.key" 指定video-enhance实例授权文件的存放位置。
说明 此处为ecs.key的默认路径,如果您修改了ecs.key文件的位置,请确认该文件会被映射到docker容器中,并将AIACC_VE_LIC_FILE参数的内容修改为容器镜像内的新路径。
-v `pwd`/serving_models:/models 将保存视频增强模型的目录/serving_models映射到容器内部的/models目录。
docker镜像地址 自带镜像保存在阿里云容器镜像服务中,其中不同地域会略有差异。以华北2(北京)为例,镜像地址为:registry-vpc.cn-beijing.aliyuncs.com/ai_beijing/tritonserver-trt7.2.x.y.z(其中,x.y.z为容器当前版本号,脚本自动)。
tritonserver --model-repository=/models --grpc-port=8710 启动Triton的命令。其中:
  • /models:指视频增强模型的路径。即`pwd`/serving_models映射到容器的目录。
  • 8710:指Triton的gRPC服务端口号。
    说明 端口号必须与脚本调用FFmpeg转码中的参数-vt的端口号保持一致。

视频增强和转码脚本

  • test_run_h264.sh
    该脚本为调用FFmpeg进行AI视频增强并输出H.264编码器适配文件的命令示例,其中命令参数含义如下:
    参数 说明
    -y 自动覆盖已有输入文件。
    -vsync 0 视频同步方法。Demo中将其设置为0,表示每一帧将连同它的时间戳,被从分流器传到混流器。出于兼容原因,您也可以将0设置为常用数值。
    -hwaccel cuvid -c:v h264_cuvid 指定使用GPU H.264硬件解码器加速解码。
    -autorotate 0 将GPU编码器中的自动旋转设置为关闭。
    -i videos/test_source.mp4 指定输入的视频文件。Demo中默认为videos/test_source.mp4
    -vf 指定FFmpeg Filter。这里指定调用了实例中预置的Inference filter inference-async,包括如下参数:
    • use_cuda=1:使用CUDA
    • port=8710:端口号
    • model=enhance_model_y:推理所用模型
    • inference_size=5:Inference Client数
    • format=nv12:视频解码后的中间格式
    -c:v h264_nvenc 指定编码器为GPU H.264编码器h264_nvenc,Demo中使用的编码器的参数为:-profile:v high及-preset slow。h264_nvenc的编码参数可以根据您当前场景的需求以及播放端的情况进行调整。
    -acodec 指定音频编码器。
  • test_run_h265.sh
    该脚本为调用FFmpeg进行AI视频增强并输出H.265编码器适配文件的命令示例,其中命令参数含义如下:
    参数 说明
    -y 自动覆盖已有输入文件。
    -vsync 0 视频同步方法。Demo中将其设置为0,表示每一帧将连同它的时间戳,被从分流器传到混流器。出于兼容原因,您也可以将0设置为常用数值。
    -hwaccel cuvid -c:v h264_cuvid 指定使用GPU H.264硬件解码器加速解码。
    -autorotate 0 将GPU编码器中的自动旋转设置为关闭。
    -i videos/test_source.mp4 指定输入的视频文件。Demo中默认为videos/test_source.mp4
    -vf 指定FFmpeg Filter。这里指定调用了实例中预置的Inference filter inference-async,包括如下参数:
    • use_cuda=1:使用CUDA
    • port=8710:端口号
    • model=enhance_model_y:推理所用模型
    • inference_size=5:Inference Client数
    • format=nv12:视频解码后的中间格式
    -c:v hevc_nvenc 指定编码器为GPU H.265编码器hevc_nvenc,Demo中使用的编码器的参数为:-preset slow。hevc_nvenc的编码参数可以根据您当前场景的需求以及播放端的情况进行调整。
    -acodec
  • test_run_cpu_dec.sh
    该脚本为调用FFmpeg进行AI视频增强并使用CPU解码视频文件的命令示例,其中命令参数含义如下:
    参数 说明
    -y 自动覆盖已有输入文件。
    -i videos/test_source.mp4 指定输入的视频文件。Demo中默认为videos/test_source.mp4
    -vf 指定FFmpeg Filter。这里指定调用了实例中预置的Inference filter inference-async,包括如下参数:
    • use_cuda=1:使用CUDA
    • port=8710:端口号
    • model=enhance_model_y:推理所用模型
    • inference_size=5:Inference Client数
    • format=nv12:视频解码后的中间格式
    -c:v h264_nvenc 指定编码器为GPU H.264编码器h264_nvenc,Demo中使用的编码器的参数为:-profile:v high及-preset slow。h264_nvenc的编码参数可以根据您当前场景的需求以及播放端的情况进行调整。
    -acodec
  • test_run_cpu_all.sh
    该脚本为调用FFmpeg进行AI视频增强、使用CPU解码、并使用libx264 CPU编码器来编码视频文件的命令示例,其中命令参数含义如下:
    参数 说明
    -y 自动覆盖已有输入文件。
    -i videos/test_source.mp4 指定输入的视频文件。Demo中默认为videos/test_source.mp4
    -vf 指定FFmpeg Filter。这里指定调用了实例中预置的Inference filter inference-async,包括如下参数:
    • use_cuda=1:使用CUDA
    • port=8710:端口号
    • model=enhance_model_y:推理所用模型
    • inference_size=5:Inference Client数
    • format=nv12:视频解码后的中间格式
    -c:v libx264 指定编码器为CPU H.264编码器libx264,Demo中使用的编码器的参数为:-profile:v high及-preset slow。-c:v libx264的编码参数可以根据您当前场景的需求以及播放端的情况进行调整。
    -acodec

样例视频

您可以使用该样例视频体验视频增强及转码的处理。具体操作,请参见步骤三:处理视频增强
  • 文件名称:test_source.mp4
  • 所在目录:/root/demo-ve/videos
  • 文件格式:H.264