智能多媒体服务

  • 智能多媒体 > API Reference > 音视频处理 >锐智转码(avsmart)

    锐智转码(avsmart)

    最近更新时间:2019-09-09 17:40:32

    接口简介

    • 锐智转码接口可根据视频场景内容自适应进行转码,在不损失画质的情况下(肉眼无感知)以总体更低的码率进行转码,实现视频转码的质量更高和输出视频体积更小的兼得。对于简单场景的视频,锐智转码可以调整编码组合使得码率更低一些,用户就能够在相同码率下观看更高分辨率的视频,在带宽节省的同时观看体验更佳。对于复杂场景的视频,锐智转码在编码过程中可以更加高效地分配比特,在保持总体码率不变情况下改善编码视频的视觉质量。通过加入这种场景内容自适应技术,原有的分辨率和码率组合会更加精简,从而有效降低内容提供商的存储和分发开销。
    • 不同于基础音视频转码(avthumb),锐智转码无需用户指定输出视频的码率帧率等,而是由锐智转码依据源视频场景内容智能匹配最佳转码参数组合。

    接口规格

    • 现在锐智转码功能已经和转码avthumb功能合并,可以转码的同时支持锐智转码(即视频瘦身)。
    • 原 avsmart 的oau参数与 avthumb 的 ab(音频码率) 参数对应。
    • 锐智转码接口文档(旧版本)
    avthumb/<format>
           /...
           /avsmart/<0|1>
           /smtEnhance/<Enhance>
           /smtMaxvbr/<Maxvbr>
           /smtQuality/<Quality>
    
    参数名称 必填 说明
    ... 参考其他参数 avthumb
    /avsmart/<avsmart> N 是否启用锐智转码,即视频瘦身,设置为 1 时开启, 目前只支持 libx264, 不可与 refine 共用,使用 avsmart 的计费和 avthumb 有区别,具体介绍请参考锐智转码(avsmart)
    /smtMaxvbr/<maxvbr> N 使用/avsmart/1时生效。最大平均码率, 单位:比特每秒(bit/s),常用视频比特率:128k 1.25m 5m 等。小于 1k 会默认使用 1k。
    /smtQuality/<quality> N 使用/avsmart/1时生效。瘦身时的转码质量等级,整数,取值范围[1,5],值越大,画面越清晰。注意:该参数会使 vb 失效。
    /smtEnhance/<Enhance> N 使用/avsmart/1时生效。视频增强开关,设置为 "0" 时关闭,默认开启。

    注意:

    • avsmart转码的结果会保存在原文件的空间中,但是文件名按照默认规则生成,为了方便获取转码后资源链接,建议自定义处理结果资源的名称,请参考处理结果另存 (saveas)
    • 支持的视频编码器(Codec)目前有:libx264

    使用限制

    对于其他规格的视频,为避免转码处理超时,目前对于视频时长有一些限制。不同规格的视频时长限制如下:

    规格 时长限制(s)
    720p 9000
    1080p 5400
    2K 1800
    4K 600

    参数设置举例

    • 以预转持久化]形式,将mp4视频进行锐智转码(即视频瘦身),设置视频编码格式为x264,分辨率为480x260,并关闭视频增强:
      {
          "scope":                "qiniu-ts-demo:thinking-in-go.mp4",
          "deadline":             1390528576,
          "persistentOps":        "avthumb/mp4/vcodec/libx264/s/480x360/avsmart/1/enhance/0",
          "persistentNotifyUrl":  "http://fake.com/qiniu/notify"
      }
    
    • 以持久化数据处理(即触发持久化)形式,将mp4视频进行锐智转码(即视频瘦身),设置视频编码格式为x264,分辨率为480x260,并开启视频增强:
      POST /pfop/ HTTP/1.1
      Host: api.qiniu.com  
      Content-Type: application/x-www-form-urlencoded  
      Authorization: QBox <AccessToken>  
    
      bucket=qiniu-ts-demo
      &key=thinking-in-go.mp4
      &fops=avthumb%2Fmp4%2Fvcodec%2Flibx264%2Fs%2F480x360%2Favsmart%2F1
      &notifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
    

    注意:要在Authorization头部的<AccessToken>前添加QBox和半角空格。

    接口响应

    响应内容:
    锐智转码为异步处理,因此响应分为2步:

    1. 创建异步处理任务,如成功,返回异步处理任务 ID。示例:16864pauo1vc9nhp12;
    2. 返回异步处理结果;

    异步处理返回码:

    返回码 含义
    0 成功。
    1 等待处理
    2 正在处理
    3 处理失败
    4 处理成功但通知失败

    :
    如果,处理失败,可通过持久化处理状态查询查看具体失败原因。

    调用示例

    触发持久化

    以Python Sdk为例,本例将空间名为bucket_name中的视频 key转码为MP4的视频文件,并且保存到目标Bucket_Name,且文件名为自定义文件key

    注意:
    其他语言 SDK 可在官方 SDK下载,可以通过查看 SDK 使用指南中触发持久化使用。

    from qiniu import Auth, PersistentFop, build_op, op_save, urlsafe_base64_encode
    
    # 对已经上传到七牛的视频发起异步转码操作
    # access_key,secret_key在个人面板的密钥管理处获得,非个人账号密码
    access_key = '...'
    secret_key = '...'
    q = Auth(access_key, secret_key)
    
    # 要转码的文件所在的空间和文件名。
    bucket_name = '...'
    key = '...'
    
    # 是使用的队列名称,不设置代表使用默认队列。
    pipeline = 'your_pipeline'
    
    # 要进行锐智转码的操作,并关闭视频增强。
    fops = 'avthumb/mp4/vcodec/libx264/s/480x360/avsmart/1/enhance/0'
    
    # 可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    saveas_key = urlsafe_base64_encode('目标Bucket_Name:自定义文件key')
    fops = fops+'|saveas/'+saveas_key
    
    pfop = PersistentFop(q, bucket_name, pipeline)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    print(info)
    assert ret['persistentId'] is not None
    
    

    预转持久化

    以Python Sdk为例,本例中将上传的视频转码为MP4的视频文件,保存到目标Bucket_Name,且文件名为自定义文件key,原上传视频保存到bucket_name空间,且文件名为key

    注意
    其他语言 Sdk 可在官方 Sdks 下载,可以通过查看 Sdk 使用指南中预转持久化使用。

    from qiniu import Auth, put_file, etag, urlsafe_base64_encode
    import qiniu.config
    
    # access_key,secret_key在个人面板的密钥管理处获得,非个人账号密码
    access_key = '...'
    secret_key = '...'
    
    # 初始化Auth状态
    q = Auth(access_key, secret_key)
    
    # 你要测试的空间, 并且这个key在你空间中存在
    bucket_name = '...'
    key = '...'
    
    # 是使用的队列名称,不设置代表使用默认队列。
    pipeline = 'your_pipeline'
    
    # 要进行锐智转码的操作,默认开启视频增强。
    fops = 'avthumb/mp4/vcodec/libx264/s/480x360/avsmart/1'
    
    # 通过添加'|saveas'参数,指定处理后的文件保存的bucket和key,不指定默认保存在当前空间,bucket_saved为目标bucket,bucket_saved为目标key
    saveas_key = urlsafe_base64_encode('bucket_saved:bucket_saved')
    
    fops = fops+'|saveas/'+saveas_key
    
    # 在上传策略中指定fobs和pipeline
    policy={
      'persistentOps':fops,
      'persistentPipeline':pipeline
     }
    
    token = q.upload_token(bucket_name, key, 3600, policy)
    
    # 视频所在的本地路径
    localfile = './python_video.flv'
    
    ret, info = put_file(token, key, localfile)
    print(info)
    assert ret['key'] == key
    assert ret['hash'] == etag(localfile)
    

    计费说明

    服务价格

    编码格式 输出规格 单价(元/分钟)
    H264 4K(3840*2160) 0.64
    H264 2K(2560*1440) 0.32
    H264 HD(1920*1080) 0.16
    H264 SD(1280*720)及以下 0.08
    以上内容是否对您有帮助?
  • Icon helper
    Icon free helper
    Close