文档

在线预览视频

本文档描述的在线预览视频功能指的是使用PDS提供的默认Web界面预览视频,或者通过API/SDK的方式获取视频预览地址,以上两种方式都需要先开通视频转码服务,下文将会对视频转码服务和使用方式进行介绍。

视频转码服务和使用步骤

本章节将先简述视频转码服务。然后描述在线预览视频的使用步骤,如下:

1 开通视频转码

2 上传视频文件

3 获取视频播放元信息

4 获取视频播放信息

视频转码服务简述

PDS提供的视频转码服务默认提供了边转边播能力,即视频文件上传后,不需要等到完整转码结束,就可以在线预览视频了。一个全新的视频文件上传后到其可以被首次预览,这段期间成为首播转码期,一般要10s左右可以完成。同一个视频文件再次播放时,由于已经缓存了转码数据,所以可以快速起播,当然起播速度也是受到网络传输速度影响的。

PDS提供的视频转码服务是domain级别的,即domain上的同一个视频文件(数据sha1相同的都属于同一个文件)的同一个视频清晰度(template_id),只会在首次预览的时候转码一次,后续不会重复进行转码,为用户提供良好的预览体验和成本控制。

PDS提供的视频转码服务转码逻辑大体如下图所示:

转码概览转码流程

从图1可以看到,同一个视频文件可能会转码出多路码流,这是由原视频和用户点播两个因素共同决定。如果原视频只有1280x720的分辨率,那么转出来的码流均不会超过1280x720,比如只有720x480和1280x720。另外如果用户只预览了720x480清晰度的视频,那么视频转码服务只会转出720x480这一路清晰度的码流。

任何一路清晰度的转码都会经历图2的流程,部分流程解释如下:

1) 索引转码:上传文件后,会先检查视频文件的媒体信息, 并确定此视频文件可以转码出哪些清晰度(template_id)的码流。

2) 预转码:如果domain上配置了预转码功能,那么会对视频文件的每个可转的码流都进行一定时长(时长可配置)的预先转码。预转码的优点是首次点播等待时间很短,播放体验流畅,缺点是转码成本会有一定的提升。此功能适合对首播体验比较高的客户。开通视频转码的时候,默认不会打开这项功能。

3) 首播转码:同一个视频文件的同一个清晰度在首次预览的时候,由于还不存在对应的视频流,因此需要经历约10s的首播转码过程,客户端才能获取到预览的视频流地址。另外,首播过程中如果大幅度拖动进度条,可能会再次遇到未转码的ts位置,那么也会有约10s的转码等待。除了以上两种情况外,其他的预览体验是非常流畅的 。

转码开通时,默认转码模板如下:

参数\模板

264_480p

264_720p

264_1080p

视频编码器

h264

h264

h264

视频分辨率

720x480

1280x720

1920x1080

视频码率(kbps)

600

1500

3000

视频帧率(fps)

25

25

25

音频编码器

aac

aac

aac

音频采样率(Hz)

44100

44100

44100

音频声道数

2

2

2

音频码率(kbps)

72

128

160

PDS提供的视频转码服务默认以原视频分辨率为依据来匹配转码模板,小于等于原视频分辨率的视频会被选中,比如原视频分辨率是540x720,在使用默认转码模板的情况下,会匹配到264_480p和264_720p两个模板。模板匹配流程如下:

a) 如果视频是竖向的, 那么会先转换为横向视频, 上述的视频横向后的分辨率是720x540

b) 找到所有比流程a中视频分辨率小的模板, 这里小的含义指模板中存在一条边(宽或高)比原视频对应的边小。上述视频通过这一步找到的是264_480p模板,因为能找到比原视频分辨率的宽540小的只有480这个模板。这些模板输出的视频,会将原视频分辨率按照模板分辨率进行等比压缩。

c) 找到所有不比a中视频分辨率小的模板, 并挑选其中一个最小的模板。上述视频通过这一步找到的是264_720p模板。输出的视频会以原视频分辨率540x720进行输出,而不会将其拉伸到720x1280,返回预览地址的时候会通过keep_original_resolution这个标记字段标识是否保留了原视频分辨率。如果是,那么输出的视频以原视频分辨率为准,否则以模板的分辨率为准。

开通视频转码

企业版文件管理服务(EDM)默认已经开通。

开发版需要您通过官方钉群联系我们开通,开通视频转码没有费用,但在使用过程中会产生费用,资费标准增值服务计费项

上传视频文件

新上传的视频或者已经上传的视频文件都可以,这个步骤是要拿到原视频文件的drive_id和file_id,用此信息来获取关联的转码后的视频流。

获取视频播放元信息

调用/v2/file/get_video_preview_play_meta接口,可以获取到视频支持在线预览的清晰度列表。这个调用不会触发转码。

请求示例

{
    "drive_id": "1",
    "file_id": "abcd",              // 视频文件本身
    "category": "live_transcoding"
}

响应示例

{
    "domain_id": "xxxxx",
    "drive_id": "1",
    "file_id": "abcd",                       // 视频文件本身
    "video_preview_play_meta": {
        "category": "live_transcoding",
        "meta": {
            "duration": 123.4,               // 视频时长
            "width": 1280,                   // 视频宽度
            "height": 720                    // 视频高度
        },
        "live_transcoding_task_list": [
            {
                "template_id": "264_720p",        // 720p清晰度
                "status": "running"               // 正在转码索引中
                "keep_original_resolution": true  // 原画标记
            },
            {
                "template_id": "264_480p",   // 480p清晰度
                "status": "finished"         // 已完成转码索引, 可以播放
            }
        ]
    }
}

获取视频播放信息

调用/v2/file/get_video_preview_play_info接口,设置参数template_id="模板id"(比如264_480p)即可获取到"模板id"对应的播放信息,其中URL字段返回的是m3u8文件地址,m3u8文件中包含了相关的ts信息。

请求示例

{
    "drive_id": "1",
    "file_id": "abcd",              // 视频文件本身
    "category": "live_transcoding",
    "template_id": "264_480p"       // 需要预览的模板id
}

响应示例

{
    "domain_id": "xxxxx",
    "drive_id": "1",
    "file_id": "abcd",                       // 视频文件本身
    "video_preview_play_info": {
        "category": "live_transcoding",
        // 其他不重要信息 ...
        "live_transcoding_task_list": [
            {
                "template_id": "264_480p",           // 480p清晰度
                "status": "finished"                 // 正在转码索引中
                "url": "https://example.aliyundoc.com/c/d?e=f...", // 预览地址
            }
        ]
    }
}

  • 本页导读 (0)
文档反馈