智能多媒体服务

  • 智能多媒体服务 > API 文档 > 音视频处理 >锐智转码(旧版本)

    锐智转码(旧版本)

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

    接口简介

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

    • 注:锐智转码支持视频转码和视频音频同时转码,并且在转码同时可以修改分辨率和增加水印。

    接口规格

    avsmart/<Format>
          /oau/<bool>
          /ignore-error/<bool>
          /s/<resolution>
          /wmImage/<encodedImageURL>
          /wmGravity/<wmGravity>
          /wmImgResolution/<wmImgResolution>
          /wmText/<encodedText>
          /wmGravityText/<wmGravityText>
          /wmFont/<encodedFont>
          /wmFontSize/<wmFontSize>
          /wmFontColor/<encodedColor>
          /vb/<max_video_bitrate>
    
    参数名称 类别 必填 说明
    <Format> A/V 目前只支持视频格式mp4
    /oau/<bool> V 是否对视频中的音频转码, 0为不做操作,1为转码
    /ignore-error/<bool> V 忽略压缩视频体积时的错误,1为忽略,0为不忽略。如果没能压缩视频大小, 则忽略该错误并且返回原视频
    /s/<resolution> V 视频输出分辨率,格式:WidthxHeight,指定宽高强制缩放;Widthx,指定宽,高随宽等比缩放;xHeight,指定高,宽随高等比缩放。
    限定范围:小于等于原视频分辨率(宽高同时满足小于等于)
    注意:分辨率不能为奇数
    /wmImage/<encodedImageURL> V 水印源图片网址(经过URL安全的Base64编码),必须有效且返回一张图片,水印图片支持格式:jpg,png
    /wmGravity/<wmGravity> V 图片水印位置,参考水印位置参数表,缺省值为NorthEast(右上角)
    /wmImgResolution/<wmImgResolution> V 图片水印分辨率,格式:WidthxHeight,指定宽高强制缩放;Widthx,指定宽,高随宽等比缩放;xHeight,指定高,宽随高等比缩放。
    范围:Width为[0,3840],Height为[0,2160]
    注意:分辨率不能为奇数
    /wmText/<encodedText> V 水印文字内容(经过URL安全的Base64编码)
    /wmGravityText/<wmGravityText> V 水印位置,参考水印位置参数表,缺省值为NorthEast(右上角)
    /wmFont/<encodedFont> V 水印文字字体(经过URL安全的Base64编码),缺省为黑体,详见支持字体列表。
    注意:中文水印必须指定中文字体
    /wmFontSize/<wmFontSize> V 水印文字大小,单位: 缇,1 缇为 1/20 磅,默认为 16 缇
    /wmFontColor/<encodedColor> V 水印文字颜色,为颜色名称(比如red)缺省为黑色(经过URL安全的Base64编码)
    /vb/<maxVideoBitrate> V 最大平均码率, 单位:比特每秒(bit/s),常用视频比特率:128k 1.25m 5m 等。小于 1k 会默认使用 1k

    注意:

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

    使用限制

    当前暂不支持4K的视频进行锐智转码。
    对于其他规格的视频,为避免转码处理超时,目前对于视频时长有一些限制。不同规格的视频时长限制如下:

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

    参数设置举例

    • 以预转持久化形式,将mp4视频做锐智转码,仅对视频转码,不对音频转码:
      {
          "scope":                "qiniu-ts-demo:thinking-in-go.mp4",
          "deadline":             1390528576,
          "persistentOps":        "avsmart/mp4/oau/0",
          "persistentNotifyUrl":  "http://fake.com/qiniu/notify"
      }
    
    • 以预转持久化]形式,将mp4视频做锐智转码,同时对视频和音频转码:
      {
          "scope":                "qiniu-ts-demo:thinking-in-go.mp4",
          "deadline":             1390528576,
          "persistentOps":        "avsmart/mp4/oau/1",
          "persistentNotifyUrl":  "http://fake.com/qiniu/notify"
      }
    
    • 以持久化数据处理(即触发持久化)形式,将mp4视频做锐智转码,同时对视频和音频转码:
      POST /pfop/ HTTP/1.1
      Host: api.qiniu.com  
      Content-Type: application/x-www-form-urlencoded  
      Authorization: QBox <AccessToken>  
    
      bucket=qiniu-ts-demo&key=sample.mp4&fops=avsmart%2Fmp4%2Foau%2F1%&notifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
    

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

    接口响应

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

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

    异步处理返回码:

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

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

    失败原因分为以下几种情况:

    1. src video too long 视频时长超出限制
    2. src info parse failed 视频源文件解析失败
    3. unsupported vcodec 视频源文件编码非 h264
    4. convert failed 转码失败
    5. parse trans result failed 转码结果解析失败
    6. can't compress this video 视频不能被缩小
    7. video had been transfered before 视频已转码

    调用示例

    触发持久化

    以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 = 'avsmart/mp4/oau/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 = 'avsmart/mp4/oau/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
    以上内容是否对您有帮助?
  • Qvm free helper
    Close