介绍

基本概念

格式支持

计费方式

API 说明

环境说明

HTTP请求格式

访问控制说明

视频转码请求参数说明

presettemplate音视频处理

persisitentOps具体说明

avthumb音视频处理

HLS切片

视频帧缩略图

视频采样缩略图

音视频元信息

任务查询接口

persistenNotifyUrl说明

预置模板接口说明

错误码表

介绍

美团云音视频服务旨在为用户提供包括音视频存储、转码、CDN加速、回源鉴权控制等高质量的服务。用户可以将音视频存储在美团云对象存储上,通过调用相关接口即可实现对音视频的在线处理。 音视频在线处理服务目前支持的功能有转码、切片、视频截图、私有M3U8等功能。该服务能够满足手机、平板、智能电视和PC等多终端适配的需求。

基本概念

任务队列

任务队列是用来管理转码任务或者缩略图任务的。转码任务加入到任务队列中,才会被音视频处理服务调度到转码执行;如果任务队列中作业数量过多,会排队等待。

转码任务

用户对转码需求的参数在转码任务中进行管理,用户可以选择转码模板,设置输入输出,完成对特定源视频转成指定格式的过程。

转码模板

转码模板是转码具体参数的配置集合,目前仅支持系统自带的转码模板。更多的操作请参考API文档。

视频元信息

支持获取存储于对象存储上的音、视频文件的编码和内容信息。

水印

音视频服务支持在一个输出文件上覆盖静态水印。用户可将水印位置、偏移量、大小等相对固定的参数设定为水印规格。

缩略图

从原视频中截取一帧或多帧画面,并根据用户指定的大小和伸缩策略生成图片,满足视频预览、特殊帧提取等需求。

限制

单个源音视频文件大小限制和对象存储单个可上传文件的大小限制保持一致,为5TB。

格式支持

输入文件格式

  • 文件格式:3gpp, m3u8/m3u, asf/wmv, avi, flv/f4v, mkv, mov/mp4/m4a, mp3, mp2, mpeg/mpg, ts/ogg, mts, wmv/wma, rm/rmvb, webm等。
  • 视频编码标准:H.264, H.263/H.263+, MPEG-1/2/4, VP8/9, Quicktime, RealVideo, WMV等。
  • 音频编码标准:MP1, MP2, MP3, AAC, AC-3, WMA, PCM, ADPCM, AMR, RealAudio, Vorbis等。

输出文件格式

  • 文件格式:mp4, m3u8(HLS), flv, mp3, m4a
    • mp4为通用视频格式(Android/iOS/Windows兼容);
    • m3u8(HLS)为iOS默认视频格式;
    • flv为Flash视频格式;
    • mp3和m4a为音频文件格式。
  • 视频编码标准:H.264/AVC
  • 音频编码标准:AAC, MP3

计费方式

音视频服务是将存储在对象存储上的音视频文件进行转码处理,并可通过CDN加速将目标音视频文件分发到各种终端,因此计费涉及以下三部分:

  • 音视频转码处理暂不收费;
  • 对象存储及流量收费标准请参考对象存储定价
  • 如果您同时使用CDN加速服务,收费标准请参考CDN定价

欠费说明请参考对象存储欠费说明

API说明

环境说明

Region
环境
域名
华北1区 公有云视频编码服务 ve0.mtmss.com
华北2区 公有云视频编码服务 ve0.mtmss.com
华东1区  公有云视频编码服务  ve0.eastchina1.mtmss.com

支持目标视频格式,音频码率,音频质量,视频帧率,视频码率, 视频编码方案, 音频编码方案.

注意:目前只支持触发持久化处理,即视频文件已经在云存储上,视频处理完成后再上传到云存储上。

这里必须指定saveas参数。

scope格式:.. /

比如: "mydir.123456.mtmss.com/input.flv"

persistentOps, persistentNotifyUrl的格式请参考下文。 同时要增加一个saveas参数,格式和scope相似,是视频处理完成后的ObjectKey.比如

mydir.123456.mtmss.com/output.m3u8

Scope/Saveas说明

环境
格式
例子
公有云 ../

mydir.123456./input.flv

HTTP请求格式

服务域名:ve0.mtmss.com(以华为1区为例)

功能
Host
Path
Method
Body示例
格式转换,HLS切片,缩略图等 ve0.mtmss.com /pfop POST

{
"scope": "bucket.accountid.mtmss.com/input.mp3",
"persistentOps": "avthumb/m3u8",
"saveas": "bucket.accountid.mtmss.com/ouput.m3u8",
"persistentNotifyUrl": "http://notify.myhost.com/notify"
}

若使用预置模板:

{
"scope": "bucket.accountid.mtmss.com/input.mp3",

 "presettemplate":"audio-MP3-320K", 
"saveas": "bucket.accountid.mtmss.com/ouput.m3u8",
"persistentNotifyUrl": "http://notify.myhost.com/notify"
}

音视频元信息 ve0.mtmss.com /avinfo POST

{
"scope": "bucket.accountid.mtmss.com/input.mp3",

 }

任务查询接口 ve0.mtmss.com /pfopjobs GET

GET /pfopjobs?userid=: 返回job列表

GET /pfopjobs/{jobid} 返回某个job的具体信息(todo)

模板查询接口 ve0.mtmss.com /presettemplate GET

GET /presettemplate

 

scope:待处理的视频文件url,该文件已经存储在美团云存储上面,格式如下 

 ..mtmss.com/

persistentOps: 具体的视频处理操作,不同的功能有具体的参数,见下节。

saveas: 处理完成后,处理后视频文件的url,格式和scope一样。

persistentNotifyUrl: 处理完成后,向该url发送处理结果。

 

访问控制说明

和MSS对象存储的方式相同,格式如下:

Authorization: AWS AccessKey:Signature

Signature 是请求中选定元素拼接的字符串StringToSign 基于用户的SECRET的 RFC 2104HMAC-SHA1值。

签名生成方法

Authorization = "AWS" + " " + ACCESS KEY + ":" + Signature;
Signature = Base64( HMAC-SHA1( ACCESS SECRET, UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign = HTTP-Verb + "\n" +
    Content-MD5 + "\n" +
    Content-Type + "\n" +
    Date + "\n" +
    CanonicalizedAmzHeaders +
    CanonicalizedResource;

 

视频转码请求参数说明

视频转码请求有两大类:基于persistentOps(自定义转换参数)或基于presettemplate(预置模板),示例如下:

类型
path
method
body

基于persistentOps

(自定义转换参数)

/pfop post {
"scope": "bucket.accountid.mtmss.com/input.mp3",
"persistentOps": "avthumb/m3u8",
"saveas": "bucket.accountid.mtmss.com/ouput.m3u8",
"persistentNotifyUrl": "http://notify.myhost.com/notify"
}

基于presettemplate

(预置模板)

/pfop post

{
"scope": "bucket.accountid.mtmss.com/input.mp3",

"presettemplate":"audio-MP3-320K",
"saveas": "bucket.accountid.mtmss.com/ouput.m3u8",
"persistentNotifyUrl": "http://notify.myhost.com/notify"
}

body参数说明:

 

 
说明
是否必填
scope

待处理的视频文件url,格式如下:

.. mtmss.com/

必填
presettemplate

预置模板的名字,

模板名称以及和persistentOPs的对应关系见:音视频模板

persistentOps和presettemplate二填一
persistentOps 具体的视频转换参数,见下节 persistentOps和presettemplate二填一
saveas

处理后视频文件url,格式如下:

..mtmss.com/

必填
persistentNotifyUrl    

视频转码请求返回任务id,如下:

{
    "id": ""
}

 

presettemplate音视频处理

presettemplate和persistentOps的关系:预置模板(presettemplate)定义了一些常见的具体转码参数,简化了转码任务的提交。

presettemplateName的具体值见:音视频模板,下面给出一个解释示例:

预置模板名称
规格参数
audio-MP3-320K

avthumb/mp3/ab/320k/ar/44100/acodec/libmp3lame

预置模板“audio-MP3-320K”定义了具体的persistentOps(avthumb/mp3/ab/320k/ar/44100/acodec/libmp3lame),两者的效果相同。

下面这两个请求,可以达到同样的转码效果:

 
请求body
使用

presettemplate

{
"scope": "bucket.accountid.mtmss.com/input.mp3",

"presettemplate":"audio-MP3-320K",
"saveas": "bucket.accountid.mtmss.com/ouput.m3u8",
"persistentNotifyUrl": "http://notify.myhost.com/notify"
}

使用

persistentOps

{
"scope": "bucket.accountid.mtmss.com/input.mp3",
"persistentOps": "avthumb/mp3/ab/320k/ar/44100/acodec/libmp3lame",
"saveas": "bucket.accountid.mtmss.com/ouput.m3u8",
"persistentNotifyUrl": "http://notify.myhost.com/notify"
}

 

persistentOps具体说明

persistentOps 支持avthumb,vframe, vsample等,下面详细说明avthumb的参数.

avthumb音视频处理

avthumb/
       /ab/
       /aq/
       /ar/
       /r/
       /vb/
       /vcodec/
       /acodec/
       /scodec/
       /ss/
       /t/
       /s/
       /aspect/
       /wmImage/
       /wmGravity/

 

 

参数名称
类别
说明
单位、取值
必填
  A/V 目标视频格式 flv,mp4,m3u8,gif 必填
/ab/ A

音频码率, 若指定码率大于原音频码率,

则使用原音频码率

比特每秒(bit/s),

常见:64k, 128k,192k, 256k,320k

 
/aq/ A

音频质量,支持mp3和aac

值越小,质量越高

mp3: 0-9

aac: 10-500

 
/ar/ A 音频采样频率

赫兹(Hz),常用:8000,12050,

22050,44100

 
/r/ V 视频帧率 赫兹(Hz),常用:24, 25, 30  
/vb/ V 视频码率,若指定码率大于原视频码率,

则使用原视频码率

比特每秒(bit/s),常用:128k, 1.25m, 5m  
/vcodec/ V 视频编码方案 libx264, libvpx, libtheora, libxvid, libxvid-vp9  
/acodec/ A 音频编码方案 libmp3lame, libfaac, libvorbis  
/ss/ A/V 视频截取开始时间  
/t/ V 视频截取长度  
/s/ V 视频分辨率 x  
/aspect/ V 宽高比 :  
/wmImage/ V 水印图片的源路径 需要urlsafe_base64_encode编码  
/wmGravity/ V 视频图水印位置    

 

示例

  1. 将wav音频转换为mp3格式,比特率256k

    POST /pfop/ HTTP/1.1
    Host:ve0.mtmss.com
    Content-Type: application/json; charset=utf-8
    Date: Tue, 27 Mar 2007 19:36:42 +0000
    Content-MD5: ***
    Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
     
    {
        "scope": "mydir.123456.mtmss.com/input.wav"
        "persistentOps": "avthumb/mp3/ab/256k"
        "saveas": "mydir.123456.mtmss.com/output.mp3"
        "persistentNotifyUrl": "http://myhost.com/notify"
    }
  2. 将flv格式视频转换为mp4格式,帧率为24, 使用x264进行视频编码:

    POST /pfop/ HTTP/1.1
    Host:ve0.mtmss.com
    Content-Type: application/json; charset=utf-8
    Date: Tue, 27 Mar 2007 19:36:42 +0000
    Content-MD5: ***
    Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
     
    {
        "scope": "mydir.123456.mtmss.com/input.flv"
        "persistentOps": "avthumb/mp4/r/24/vcodec/libx264"
        "saveas": "mydir.123456.mtmss.com/output.mp4"
        "persistentNotifyUrl": "http://myhost.com/notify"
    }

HLS切片

avthumb/m3u8/segtime/
            /ab/
            /aq/
            /ar/
            /r/
            /vb/
            /vcodec/
            /acodec/
            /ss/
            /t/
            /s/
            /hlsKey/
            /hlsKeyUrl/

 

参数名称
类别
说明
单位、取值
必填
/segtime/ A/V 每个音/视频切片的播放时长 秒,默认值为10秒,范围[5,120]  
/ab/ A 静态码率(CBR) 比特每秒(bit/s), 常用64k, 128k, 256k, 320k等  
/aq/ A

动态码率(VBR),值越小码率越高,

不能和静态码率同时使用

[0,9]  
/ar/ A 音频采样频率 赫兹(Hz), 常用:8000,12050, 44100等  
/r/ V 视频帧率 赫兹(Hz), 常用:24,25,30等  
/vb/ V 视频比特率 比特每秒(bit/s), 常用:128k, 1.25m, 5m等  
/vcodec/ V 视频编码方案 libx264(默认), libvpx, libtheora, libxvid等  
/acodec/ A 音频编码方案 libmp3lame, libfaac, libvorbis等  
/scodec/ V 字幕编码方案 mov_text, srt, ass等  
/ss/ V 视频截取开始时间  
/t/ V 视频截取长度  
/s/ V 视频分辨率 格式x  
/stripmeta/ A/V 清除文件元数据 1清除,0保留  
/rotate/ V 顺时旋转的度数 90、180、270  
/hlsKey/ A/V AES128加密视频秘钥 16字节  
/hlsKeyUrl/ A/V 秘钥访问url url  

 

示例

 1. 将mp3音频切片:

POST /pfop/ HTTP/1.1
Host:ve0.mtmss.com
Content-Type: application/json; charset=utf-8
Date: Tue, 27 Mar 2007 19:36:42 +0000
Content-MD5: ***
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
 
{
    "scope": "mydir.123456.mtmss.com/input.mp3"
    "persistentOps": "avthumb/m3u8"
    "saveas": "mydir.123456.mtmss.com/output.m3u8"
    "persistentNotifyUrl": "http://myhost.com/notify"
}

 

视频帧缩略图

vframe/
      /offset/
      /w/
      /h/
 
参数名称
类别
说明
单位、取值
必填
  V 输出截图的格式 jpg, png 必填
/offset/ V 截取视频的时刻 必填
/w/ V 缩略图宽度 像素(px), 范围1-3840  
/h/ V 缩略图高度 像素(px), 范围1-2160  

示例

  1. 截取视频第30秒的截图,格式为jpg,宽度480px, 高度360px
POST /pfop/ HTTP/1.1
Host:ve0.mtmss.com
Content-Type: application/json; charset=utf-8
Date: Tue, 27 Mar 2007 19:36:42 +0000
Content-MD5: ***
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
 
{
    "scope": "mydir.123456.mtmss.com/input.mp4"
    "persistentOps": "vframe/jpg/offset/30/w/480/h/360"
    "saveas": "mydir.123456.mtmss.com/input30s.jpg"
    "persistentNotifyUrl": "http://myhost.com/notify"
}
 

视频采样缩略图

vsample/
      /ss/
      /t/
      /s/
      /interval/
 
参数名称
类别
说明
单位、取值
必填
  V 输出截图的格式 jpg, png 必填
/ss/ V 视频截取的开始时间 必填
/t/ V 采样总时长 必填
/s/ V 缩略图分辨率

像素(px),格式:x,

宽度范围:1-1920

高度范围:1-1080

 
/interval/ V 采样间隔 秒,默认5秒  

 

示例

  1. 取视频的第30秒到330秒之间,以5秒为间隔的截图,图片格式为jpg, 宽度为480px, 高度为360px.
    截图文件名称依次为inputsample-0.jpg, inputsample-1.jpg, inputsample-2.jpg

POST /pfop/ HTTP/1.1
Host:ve0.mtmss.com
Content-Type: application/json; charset=utf-8
Date: Tue, 27 Mar 2007 19:36:42 +0000
Content-MD5: ***
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
 
{
    "scope": "mydir.123456.mtmss.com/input.mp4"
    "persistentOps": "vsample/jpg/ss/30/t/300/s/480x360"
    "saveas": "mydir.123456.mtmss.com/inputsample.jpg"
    "persistentNotifyUrl": "http://myhost.com/notify"
}

 

音视频元信息

POST /avinfo/ HTTP/1.1
Host:ve0.mtmss.com
Content-Type: application/json; charset=utf-8
Date: Tue, 27 Mar 2007 19:36:42 +0000
Content-MD5: ***
Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
 
{
    "scope": "mydir.123456.mtmss.com/input.mp4"
}

 

响应

如果请求成功,返回类似如下内容

{
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "Constrained Baseline",
            "codec_type": "video",
            "codec_time_base": "1/180000",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 1920,
            "height": 1080,
            ...
        },
        {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "profile": "LC",
            "codec_type": "audio",
            "codec_time_base": "1/44100",
            "codec_tag_string": "mp4a",
            "codec_tag": "0x6134706d",
            ...
        }
    ],
    "format": {
        "filename": "http://mtmss.com/media/input%E8%A7%86%E9%A2%91.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "147.215000",
        "size": "67658411",
        "bit_rate": "3676712",
        "probe_score": 100,
        ...
    }
}

 

任务查询接口

请求参数:

userid: 用户tenantid

limit:本次请求返回的数量

offset:本次请求返回的偏移量

 

返回参数:

total: 满足条件的任务个数

limit: 实际返回的任务的个数

offset:返回的偏移量

jobs:任务列表

 

job详情,每个字段的含义如下:

字段
类型
含义
一定返回
id int

任务Id

status int 状态码,0 表示成功,1 表示等待处理,2 表示正在处理,3 表示处理失败,4 表示回调失败
error string 若失败,给出错误码,见错误码表
desc string 状态详细描述
scope string scope,输入位置和输入文件
scopeBucket string 输入位置  
scopeKey string 输入文件  

presettemplate

string 预置模板名称

presettemplateDescription

string 预置模板描述

persistentOps

string

处理规格

saveas string saveas, 输出位置和输出文件
saveasBucket string 输出位置  
saveasKey string 输出文件  
begin int 任务开始时间,单位:Unix timestamp
end int 任务结束时间,单位:Unix timestamp

 

示例: 

GET /pfopjobs?userid= HTTP/1.1
Host:ve0.mtmss.com
Content-Type: application/json; charset=utf-8
Date: Tue, 27 Mar 2007 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: *

{
"total": 20,
"limit":2,
"offset":1,
"jobs":[
{
    "id": "",
    "status": "",
    "error": "",
    "desc": "",
    "presettemplate": "",
    "presettemplateDescription": "",
    "scope": "",
    "scopeBucket": "",
    "scopeKey": "",
    "persistentOps": "",
    "saveas": "",
    "saveasBucket": "",
    "saveasKey": ",
    "begin": "",
    "end": ""
},
{
    "id": "",
    "status": "",
    "error": "",
    "desc": "",
    "presettemplate": "",
    "presettemplateDescription": "",
    "scope": "",
    "scopeBucket": "",
    "scopeKey": "",
    "persistentOps": "",
    "saveas": "",
    "saveasBucket": "",
    "saveasKey": ",
    "begin": "",
    "end": ""
}
]
}
 

persistentNotifyUrl说明

当完成视频编辑,会向改url发送Job执行结果,内容是JSON字符串,内容格式如下,字段的具体含义和任务查询返回字段的含义相同。

{
    "id": "",
    "status": "",
    "error": "",
    "desc": "",
    "presettemplate": "",
    "presettemplateDescription": "",
    "scope": "",
    "persistentOps": "",
    "saveas": "",
    "begin": "",
    "end": ""
}

预置模板接口说明

模板详情

 
 
示例
模板名称 name video-MP4-1080P
模板描述 description mp4,1080p, 5560kbps,适用于IPhone 4s以上, iPad 3G 以上,Samsung Galaxy S2/Tab2以上,Web及桌面
输出格式 outputFormat mp4
处理规格 persistentOps avthumb/mp4/ab/160k/ar/44100/acodec/libfaac/r/30/vb/5400k/vcodec/libx264/s/1920x1080/autoscale/1/strpmeta/0
视频编码方案 videoCodec libx264
编码规格 libx264Profile  

视频码率

videoBitRate  
视频帧率 videoFrameRate  
最大宽度 width  
最大高度 height  
视频宽高比 aspect  
音频编码方案 audioCodec  
采样率 audioSamplingRate  
音频码率 audioBitRate  

请求示例: 

GET /presettemplate HTTP/1.1
Host:ve0.mtmss.com
Content-Type: application/json; charset=utf-8
Date: Tue, 27 Mar 2007 19:36:42 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE: *

返回内容如下:

HTTP/1.1 200 OK  

Date: Tue, 24 Mar 2015 13:37:10 GMT

Content-Type: application/json;charset=UTF-8

 

{   "presettemplates": [     

{

"name": "video-MP4-1080P",

"description": "mp4,1080p, 5560kbps,适用于IPhone 4s以上, iPad 3G 以上,Samsung Galaxy S2/Tab2以上,Web及桌面",  

"outputFormat": "mp4",

"persistentOps": "avthumb/mp4/ab/160k/ar/44100/acodec/libfaac/r/30/vb/5400k/vcodec/libx264/s/1920x1080/autoscale/1/stripmeta/0",

"videoCodec", "libx264",

"libx264Profile", "high",

"videoBitRate": "5400 kbps",

"videoFrameRate": "30 fps",

"width": "1280 px",

"hight": "1080 px",

"aspect": "keep",

"audioCodec": "libmp3lame",

"audioSamplingRate":"44100Hz",

"audioBitRate": "160 kbps",

},

{

"name": "video-HLS-1080P",

"description": "hls,1080p, 5560kbps,适用于IPhone 4s以上, iPad 3G 以上,Samsung Galaxy S2/Tab2以上,Web及桌面",  

"outputFormat": "m3u8",

"persistentOps": "avthumb/m3u8/segtime/10/ab/160k/ar/44100/acodec/libfaac/r/30/vb/5400k/vcodec/libx264/s/1920x1080/strpmeta/0" ,

"videoCodec", "libx264",

"libx264Profile", "high",

"videoBitRate": "5400 kbps",

"videoFrameRate": "30 fps",

"width": "1920 px",

"hight": "1080 px",

"aspect": "keep",

"audioBitRate": "libmp3lame",

"audioSamplingRate":"44100Hz",

"audioBitRate": "160 kbps",  

}

]

}

错误码表

1 通用错误

错误代码
描述
AccessDenined 访问拒绝
InvalidParameter 参数不合法
InvalidParameter.NullValue 参数为空
InvalidParameter.InvalidState 状态无效
InvalidParameter.EmptyValue 参数不能为空
InvalidParameter.NotSupported 参数不支持
InternalError 内部未知错误
InvalidParameter.OutOfRange 参数超出范围
InvalidParameter.ResourceNotFound 资源不存在
InvalidParameter.ResourceNotSupported 操作资源不支持
InvalidParameter.JsonFormatInvalid 参数不是有效的json字符串
InvalidParameter.ResourceURLInvalid 资源URL无效
InvalidOps 操作无效

 

2 作业错误

错误代码
描述
InvalidParameter.TemplateNotSupported 模板不支持
InvalidParameter.TemplateNotFound 模板不存在
InternalError 内部未知错误