ForeverSc
ForeverSc
嗯嗯,mp4box提取出帧数据,用webcodecs decode出VideoFrame再重绘出一个图片就行了,项目里之前写了个针对7的BlobExt,用于加载blob资源,不懂对8是否有效
之前看过源码,至少7是没有支持的
666,还带视频背景透明😂,越来越复杂了哈哈
内存上其实也还有挺多优化空间的😂,目前最终视频也是直接存在内存里的,有点受限。
> 目前我尝试用动画来实现的,参考项目内的例子给动画增加延迟,但是现在有个尴尬的情况是文字即使还没进入,到了延迟时间还是会执行一次退出动画导致了文字会闪烁一下。再到了文字的进入时间之后又能正常走完流程。是否应该同时延时进入和退出时间? 是想做出先进入,等待一段时间,然后再退出的效果是么? 目前动画的延迟时间都是从场景的开始时间点去计算的,所以退出动画的延迟时间需要叠加上之前的进入动画加上需要等待的时间
> 单场景下,比如说同一个位置我需要渲染多个文本或者图片等,就需要先渲染一个,等前一个到了设定的时间再渲染下一个,这时候对于第二个要渲染出来的元素我是用动画来做的,比如说 FadeIn 延迟一定的时间再执行 😂 > > > > > 退出动画的延迟时间需要叠加上之前的进入动画加上需要等待的时间 > > > > 那就是要把之前消耗的时间都叠加到后一个动画的开始和结束状态上咯? 是的,你可以理解为每新建一个动画,就会创建出一个新的从0开始的动画队列。 队列都是并行的,每个队列上面只有一个动画。 这部分其实不太好,算个临时方案,主要是一个队列中叠加动画在实际使用中,有用户反馈难以理解。不过在编程的场景下,动画依照次序执行比较符合逻辑😂
> 现在我是通过给各种子元素加上动画来控制显隐的,理论上是不是应该在子元素的类实现上直接支持好一些?或者在场景类上直接控制是否渲染该子元素? 场景类上去控制其实也是可以的,但是需要增加一个新的概念了,类似子元素的生命周期来专门做控制子元素的渲染与销毁, 确实会比现在的性能上有好处,不需要一次性加载太多子元素。跟动画算是两个不同维度的属性了。
对的,效果上动画应该都能满足的,可以算作后续的优化了
> 我把 pixi.js 升到了 v8 之后想支持一下视频的渲染,参考了 Img 实现了 Video 类。视频在预览的时候能正常加载和播放,但是导出之后视频相当不流畅,看起来 5 秒的场景下只渲染了几帧的视频内容。 > > 仔细看了下音频的导出实现,难道视频也要像音频一样切片处理,找了一通资料好像没有太好的思路,不知道大佬能否指点一二? hhh,之前挺多人想要视频播放的功能的,一直没时间开发,欢迎提个PR看看~ 思路上不需要像音频一样做切片,但需要实现一个类似`Sound`的`tick`方法,运行到对应时间点的时候,需要把视频seek到对应的时间点,保证视频帧渲染到的画布上就行
> 通过 `currentTime` 来 seek 并且每次 tick 我通过延迟一秒来保证视频帧渲染到画布上,目前来看是比之前没有任何延迟好多了,但是视频好像没有原视频那么流畅,不过差不多够用了,另外强行延迟一秒也不优雅 😂 可以监听video标签的`seeked`事件,来判断currentTime是否生效,稍为优雅一点😂。但不流畅的原因是插入的视频帧率应该并不是30,但目前导出视频的帧率是写死的30,好的方案是需要先使用mp4box.js之类的先seek,找到对应帧数据,使用webcodecs对视频做解码, 再渲染上对应的视频帧,同时还需要考虑帧率一致的问题