文档中心 点播分发 视频转封装

视频转封装

更新时间:2023-11-09 17:12:35

一. 功能简介

    视频转封装功能,支持FLV、MP4、HLS和DASH等视频封装格式任一输入,FLV、MP4、HLS和DASH等视频封装格式任意输出,满足不同应用场景需求。另外,为了减少空间存储成本并提升用户体验,我司支持分片共源场景,m3u8文件和mpd文件共用同一份切片文件。

二. 功能说明

    网宿支持常见的视频封装格式互相转换,如:

    (1) 视频格式: FLV、MP4、M3U8、HLS、DASH、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命令实现多个功能。

2.1. 请求说明


    请求参数以如下格式组织,作为请求内容提交:


bucket=<Urlsafe_Base64_Encoded_Bucket>&key=<Urlsafe_Base64_Encoded_Key>&fops=<Urlsafe_Base64_Encoded_Fops>&notifyURL=<Urlsafe_Base64_Encoded_PersistentNotifyUrl>&force=<Force>&separate=<Separate>

表1 请求参数说明
参数 必填 描述
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>
    /vn/<VideoNo>
    /an/<AudioNo>
    /segtime/<SegSeconds>
    /fastStartSeg/<FastStartSeg>
    /segtype/<segtype>
|saveas/<Urlsafe_Base64_Encode(bucket:filekey)>
表2 视频转封装参数表
参数 必填 描述
<op> avthumb(操作类型-音视频处理)
<format> 输出的目标格式,支持mp4、flv、m3u8等。
/vn/<VideoNo> 是否去除视频流,0为保留,1为去除。默认值为0。
/an/<AudioNo> 是否去除音频流,0为保留,1为去除。默认值为0。
/dash_hls_playlist/<dash_hls_playlist> 在已有dash封装上生成m3u8文件,即支持分片列表共源。当dash_hls_playlist=1时,在输出mpd文件时,另外生成m3u8文件;默认dash_hls_playlist=0,仅输出mpd文件。
注:仅支持输出的目标格式为mpd
|saveas/<bucket:filekey> 保存为指定文件,参数中需要填入"空间: 文件名"URL安全的Base64编码后的值。
切片参数
/segtime/<SegSeconds> 用于定义每一小段音/视频流的播放时长,单位:秒,取值范围1-120的整数。
注:以下为未设置该参数,默认取值场景说明:
(1)输入为非m3u8/mpd格式,默认值为10秒;
(2)输入为m3u8/mpd格式,未设置转码参数,仅对索引文件进行文本处理;
(3)输入为m3u8/mpd格式,设置了转码参数,自动计算切片时长。
1. HLS切片特有参数
/fastStartSeg/<FastStartSeg> 用于定义在m3u8切片的前M个ts片的时长为N秒,参数格式为MxNs。
例如:5x3s表示前5个ts片的切片时长为3秒。
2. DASH切片特有参数
/segtype/<segtype> 生成的DASH文件格式,即mp4或者m4s,默认为m4s。

2.2. 响应说明


    如果请求成功,则返回如下内容的Json串:

{ "persistentId": <persistentId> }  

    如果请求失败,则返回如下内容的Json串:

{
  "code": "<code string>",
  "message":  "<ErrMsg string>"
} 
表3 响应参数说明
字段名 必填 描述
persistentId 上传预处理或者触发持久化处理的进程ID
code HTTP请求响应码,参见HTTP响应状态码<返回码>
message 处理失败的提示信息

2.3. 使用范例


2.3.1 FLV转封装
    实现将vod-wcs-test001空间名下的test.flv视频文件转为mp4格式,存到vod-wcs-test001空间下,命名为test.mp4。


 curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.flv)&fops=Urlsafe_Base64_Encode(avthumb/mp4|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.mp4))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

加密后为:


curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5mbHY=&fops=YXZ0aHVtYi9tcDR8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViWEEw&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切片,每个切片15s,目标文件存在原空间下,其中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/segtime/15|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=YXZ0aHVtYi9tM3U4L3NlZ3RpbWUvMTV8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViVE4xT0E9PQ==&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

参数解释请参考2.3.1.。

2.3.3 DASH切片
  实现将空间名vod-wcs-test001下的test.mp4视频做DASH切片,每个切片10s,目标文件存在原空间下,其中m3u8命名为test.mpd。


 curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mpd)&fops=Urlsafe_Base64_Encode(avthumb/mpd|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.mpd))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

加密后为:


curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcGQ=&fops=YXZ0aHVtYi9tcGR8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViWEJr&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

2.3.4 分片共源场景DASH切片
  实现将空间名vod-wcs-test001下的test.mp4视频做DASH切片,其中mpd命名为test.mpd,同时输出共源m3u8文件。
  fops如下:


fops=Urlsafe_Base64_Encode(vthumb/mpd/dash_hls_playlist/1|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.mpd))

  其余操作参见请参考2.3.1

三. 应用场景

  (1) 优化首屏时间,将MP4转换为FLV;

  (2) 提高平台兼容性,将FLV转换为MP4;

  (3) 支持切片,将MP4、FLV切成HLS、DASH;

  (4) 弱网播放音频,提取输入的视频文件中的音频;

  (5) 其他一些需要封装格式转换,才能适应多终端多平台的应用场景;

  (6) 支持对嘴型、模仿、配音、弱网播放音频等场景,将音频从视频中抽离出来。

四. 注意事项

  (1) 视频转封装功能属于增值服务,若要使用需另行付费;

  (2) 视频处理相关功能只能对保存在云存储上的视频文件进行操作,如果要使用必须同时点播和开通云存储服务。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!