能否支持视频子元素渲染?
我把 pixi.js 升到了 v8 之后想支持一下视频的渲染,参考了 Img 实现了 Video 类。视频在预览的时候能正常加载和播放,但是导出之后视频相当不流畅,看起来 5 秒的场景下只渲染了几帧的视频内容。
仔细看了下音频的导出实现,难道视频也要像音频一样切片处理,找了一通资料好像没有太好的思路,不知道大佬能否指点一二?
我把 pixi.js 升到了 v8 之后想支持一下视频的渲染,参考了 Img 实现了 Video 类。视频在预览的时候能正常加载和播放,但是导出之后视频相当不流畅,看起来 5 秒的场景下只渲染了几帧的视频内容。
仔细看了下音频的导出实现,难道视频也要像音频一样切片处理,找了一通资料好像没有太好的思路,不知道大佬能否指点一二?
hhh,之前挺多人想要视频播放的功能的,一直没时间开发,欢迎提个PR看看~ 思路上不需要像音频一样做切片,但需要实现一个类似Sound的tick方法,运行到对应时间点的时候,需要把视频seek到对应的时间点,保证视频帧渲染到的画布上就行
我实现了 tick 方法,但是是让视频不断的暂停来做的,效果一样很垃圾,seek 到具体时间点就可以了吗?我先试试。
https://stackoverflow.com/a/10461709/8335317 就是通过 currentTime 来 seek 的呀,那应该怎么保证视频帧渲染到画布上呢?
通过 currentTime 来 seek 并且每次 tick 我通过延迟一秒来保证视频帧渲染到画布上,目前来看是比之前没有任何延迟好多了,但是视频好像没有原视频那么流畅,不过差不多够用了,另外强行延迟一秒也不优雅 😂
通过
currentTime来 seek 并且每次 tick 我通过延迟一秒来保证视频帧渲染到画布上,目前来看是比之前没有任何延迟好多了,但是视频好像没有原视频那么流畅,不过差不多够用了,另外强行延迟一秒也不优雅 😂
可以监听video标签的seeked事件,来判断currentTime是否生效,稍为优雅一点😂。但不流畅的原因是插入的视频帧率应该并不是30,但目前导出视频的帧率是写死的30,好的方案是需要先使用mp4box.js之类的先seek,找到对应帧数据,使用webcodecs对视频做解码, 再渲染上对应的视频帧,同时还需要考虑帧率一致的问题
不流畅的原因是插入的视频帧率应该并不是30,但目前导出视频的帧率是写死的30,好的方案是需要先使用mp4box.js之类的先seek,找到对应帧数据,使用webcodecs对视频做解码, 再渲染上对应的视频帧,同时还需要考虑帧率一致的问题
这个问题就有点复杂了,现在看起来效果还行的,我先试试 seeked 事件 👀
可以监听video标签的seeked事件,来判断currentTime是否生效
效果拔群,丝滑多了。另外说下升级 pixi.js v8 的话 @pixi-essentials/transformer 还不支持 😂
可以监听video标签的seeked事件,来判断currentTime是否生效
效果拔群,丝滑多了。另外说下升级 pixi.js v8 的话 @pixi-essentials/transformer 还不支持 😂
👍 ,v8生态应该还需要挺久才能跟上,之前就是考虑到transfomer的升级成本太高了😆。Video的部分有空可以提个PR哈~
https://github.com/ShukantPal/pixi-essentials/pull/106 我看是有相关的 PR 的,但是至今都没进展,我现在的 Video 是基于 v8 开发的,目前我看好像只有 v8 能拿到 video element 实例来做 seek,v7 也可以吗?可以的话我可以 PR 一下。
ShukantPal/pixi-essentials#106 我看是有相关的 PR 的,但是至今都没进展,我现在的 Video 是基于 v8 开发的,目前我看好像只有 v8 能拿到 video element 实例来做 seek,v7 也可以吗?可以的话我可以 PR 一下。
还没研究过,可以提出来看看,应该有办法兼容
OK,这两天我有空看看 👀
尝试了一下,video 实例是能拿到的,看来还是之前大意了。另外在编辑器里的状态同步好像有点费劲啊,UI 这块应该需要好好重构下 🫠
尝试了一下,video 实例是能拿到的,看来还是之前大意了。另外在编辑器里的状态同步好像有点费劲啊,UI 这块应该需要好好重构下 🫠
是的,状态同步比较复杂,最开始想简单了,没做系统设计,最近也在想先做个整体重构再继续迭代功能,不过还没时间整哈哈~
还在折腾中,端午前有希望 😂 主要还是状态同步费劲