# 特殊资源的转码
特殊资源 | 处理 | |
---|---|---|
gif | 需要转一个整片的mp4,再转一个分片的MP4,整片的mp4用于合成,分片的mp4用于前端预览 | 2次转码 |
序列图(tga, png, jpg) | 需要转一个整片的mp4,再转一个分片的MP4,整片的mp4用于合成,分片的mp4用于前端预览 | 2次转码 |
带alpha通道的视频 | * 正常分片 转码 预览* 如果带alpha* 1. 单片alpha 转码 合成 (合成端其实不会用)* 2. 分片alpha 转码 预览 | 3次转码 |
带alpha的序列图 | * 转单片视频 转码 合成* 如果带alpha* 1. 单片alpha 不转码* 2. 分片alpha 不转码* * 转分片视频 转码 预览* 如果带alpha* 1. 单片alpha 转码 合成* 2. 分片alpha 转码 预览 | 4次转码 |
# gif、tga转码和序列图转码都需要转码两次
转码需要两次的原因是,gif本身不是一个视频,所以合成的时候没办法用来合成,需要把gif转成一个视频才能用来合成,第二次转整片的目的就是为了之后的合成。第一次转码和普通视频的转码流程没有区别。
第一次调用创建转码任务【/job/create】接口,请求体的resourceType为1, isSingleSlice为false.第一次转码结束,在收到【/job/transcode/complete】的请求处理中,将转码的产物m3u8文件等信息保存到对应的数据库视频表的记录中。 请求体:
{
"uuid": "uuid", // 任务UUID
"type": 0, // 任务类型,0--转码,1--合成
"data": {
"url": "...", // 如果是转码任务,是视音频的url;如果是合成任务,是工程文件的url
"callbackHost": "...", // 回调的Host
"resourceType":1 // 任务资源类型
"isDir":false // 是否是目录
"isSingleSlice": false // 是否分片
"isAlpha": false // 是否转alpha视频
"resourceNames":[] //目录资源的资源文件名列表
}
}
第二次调用创建转码任务【/job/create】接口,请求体的resourceType为1, isSingleSlice为true.第二次转码结束,在收到【/job/transcode/complete】的请求处理中,将转码的产物singleSliceUrl文件等信息保存到对应的数据库视频表的记录中。
请求体:
{
"uuid": "uuid", // 任务UUID
"type": 0, // 任务类型,0--转码,1--合成
"data": {
"url": "...", // 如果是转码任务,是视音频的url;如果是合成任务,是工程文件的url
"callbackHost": "...", // 回调的Host
"resourceType":1 // 任务资源类型
"isDir":false // 是否是目录
"isSingleSlice": true // 是否分片
"isAlpha": false // 是否转alpha视频
"resourceNames":[] //目录资源的资源文件名列表
}
}
# 带alpha通道的视频转码
需要转3次的原因是第一次正常转码后会返回该视频是否带alpha的标志,如果视频带alpha, 那么需要转一个整片的alpha视频用于合成,另外需要转一个分片的视频用于前端预览。 第一次调用创建转码任务【/job/create】接口,请求体的resourceType为1, isAlpha为false.第一次转码结束,在收到【/job/transcode/complete】的请求处理中,在返回的请求体里needTranscodeAlphaChannel字段为true,根据这个字段来决定是否需要转带alpha通道视频。
响应体
{
"duration": 50000,
"metadataFilePath": "/opt/bsedit/<uuid>.m3u8",
"outputFileType": 0,
"needTranscodeAlphaChannel": true,
"videoWidth": 1280,
"videoHeight": 720
}
第二次调用创建转码任务【/job/create】接口,请求体的resourceType为1, isSingleSlice为true, isAlpha为true.第二次转码结束,在收到【/job/transcode/complete】的请求处理中,将转码的产物singleSliceUrl文件等信息保存到对应的数据库视频表的记录alpha_url字段中。转码器的命令行需要带--generate-alpha-channel参数表示转alpha视频。
请求体
{
"uuid": "uuid", // 任务UUID
"type": 0, // 任务类型,0--转码,1--合成
"data": {
"url": "...", // 如果是转码任务,是视音频的url;如果是合成任务,是工程文件的url
"callbackHost": "...", // 回调的Host
"resourceType":1 // 任务资源类型
"isDir":false // 是否是目录
"isSingleSlice": true // 是否分片
"isAlpha": true // 是否转alpha视频
"resourceNames":[] //目录资源的资源文件名列表
}
}
第三次调用创建转码任务【/job/create】接口,请求体的resourceType为1, isSingleSlice为false, isAlpha为true.第二次转码结束,在收到【/job/transcode/complete】的请求处理中,将转码的产物m3u8Url文件等信息保存到对应的数据库视频表的记录alpha_m3u8_url字段中。转码器的命令行需要带--generate-alpha-channel参数表示转alpha视频。
请求体
{
"uuid": "uuid", // 任务UUID
"type": 0, // 任务类型,0--转码,1--合成
"data": {
"url": "...", // 如果是转码任务,是视音频的url;如果是合成任务,是工程文件的url
"callbackHost": "...", // 回调的Host
"resourceType":1 // 任务资源类型
"isDir":false // 是否是目录
"isSingleSlice": false // 是否分片
"isAlpha": true // 是否转alpha视频
"resourceNames":[] //目录资源的资源文件名列表
}
}
# 带alpha的序列图
带alpha通道的序列图是序列图和alpha视频转码的组合
← 批量资源转码 任务重试接口(可选) →