本文档描述的在线预览视频功能指的是使用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这个标记字段标识是否保留了原视频分辨率。如果是,那么输出的视频以原视频分辨率为准,否则以模板的分辨率为准。
上传视频文件
新上传的视频或者已经上传的视频文件都可以,这个步骤是要拿到原视频文件的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)