更新时间:2023-11-09 17:12:39
视频转码功能,支持将云存储上的某种码率、分辨率或者H.264编码方式的客户视频文件,转成多种码率、多种分辨率或者H.265编码方式的视频文件,以满足不同网络环境的用户观影体验。
H.265与H.264相比:
(1) 同样的画质,视频码率理论上可以减少30%˜50%,即占用的存储空间和带宽均可减少30%˜50%。
(2) 同样的码率,视频画质理论上可以提升30%˜50%。
内容提供商可以通过H.265来提高画质或者降低带宽成本,而网宿点播加速平台可实现H.265和H.264互转,减少客户开发量。
视频转码,支持常见的视频/音频封装格式和编码格式,如:
(1) 视频格式: MP4、FLV、HLS、DASH、TS、MKV、MOV、WMV、AVI、VP8、VP9、RealVideo、Windows Media Video等;
(2) 音频格式:AAC、AC-3、MP1、MP2、MP3、PCM、RealAudio、Windows Media Audio(WMA)、OGG等;
(3) 编码格式:H.265、H.264、H.263、MPEG等。
客户上传视频文件的时候,可以同时配置转码操作参数,也可以同时配合使用视频转封装、音视频操作等功能,即可通过同一条API命令实现多个功能。
请求参数以如下格式组织,作为请求内容提交:
bucket=<Urlsafe_Base64_Encoded_Bucket>&key=<Urlsafe_Base64_Encoded_Key>&fops=<Urlsafe_Base64_Encoded_Fops>¬ifyURL=<Urlsafe_Base64_Encoded_PersistentNotifyUrl>&force=<Force>&separate=<Separate>
参数 | 必填 | 描述 |
bucket | 是 | 空间名,即:原文件所在的空间 |
key | 是 | 文件名,即:原文件的文件名 |
fops | 是 | 视频转码参数列表;支持同时请求多个处理,参数列表之间用; 分隔,即:fops=Urlsafe_Base64_Encode(操作1;操作2;……) |
notifyURL | 否 | 处理结果通知接收URL,通知数据详细说明处理后的内容信息,比如视频码率、时长等。请参考通知数据内容说明。 |
force | 否 | 是否强制执行数据处理。支持设置以下数值: (1)0:指定的数据处理结果如果存在,返回文件已存在,不进行处理,避免重复处理浪费资源; (2)1:强制执行数据处理并覆盖已有文件; 默认为0。 |
separate | 否 | 处理是否分开通知。支持设置以下数值: (1)0:表示所有转码指令执行完后再一次性通知notifyURL (2)1:表示每个转码指令执行完后都通知notifyURL 默认为0。 |
使用以下格式填充参数后,并将其URL安全的Base64编码后的值填充到fops参数中:
<op>/<Format>
/r/<FrameRate>
/ab/<BitRate>
/vb/<VideoBitRate>
/vcodec/<VideoCodec>
/acodec/<AudioCodec>
/s/<Resolution>
/autoscale/<Autoscale>
/autofill/<autofill>
/GOPInterval/<GOPInterval>
/rotate/<Degree>
/an/<AudioNo>
/vn/<VideoNo>
/moovToFront/<moovToFront>
/sar/<sar>
/preset/<Preset>
|saveas/<Urlsafe_Base64_Encode(bucket:filekey)>
参数 | 必填 | 描述 |
<op> | 是 | avthumb(操作类型-音视频处理) |
<format> | 是 | 输出的目标格式,支持mp4、flv、m3u8、mpd等。 |
/r/<FrameRate> | 否 | 视频帧率,每秒显示的帧数,单位:赫兹(H)。不支持支持动态帧率。 常用帧率:24,25,30等,一般用默认值。 |
/ab/<BitRate> | 否 | 音频码率,单位:比特每秒(bit/s),常用码率:64k,128k,192k,256k,320k等。 |
/vb/<VideoBitRate> | 否 | 视频比特率,单位:比特每秒(bit/s)。支持动态码率。 常用视频比特率:128k,1.25m,5m等。 |
/vcodec/<VideoCodec> | 否 | 视频编码方案,支持方案:libx264,libvpx,libxvid,libws265等,分别对应H.264编码、谷歌编码器、MPEG-4编码、网宿H.265编码。同时支持copy参数,保持原有视频的编码方案。默认值为copy。 |
/acodec/<AudioCodec> | 否 | 音频编码方案,支持方案:libmp3lame,libfaac,libvorbis等,分别对应音频封装格式为mp3、aac、OGG等。同时支持copy参数,保持原有音频的编码方案。默认值为copy。 |
/s/<Resolution> | 否 | 指定视频分辨率,格式为wxh 或者预定义值。 1. 正常缩放:设置宽和高,则按配置输出指定宽和高的视频。例如:640x480。若设置的分辨率高宽比和原视频分辨率不一致,则会出现拉伸变形的情况。 2. 按宽或高自适应比率输出:仅指定宽或者高,则输出会根据原视频的宽高比自适应缩放。 例如:输入视频是1920x1080,分辨率配置为1280x或者x720,则输出视频分辨率均为1280x720。 |
/autoscale/<Autoscale> | 否 | 配合参数/s/使用。指定为1 时,把视频按原始比例缩放到/s/指定的矩形框内;0 或者不指定,会强制缩放到对应分辨率,可能造成视频变形。 例如:源是1920x1920 ,配置输出分辨率为1280x720 ,则: 1. autoscale=0:输出为指定的1280x720 ,拉伸变形; 2. autoscale=1:输出会按源视频比例(1:1)缩放成720x720 。 |
/autofill/<autofill> | 否 | 配合参数/s/使用,对于非标准宽高比视频添加上下或左右黑边,以达到目标分辨率;1填充,0 不填充。 例如:源是1920x1920,配置输出分辨率为1280x720,则: autofill=1:输出为则指定的1280x720,实际画面大小为720x720,视频居中,两边填充黑边。 |
/GOPInterval/<GOPInterval> | 否 | 指定关键帧时间间隔,单位:ms。与关键帧帧间隔参数g(即:每隔几帧插入关键帧)不能共用 |
/rotate/<Degree> | 否 | 指定顺时针旋转的度数,可取值为90、180 、270 、auto,默认为不旋转。 |
/an/<AudioNo> | 否 | 是否去除音频流,0为保留,1为去除。默认值为0 。 |
/vn/<VideoNo> | 否 | 是否去除视频流,0为保留,1为去除。默认值为0 。 |
/moovToFront/<moovToFront> | 否 | 将 mp4 文件的元信息放到头部。0为不调整元信息的位置,1 为调整,即元信息若在尾部则移动到头部。默认为0。 |
/sar/<sar> | 否 | 像素宽高比,例如:1:1 。此值优先级比分辨率高,即设置输出视频分辨率 s=720*720,sar=1:2 ,则实际输出视频为720*1420 |
/preset/<Preset> | 否 | HLS预设集(Preset)名称,如下表。 预设集是一组事先配置好的转码参数,一个预设集的名称代表一组参数,可以直接调用。使用预设集时,可以同时指定其他参数以覆盖对应预设参数。 |
|saveas/<bucket:filekey> | 否 | 保存为指定文件,参数中需要填入"空间: 文件名"URL安全的Base64编码后的值。 |
音频/视频 | 预设集 | 说明 |
音频 | audio_32k | 码率为32k的音频 |
audio_48k | 码率为48k的音频 | |
audio_64k | 码率为64k的音频 | |
视频 | video_16x9_150k | 码率为150K,长宽比为16x9。分辨率400x224 |
video_16x9_240k | 码率为240K,长宽比为16x9。分辨率400x224 | |
video_16x9_440k | 码率为440K,长宽比为16x9。分辨率400x224 | |
video_16x9_640k | 码率为640K,长宽比为16x9。分辨率400x224 | |
video_4x3_150k | 码率为150K,长宽比为4x3。分辨率400x300 | |
video_4x3_240k | 码率为240K,长宽比为4x3。分辨率400x300 | |
video_4x3_440k | 码率为440K,长宽比为4x3。分辨率400x300 | |
video_4x3_640k | 码率为640K,长宽比为4x3。分辨率400x300 | |
video_150k | 码率为150K,长宽比沿用源视频设置 | |
video_240k | 码率为240K,长宽比沿用源视频设置 | |
video_440k | 码率为440K,长宽比沿用源视频设置 | |
video_640k | 码率为640K,长宽比沿用源视频设置 | |
video_1000k | 码率为1000K,长宽比沿用源视频设置 | |
video_1500k | 码率为1500K,长宽比沿用源视频设置 |
如果请求成功,则返回如下内容的Json串:
{ "persistentId": <persistentId> }
如果请求失败,则返回如下内容的Json串:
{
"code": "<code string>",
"message": "<ErrMsg string>"
}
字段名 | 必填 | 描述 |
persistentId | 是 | 上传预处理或者触发持久化处理的进程ID |
code | 是 | HTTP请求响应码,参见HTTP响应状态码<返回码> |
message | 是 | 处理失败的提示信息 |
2.3.1 mp4转码
实现将vod-wcs-test001空间名下的test.mp4视频的码率转为128k、封装格式转为flv,存在vod-wcs-test001空间下,并命名为test_file.flv。
curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/flv/vb/128k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_file.flv))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"
加密后为:
curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9mbHYvdmIvMTI4a3xzYXZlYXMvZG05a0xYZGpjeTEwWlhOME1EQXhPblJsYzNSZlptbHNaUzVtYkhZPQ==&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"
其中:
(1) mgrAuthorization_A:mgrAuthorization_B:管理凭证,由AK(访问密钥)、SK(安全密钥)、Path、Body通过管理凭证生成工具生成,其中AK、SK从“控制台-账号管理-用户信息管理-AccessKey管理”处获取,Path为/fops,Body为请求内容。
(2) mgrDomain:管理域名,从“控制台-对象存储-对应存储空间-概览”处获取。
2.3.2 HLS转码
实现将空间名vod-wcs-test001下的test.mp4视频做HLS切片,同时做转码,目标文件存在原空间下,码率为150K,长宽比为16x9,分辨率400x224,其中m3u8命名为test.m3u8。
curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/preset/video_16x9_150k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.m3u8))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"
加密后为:
curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tM3U4L3ByZXNldC92aWRlb18xNng5XzE1MGt8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViVE4xT0E9PQ==&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"
参数解释请参考2.3.1.。
(1) 客户需要提供多种码率、分辨率、帧率等视频内容供用户按需观看;
(2) 为了终端能观看高分辨率视频以及节省带宽,可以H.264编码转成H.265编码。
(1) 视频转码功能只能对存储于云存储(WCS)上的视频文件进行操作,因此必须同时开通点播和云存储功能。
(2) 视频转码功能属于增值服务,若要使用需另行付费。