欢迎各位兄弟 发布技术文章
这里的技术是共享的
注意:接口规格不含任何空格与换行符,下列内容经过格式化以便阅读。
avthumb/<Format>
/ab/<BitRate>
/aq/<AudioQuality>
/ar/<SamplingRate>
/r/<FrameRate>
/vb/<VideoBitRate>
/vcodec/<VideoCodec>
/acodec/<AudioCodec>
/scodec/<SubtitleCodec>
/subtitle/<SubtitleURL>
/ss/<SeekStart>
/t/<Duration>
/s/<Resolution>
/autoscale/<Autoscale>
/aspect/<Aspect>
/stripmeta/<StripMeta>
/h264Crf/<H264Crf>
/rotate/<Degree>
/wmImage/<EncodedRemoteImageUrl>
/wmGravity/<Gravity>
/wmText/<text>
/wmGravityText/<gravity_text>
/wmFont/<font>
/wmFontColor/<fontcolor>
/wmFontSize/<fontsize>
/writeXing/<Xing>
/an/<AudioNo>
/vn/<VideoNo>
/sn/<SubtitleNo>
/hlsMethod/<HLSMethod>
参数名称 | 类别 | 必填 | 说明 |
---|---|---|---|
<Format> | A/V | 是 | 封装格式,具体细节请参考支持转换的封装格式。 |
/ab/<BitRate> | A | 音频码率,单位:比特每秒(bit/s),常用码率:64k,128k,192k,256k,320k等。在不改变音频编码格式时,若指定码率大于原音频码率,则使用原音频码率进行转码。 | |
/aq/<AudioQuality> | A | 音频质量,取值范围为0-9(mp3),10-500(aac),仅支持mp3和aac,值越小越高。不能与上述码率参数共用。 | |
/ar/<SamplingRate> | A | 音频采样频率,单位:赫兹(Hz),常用采样频率:8000,12050,22050,44100等。 | |
/r/<FrameRate> | V | 视频帧率,每秒显示的帧数,单位:赫兹(Hz),常用帧率:24,25,30等,一般用默认值。 | |
/vb/<VideoBitRate> | V | 视频码率,单位:比特每秒(bit/s),常用视频码率:128k,1.25m,5m等。在不改变视频编码格式时,若指定码率大于原视频码率,则使用原视频码率进行转码。 | |
/vcodec/<VideoCodec> | V | 视频编码格式,具体细节请参考支持转换的视频编码格式。 | |
/acodec/<AudioCodec> | A | 音频编码格式,具体细节请参考支持转换的音频编码格式。 | |
/audioProfile/<profile> | A | 设置音频的profile等级,支持:aac_he。注:需配合 libfdk_aac 编码方案使用,如 avthumb/m4a/acodec/libfdk_aac/audioProfile/aac_he 。 | |
/scodec/<SubtitleCodec> | V | 字幕编码方案,支持方案:mov_text 。该参数仅用于修改带字幕视频的字幕编码。 | |
/ss/<SeekStart> | A/V | 指定音视频截取的开始时间,单位:秒,支持精确到毫秒,例如3.345s。用于视频截取,从一段视频中截取一段视频。 | |
/t/<Duration> | A/V | 指定视频截取的长度,单位:秒,支持精确到毫秒,例如1.500s。用于视频截取,从一段视频中截取一段视频。 | |
/s/<Resolution> | V | 指定视频分辨率,格式为<width>x<height> 或者预定义值,width 取值范围 [20,3840],height 取值范围 [20,2160]。 | |
/autoscale/<Autoscale> | V | 配合参数/s/ 使用,指定为1时,把视频按原始比例缩放到/s/ 指定的矩形框内,0或者不指定会强制缩放到对应分辨率,可能造成视频变形。 | |
/aspect/<Aspect> | V | 该参数为视频在播放器中显示的宽高比,格式为<width>:<height> 。例如:取值3:4 表示视频在播放器中播放是宽:高 =3:4 (注:此处取值仅为体现演示效果)。 | |
/stripmeta/<StripMeta> | A/V | 是否清除文件的metadata ,1为清除,0为保留。 | |
/h264Crf/<H264Crf> | V | 设置h264的crf值,整数,取值范围[18,28],值越小,画质更清晰。注意:不可与vb共用 | |
/rotate/<Degree> | V | 指定顺时针旋转的度数,可取值为90 、180 、270 、auto ,默认为不旋转。 | |
/wmImage/<EncodedRemoteImageUrl> | V | 水印图片的源路径,目前仅支持远程路径,需要经过urlsafe_base64_encode 。水印具体介绍见视频水印。 | |
/wmGravity/<Gravity> | V | 视频图片水印位置,存在/wmImage/ 时生效。 | |
/wmText/<EncodedText> | V | 水印文本内容,需要经过urlsafe_base64_encode 。 | |
/wmGravityText/<GravityText> | V | 文本位置(默认NorthEast) | |
/wmFont/<Font> | V | 文本字体,需要经过urlsafe_base64_encode ,默认为黑体,注意:中文水印必须指定中文字体。 | |
/wmFontColor/<FontColor> | V | 水印文字颜色,需要经过urlsafe_base64_encode ,RGB格式,可以是颜色名称(例如红色)或十六进制(例如#FF0000),参考RGB颜色编码表,默认为黑色。 | |
/wmFontSize<FontSize> | V | 水印文字大小,单位: 缇,等于1/20磅,默认值0(默认大小) | |
/writeXing/<Xing> | A | 转码成mp3时是否写入xing header,默认1写入,写入会导致 file ,afinfo 等命令识别出错误的码率。好处是在需要音频时长、帧数的时候只需要获取header。 | |
/an/<AudioNo> | A | 是否去除音频流,0为保留,1为去除。 默认值为0。 | |
/vn/<VideoNo> | V | 是否去除视频流,0为保留,1为去除。 默认值为0。 | |
/subtitle/<SubtitleURL> | V | 添加字幕,支持:srt 格式字幕(uft-8 编码和和 utf-8 BOM 编码)、带有字幕的 mkv 文件、embed(将原视频的字幕流嵌入目标视频)。基于 base64 编码。 | |
/sn/<SubtitleNo> | V | 是否去除字幕,0为保留,1为去除。默认值为0。 | |
/hlsMethod / | A/V | HLS 七牛私有DRM名称,以qiniu-protect-开头,后面跟10~20之间的数字。在七牛私有DRM进行音视频内容保护时设置加密的秘钥。 |
注意:转码操作若未指定音视频码率,转码结果的码率会小于等于原音视频码率,若指定码率大于原音视频码率,转码操作会使用原视频码率进行转码。
{
"scope": "qiniu-ts-demo:sample.wav",
"deadline": 1390528576,
"persistentOps": "avthumb/mp3",
"persistentNotifyUrl": "http://fake.com/qiniu/notify"
}
{
"scope": "qiniu-ts-demo:sample.wav",
"deadline": 1390528576,
"persistentOps": "avthumb/mp3/ab/192k",
"persistentNotifyUrl": "http://fake.com/qiniu/notify"
}
{
"scope": "qiniu-ts-demo:thinking-in-go.mp4",
"deadline": 1390528576,
"persistentOps": "avthumb/flv/r/24/vcodec/libx264",
"persistentNotifyUrl": "http://fake.com/qiniu/notify"
}
{
"scope": "qiniu-ts-demo:thinking-in-go.mp4",
"deadline": 1390528576,
"persistentOps": "avthumb/avi/ab/64k/acodec/libmp3lame",
"persistentNotifyUrl": "http://fake.com/qiniu/notify"
}
触发持久化
)形式,将wav音频转换为mp3格式,VBR参数为3,采样频率为44100: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.wav&fops=avthumb%2Fmp3%2Far%2F44100%2Faq%2F3¬ifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
注意:要在Authorization
头部的<AccessToken>
前添加QBox
和半角空格。
触发持久化
)形式,将mp4视频转换为flv格式,帧率为30,视频比特率为256k,使用x264进行视频编码,音频采样频率为22050,音频比特率为64k,使用mp3进行音频编码: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%2Fflv%2Fr%2F30%2Fvb%2F256k%2Fvcodec%2Flibx264%2Far%2F22050%2Fab%2F64k%2Facodec%2Flibmp3lame
¬ifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
注意:要在Authorization
头部的<AccessToken>
前添加QBox
和半角空格。
触发持久化
)形式,将mp4视频转换为ogv
格式,帧率为30,视频比特率为1800k,使用libtheora
进行视频编码,音频采样频率为44100,音频比特率为128k,使用libvorbis
进行音频编码: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%2Fogv%2Fr%2F30%2Fvb%2F1800k%2Fvcodec%2Flibtheora%2Far%2F44100%2Fab%2F128k%2Facodec%2Flibvorbis
¬ifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
注意:要在Authorization头部的<AccessToken>
前添加QBox
和半角空格。
注意:
libx264
libvpx
libtheora
libxvid
等。libmp3lame
libfaac
libvorbis
等。avthumb/mp3/ab/64k
会把默认码率128k调整为64k。默认参数列表:
格式 | 视频编码器 | 视频码率 | 音频编码器 | 音频码率 | 音频采样率 |
---|---|---|---|---|---|
flash | flv | 512k | libmp3lame | 64k | 44100 |
webm | libvpx | 700k | libvorbis | 128k | 48k |
mp3 | - | - | libmp3lame | 128k | 44100 |
amr | - | - | amr_nb | 12.20k | 8000 |
触发持久化
以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/s/640x360/vb/1.25m'
# 可以对转码后的文件进行使用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'
# 通过添加'|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)