转自适应码流是指将视频转码并打包生成自适应码流输出文件的过程。它的特点是包含多个码率的音视频文件和一个描述性文件(manifest),播放器能够根据当前带宽,动态选择最合适的码率播放。目前应用最广泛的自适应码流格式,是 Master Playlist 格式下的 HLS。
云点播支持将视频转出 HLS 和 MPEG-DASH 格式的自适应码流,使用该功能您将获得:
播放器根据当前带宽动态选择合适的码率播放,为观看者带来良好的体验。
主流播放器原生支持 HLS 自适应码流,无需定制播放器。
云点播提供了 播放器 SDK,集成后可以快速便利地播放自适应码流。
注意:
转自适应码流和转码的区别:
自适应码流 URL 包含多个分辨率的输出,转码视频的 URL 只包含一种分辨率的输出。
自适应码流播放时,播放器会实时切换当前网络下能流畅播放的最佳分辨率,转码视频播放时不会智能切换。
云点播提供的超级播放器 SDK 仅支持播放自适应码流的输出,不支持播放转码后的输出。
转自适应码流模板
通过转自适应码流参数,可以控制自适应码流中各个子流的“视频转码参数”、“音频转码参数”等参数。云点播使用转自适应码流模板表示参数集合,通过转自适应码流模板,可以指定以下相关参数。
参数 | 说明 |
打包类型 | 自适应码流的格式,目前支持 HLS 和 MPEG-DASH。 |
加密类型 | 加密类型目前仅 HLS 格式支持 SimpleAES 加密,DASH 不支持加密。 |
子流规格 | 控制输出多少个子流,以及各个子流的视频转码参数和音频转码参数: 视频转码参数:分辨率、码率、帧率、编码格式等。 音频转码参数:采样频率、声道数、编码格式等。 |
是否过滤“低分辨率转高分辨率” | 通常来说,低分辨率的原始视频转码高分辨率无法获得画质和音质的提升。开启过滤“低分辨率转高分辨率”,可以避免不必要的转码。 |
任务发起
以下是各种方式发起转自适应码流任务的说明:
调用服务端 API ProcessMedia 发起任务:在请求中的
MediaProcessTask.AdaptiveDynamicStreamingTaskSet
参数指定转自适应码流模板的模板 ID。通过控制台对视频发起任务:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(
MediaProcessTask.AdaptiveDynamicStreamingTaskSet
中指定);在控制台使用该任务流 发起视频处理。服务端上传时指定任务:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(
MediaProcessTask.AdaptiveDynamicStreamingTaskSet
中指定);申请上传 中的procedure
参数指定为该任务流。客户端上传时指定任务:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(
MediaProcessTask.AdaptiveDynamicStreamingTaskSet
中指定);在 客户端上传签名 中的procedure
指定该任务流。控制台上传:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(
MediaProcessTask.AdaptiveDynamicStreamingTaskSet
中指定);通过控制台上传视频,选择 上传的同时对视频进行处理操作 并指定视频上传后执行该任务流。注意:
如需在转自适应码流任务中开启溯源功能,请使用时长为6分钟以上的视频文件。
结果获取
发起转自适应码流任务后,您可以通过异步等待 结果通知 和同步进行 任务查询 两种方式获取转自适应码流任务的执行结果。下面是发起转自适应码流任务后,普通回调方式下结果通知的示例(省略了值为 null 的字段):
{"EventType":"ProcedureStateChanged","ProcedureStateChangeEvent":{"TaskId":"1256768367-Procedure-2e1af2456351812be963e309cc133403t0","Status":"FINISH","FileId":"5285890784246869930","FileName":"动物世界","FileUrl":"http://1256768367.vod2.myqcloud.com/xxx/xxx/AtUCmy6gmIYA.mp4","MetaData":{"AudioDuration":60,"AudioStreamSet":[{"Bitrate":383854,"Codec":"aac","SamplingRate":48000}],"Bitrate":1021028,"Container":"mov,mp4,m4a,3gp,3g2,mj2","Duration":60,"Height":480,"Rotate":0,"Size":7700180,"VideoDuration":60,"VideoStreamSet":[{"Bitrate":637174,"Codec":"h264","Fps":23,"Height":480,"Width":640}],"Width":640},"MediaProcessResultSet":[{"Type":"AdaptiveDynamicStreaming","AdaptiveDynamicStreamingTask":{"Status":"SUCCESS","ErrCode":0,"Message":"","Input":{"Definition":10},"Output":{"Definition":10,"Package":"hls","DrmType":"","Url":"http://1256768367.vod2.myqcloud.com/xxx/xxx/adp.10.m3u8"}}},{"Type":"AdaptiveDynamicStreaming","AdaptiveDynamicStreamingTask":{"Status":"SUCCESS","ErrCode":0,"Message":"","Input":{"Definition":20},"Output":{"Definition":20,"Package":"dash","DrmType":"","Url":"http://1256768367.vod2.myqcloud.com/xxx/xxx/adp.20.mpd"}}}],"TasksPriority":0,"TasksNotifyMode":""}}
回调结果中,
ProcedureStateChangeEvent.MediaProcessResultSet
有两个Type
为AdaptiveDynamicStreaming
类型的转自适应码流结果,Definition
分别为10和20。