AIACC视频增强型实例适用于视频增强及转码场景,该实例自带视频和脚本Demo,可以让您体验视频增强及转码的处理。本教程介绍从购买到体验Demo的全过程。

前提条件

完成创建AIACC视频增强实例的准备工作:
  1. 创建账号,以及完善账号信息。
    • 注册阿里云账号,并完成实名认证。具体操作,请参见阿里云账号注册流程
    • 如果创建按量付费实例,您的阿里云账户余额(即现金余额)和代金券的总值不得小于100.00元人民币。具体充值方式和操作,请参见如何充值
  2. AIACC视频增强目前正在邀测中,仅支持华北2(北京)地域的可用区 H。请提交工单申请使用。

步骤一:购买AIACC视频增强实例

  1. 前往实例创建页
  2. 在基础配置页面完成以下实例配置,未提及的配置保持默认选项。
    1. 设置地域及可用区华北2 (北京)aiacc-enhance
    2. 实例规格区域的分类选项页签中,设置架构分类,然后选择视频增强型video-enhance实例规格族。video-enhance
      确认当前选择的实例如下图所示:aiacc-instance
    3. 镜像区域确认以下默认信息。
      • 操作系统:Ubuntu
      • 版本:18.04 64位
      aiacc-enhance-image
    4. 依次完成其他配置项,然后确认订单,完成实例购买。具体操作,请参见Linux系统实例快速入门
      本示例中AIACC视频增强实例的主机名为aiacc-enhance-testaiacc-enhance-buy

步骤二:登录video-enhance实例

  1. 登录ECS管理控制台
  2. 在左侧导航栏,选择实例与镜像 > 实例
  3. 在顶部菜单栏左上角处,选择地域为华北2 (北京)
  4. 实例列表页面,找到创建的AIACC视频增强实例aiacc-enhance-test,单击该实例对应操作列下的远程连接aiacc-enhance-connect
  5. 在弹出的远程连接与命令对话框中,单击Workbench远程连接对应的立即登录
  6. 在弹出的登录实例对话框中,确认自动填充的实例信息,确认无误后输入密码,单击确定,登录实例aiacc-enhance-test

步骤三:处理视频增强

本示例将使用实例自带Demo中的视频及test_run_h264.sh脚本进行视频增强演示。

  1. 执行以下命令,进入预装文件目录demo-ve
    cd /root/demo-ve/
    然后执行命令ls -l,查看目录详细信息,确认存在视频目录videosImage 12
  2. 执行以下命令,在demo-ve路径下加载视频增强模型。
    ./start-triton-docker.sh
    Image 10.png
  3. 执行命令./test_run_h264.sh,进行视频增强与视频转码。回显信息如下所示:
    ffmpeg version v4.1.4.video-enhance_v1.0.1 Copyright (c) 2000-2019 the FFmpeg developers
      built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
      configuration: --enable-cuda --enable-gpl --enable-libx264 --enable-libx265 --enable-cuda-sdk --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --enable-libsvthevc --enable-libvmaf --enable-version3 --extra-cflags='-I/usr/local/cuda/include -I/usr/local/x264/include -I/usr/local/x265/include' --extra-ldflags='-L/usr/local/cuda/lib64 -L/usr/local/x264/lib -L/usr/local/x265/lib' --prefix=/workspace/ffmpeg-install
      libavutil      56. 22.100 / 56. 22.100
      libavcodec     58. 35.100 / 58. 35.100
      libavformat    58. 20.100 / 58. 20.100
      libavdevice    58.  5.100 / 58.  5.100
      libavfilter     7. 40.101 /  7. 40.101
      libswscale      5.  3.100 /  5.  3.100
      libswresample   3.  3.100 /  3.  3.100
      libpostproc    55.  3.100 / 55.  3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'videos/test_source.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        creation_time   : 2021-03-01T08:59:33.000000Z
        encoder         : Lavf58.12.100
      Duration: 00:01:20.02, start: 0.000000, bitrate: 3199 kb/s
        Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 2999 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
        Metadata:
          creation_time   : 2021-03-01T08:59:33.000000Z
          handler_name    : VideoHandler
        Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)
        Metadata:
          creation_time   : 2021-03-01T08:59:33.000000Z
          handler_name    : SoundHandler
    Stream mapping:
      Stream #0:0 -> #0:0 (h264 (h264_cuvid) -> h264 (h264_nvenc))
      Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    load func: get_instance
    load func: build_cuda
    load func: build_cpu
    load func: release_instance
    load func: reset_input_shape
    load func: reset_output_shape
    load func: infer_get_ptr
    load func: infer_wait_finish_read
    load func: infer_wait_finish
    load func: infer_async_raw_nocopy
    load func: infer_reset_state
    load func: get_model_origin_shape
    load func: get_infer_shape
    load func: get_byte_size
    load func: get_input_name
    load func: get_output_name
    load func: uchar_to_float_naive
    load func: float_to_uchar_naive
    load func: get_translib
    load func: nv12_to_bgr_chw
    load func: bgr_chw_to_nv12
    load func: rgb_hwc_to_yuv420
    load func: yuv420_to_rgb_hwc
    load func: bgr_chw_to_yuv420
    load func: yuv420_to_bgr_chw
    load func: perseus_resize_bgr_chw
    load func: perseus_crop_gray
    load func: perseus_fill_gray
    load func: get_prepostprocess_handle
    load func: postprocess_cpu
    load func: postprocess_cuda
    load func: preprocess_cpu
    load func: preprocess_cuda
    load func: release_prepostprocess_handle
    Get Acc-Inference License from Server.
    Get Acc-Inference License from Server.
    Get Acc-Inference License from Server.
    Get Acc-Inference License from Server.
    Get Acc-Inference License from Server.
    Get Acc-Inference License from Server.
    init_buffer!
    filter_frame_do_infer_stage_1: cuda_ctx:3cd39a10
    filter_frame_do_infer_stage_2: cuda_ctx:3cd39a10
    Output #0, mp4, to 'videos/test_output.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf58.20.100
        Stream #0:0(eng): Video: h264 (h264_nvenc) (High) (avc1 / 0x31637661), nv12, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 2000 kb/s, 29.97 fps, 30k tbn, 29.97 tbc (default)
        Metadata:
          creation_time   : 2021-03-01T08:59:33.000000Z
          handler_name    : VideoHandler
          encoder         : Lavc58.35.100 h264_nvenc
        Side data:
          cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: -1
        Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)
        Metadata:
          creation_time   : 2021-03-01T08:59:33.000000Z
          handler_name    : SoundHandler
    frame= 2398 fps=131 q=23.0 Lsize=   21148kB time=00:01:20.14 bitrate=2161.6kbits/s speed=4.39x
    video:19196kB audio:1883kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.325307%
  4. 执行命令cd videos/进入视频所在目录。
    然后执行命令ls -l,即可查看视频增强后的视频文件test_output.mp4Image 15