Closed bmi-tech closed 4 years ago
前进跳转:
跳转的及时性:保存完整的压缩文件存储的情况下,如果s3对象存储不支持流的跳转,就没有办法保证客户端点播跳转操作时的及时响应,因为需要把流保存到指定的跳转位置才能进行转码并返回给客户端
跳转的及时性:保存完整的压缩文件存储的情况下,如果s3对象存储不支持流的跳转,就没有办法保证客户端点播跳转操作时的及时响应,因为需要把流保存到指定的跳转位置才能进行转码并返回给客户端
关于 OSS:目前看到oss(oss与s3定义是相同的,都是只对象存储)对象存储支持以流的方式读取文件,所以当从文件开头进行点播时能够保证响应时间的实时性;但是oss不支持流的跳转读取操作,因此没有办法保证客户端跳转操作的实时性。
后退跳转:客户端是否会缓存已下载文件?还是会向服务器请求下载对应 ts 文件?
H5页面video 标签 播放视频,google、IE11浏览器。 取决于播放器,可以查看h5的video标签是否是支持。
跳转的及时性:保存完整的压缩文件存储的情况下,如果s3对象存储不支持流的跳转,就没有办法保证客户端点播跳转操作时的及时响应,因为需要把流保存到指定的跳转位置才能进行转码并返回给客户端
实际的应用环境中肯定是需要前进和后退功能的。同时需要满足实时点播的业务需求。 现在已经部署的场景中,MP4 文件存储到 S3,支持点播,任意跳转。
HLS 实现方案:
movie_1_startbyte_endbyte.ts
HLS 实现方案:
* 固定切片策略:比如时长。 * 切片策略决定因素:点播的延迟、压缩策略 * 不确定因素:是否影响压缩倍数 * 在转码时生成完整的 M3U8 文件,记录每个 ts 文件的时长,对应 bbw 文件的相对字节范围 * ts 文件时长通过 EXTINF 体现 * 相对字节范围包括相对于 bbw 文件起始位置的起始字节数和结束字节数 * 相对字节范围考虑是否可以扩展 M3U8 的标签,如果不行,作为 ts 文件名的一部分,比如 `movie_1_startbyte_endbyte.ts` * hls 请求返回完整的 bbw 文件,由客户端统计时长,根据跳转请求对应的 ts 文件,服务器读取对应 bbw 文件的字节范围进行切片 * 默认按照完整的 M3U8 文件的 ts 文件信息顺序下载切片 * 关于一个文件转码只能生成一个文件: * 咨询对方是否可以多上传一个 M3U8 文件 * 如果不行,可以在 bbw 文件起始位置增加 M3U8 文件再上传 * 关于实现 * 封装切片功能 * 是否建立新切片:根据切片策略的配置,以及当前帧的属性 * M3U8 文件生成函数:传入 ts 文件名列表和 M3U8 文件路径,写入 M3U8 文件 * 获取 ts 文件属性:输入 ts 文件名字和 EXTINF 等相关标签,返回 ts 文件对应 bbw 的相对字节范围、相对时间戳等
后退跳转:客户端是否会缓存已下载文件?还是会向服务器请求下载对应 ts 文件?