bmi-tech / skyvis

天宇威视-司马大大对接
0 stars 0 forks source link

【点播】跳转 #2

Closed bmi-tech closed 4 years ago

bmi-tech commented 4 years ago

后退跳转:客户端是否会缓存已下载文件?还是会向服务器请求下载对应 ts 文件?

bmi-tech commented 4 years ago

前进跳转:

bmi-tech commented 4 years ago

跳转的及时性:保存完整的压缩文件存储的情况下,如果s3对象存储不支持流的跳转,就没有办法保证客户端点播跳转操作时的及时响应,因为需要把流保存到指定的跳转位置才能进行转码并返回给客户端

Eson-Jia commented 4 years ago

跳转的及时性:保存完整的压缩文件存储的情况下,如果s3对象存储不支持流的跳转,就没有办法保证客户端点播跳转操作时的及时响应,因为需要把流保存到指定的跳转位置才能进行转码并返回给客户端

关于 OSS:目前看到oss(oss与s3定义是相同的,都是只对象存储)对象存储支持以流的方式读取文件,所以当从文件开头进行点播时能够保证响应时间的实时性;但是oss不支持流的跳转读取操作,因此没有办法保证客户端跳转操作的实时性。

bmi-tech commented 4 years ago

后退跳转:客户端是否会缓存已下载文件?还是会向服务器请求下载对应 ts 文件?

H5页面video 标签 播放视频,google、IE11浏览器。 取决于播放器,可以查看h5的video标签是否是支持。

bmi-tech commented 4 years ago

跳转的及时性:保存完整的压缩文件存储的情况下,如果s3对象存储不支持流的跳转,就没有办法保证客户端点播跳转操作时的及时响应,因为需要把流保存到指定的跳转位置才能进行转码并返回给客户端

实际的应用环境中肯定是需要前进和后退功能的。同时需要满足实时点播的业务需求。 现在已经部署的场景中,MP4 文件存储到 S3,支持点播,任意跳转。

bmi-tech commented 4 years ago

HLS 实现方案:

bmi-tech commented 4 years ago

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 的相对字节范围、相对时间戳等

m3u8 文件格式详解