转自适应码流

最近更新时间:2019-06-17 19:36:08

转自适应码流是指将视频转码并打包生成自适应码流输出文件的过程。它的特点是包含多个码率的音视频文件和一个描述性文件(manifest),播放器能够根据当前带宽,动态选择最合适的码率播放。目前应用最广泛的自适应码流格式,有 HLSDash

云点播的转自适应码流,同时支持 HLS 和 Dash 两种格式。使用该功能可以实现:

  • 播放器根据当前带宽动态选择合适的码率播放,为观看者带来良好的体验。
  • 主流播放器原生支持 HLS 和 Dash,无需定制播放器。

转自适应码流模板

通过转自适应码流参数,可以控制“转哪些码率的视频流”、“转哪些码率的音频流”等参数。云点播使用转自适应码流模板表示参数集合,通过转自适应码流模板,可以指定以下相关参数。

参数 说明
打包类型 自适应码流的格式,目前支持 HLS 和 Dash 两种。
VideoTrack 列表 包含哪些不同码率的视频流。
AudioTrack 列表 包含哪些不同码率的音频流。
是否过滤“低码率转高码率” 通常来说,低码率的原始视频转码高码率无法获得画质和音质的提升。开启过滤“低码率转高码率”,可以避免不必要的转码。

针对常见的参数组合,点播提供了 预置转自适应码流模板,目前暂不支持自定义转自适应码流模板。

任务发起

发起转自适应码流任务,有“通过服务端 API 直接发起”,“通过控制台直接发起”和“上传时指定要执行的任务”三种方式。具体请参照视频处理的 任务发起

以下是各种方式发起转自适应码流任务的说明:

  • 调用服务端 API ProcessMedia 发起任务:在请求中的MediaProcessTask.AdaptiveDynamicStreamingTaskSet参数指定 转自适应码流模板 的模板 ID;
  • 调用服务端 API ProcessMediaByUrl 发起任务:在请求中的MediaProcessTask.AdaptiveDynamicStreamingTaskSet参数指定 转自适应码流模板 的模板 ID;
  • 通过控制台对视频发起任务:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(MediaProcessTask.AdaptiveDynamicStreamingTaskSet中指定);在控制台使用该任务流 发起视频处理
  • 服务端上传时指定任务:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(MediaProcessTask.AdaptiveDynamicStreamingTaskSet中指定);申请上传 中的procedure参数指定为该任务流;
  • 客户端上传时指定任务:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(MediaProcessTask.AdaptiveDynamicStreamingTaskSet中指定);在 客户端上传签名 中的procedure指定该任务流;
  • 控制台上传:调用 服务端 API 创建任务流,任务流中配置转自适应码流任务(MediaProcessTask.AdaptiveDynamicStreamingTaskSet中指定);通过控制台上传视频,选择【上传的同时对视频进行处理操作】并指定视频上传后执行该任务流。

结果获取

发起转自适应码流任务后,您可以通过异步等待 结果通知 和同步进行 任务查询 两种方式获取转自适应码流任务的执行结果。下面是发起转自适应码流任务后,普通回调方式下结果通知的示例(省略了值为 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有两个TypeAdaptiveDynamicStreaming类型的转自适应码流结果,Definition分别为10和20。