自由视角技术分享
自由视角 —— 手机侧UI实现
上一篇博客中介绍了大屏STB侧自由视角UI的实现,这次来介绍一下手机侧的自由视角UI的实现
首先我们来看一下手机和大屏之间的区别:
1. 手机是手势滑动,STB是遥控器按键控制
2. 网络状态,手机有蜂窝网和无线网,STB是无线网
实现的相同点:
1. 拥有相同的参数:机位数和主机位
2. 都需要调用播放器旋转接口
针对以上相同点和不同点,我们来看手机侧自由视角的UI实现,
手机侧自由视角的方案:其实UI侧方案很简单,就是视频可以跟随手势的滑动而进行旋转,当然这个旋转是通过调用播放器API实现的,我们只需要调用播放器API,把初始机位和旋转机位传给播放器API,即可实现视频的旋转;和STB侧方案不一样的是,这里的旋转机位是通过计算手势滑动的角度大小计算得来的,在STB侧我们通过按键按下的时长计算,这里则是通过计算手指的初始位置和最后位置,计算一个旋转角度,
所以手机侧就需要知道这些机位覆盖的角度,如36个机位,覆盖360度,故可以得出计算公式为:旋转机位 = 旋转角度 / (覆盖角度/总机位);旋转所需要的时间目前在手机侧是根据测试经验值写死200ms,通过测试发现这个值在100-300ms直接最佳,故目前取值100ms,这样自由视角入参即计算完成。
下面解释一下自己的几点理解,不正确的地方或者有好的建议欢迎留言:
1. 旋转视角:上面说到是根据测试经验值写死100ms的,其实写死肯定是不好的,因为不论旋转多少角度都是100ms,显然不是很合理。那么这个值和什么有关呢?其实这个值根据测试发现和请求流的分片时长有关,一个流的分片时长大约是200ms,这个值只要是分片的时长的整数倍,发现旋转效果最佳。
2. 时延:手势滑动时延,因为要计算旋转角度只能等手势滑动结束之后才能计算,故手机侧在观看自由视角时会存在时延;这个目前自己的想法是:视频旋转可以跟随手势滑动进行旋转,即手势滑动的时候,设置一定初始值进行计算,每次滑动一定的角度,让视频跟随手势滑动旋转。
3. 网络:这个问题不论在手机上还是STB上都存在,因为目前自由视角暂时没有做本地视频,只能从平台拉去流分片,故和网络息息相关。在测试中发现当网络好的情况下,旋转效果会很流畅,不好的情况下就会很卡。
下面对STB的遗留问题给出自己的理解,不正确的地方或者好的建议欢迎留言:
按键一直不抬起或者遥控器红外对着别的地方:这种情况目前我的规避方法是如果1s中之内没有接受到按键抬起的输入,就默认为按键时长1s,为什么设置1s,因为在STB侧,旋转一个机位耗时大约50ms,遥控器按键按下到抬起大约是200ms左右。
- 点赞
- 收藏
- 关注作者
评论(0)