wang-bin / fvp

Flutter video player plugin for all desktop+mobile platforms. download prebuilt examples from github actions. https://pub.dev/packages/fvp
BSD 3-Clause "New" or "Revised" License
126 stars 20 forks source link

大佬能不能在README里面详细介绍下fvp 和video_player media_kit 区别啥的信息 #25

Closed huafsud closed 10 months ago

huafsud commented 10 months ago

我看 video_player 只支持[ANDROID] [IOS] [WEB] 但是fvp 还支持Windows macos ,

这到底是咋实现的,啥原理啊?

是 video_player 虽然没实现macos,Windows ,但是开放了接口, 然后大佬用 libmdk 把video_player的macos windows 接口实现了一遍? 那 IOS Android上 运行的是 libmdk,还是 video_player?

那和media_kit 又有啥 功能或者性能 区别吗?

我看 flutter_meedu_videoplayer 切换到fvp了, 所以我也想切过来,准备改代码,

求大佬丰富下README, 详细介绍下, 和同类区别啥的. 补充下README

我感觉fvp 要牛逼起来了~~~

AnonymHK commented 10 months ago

这个不在人家的业务范畴啊。。。。不管是fvp 或者media_kit 本质就是对video_player 进行功能增强,例如增加硬解支持桌面平台之类的,性能之类的话,仁者见仁,智者见智!以现在的智能手机和桌面电脑的性能之类的,几M或者10M内的体积差异,异或cpu或者内存占用差异5%内,我觉得都能接受!我更看重兼容性和稳定性!

AnonymHK commented 10 months ago

flutter_meedu_videoplayer 的作者zezo357用户有很多还没切到新版,fvp暴露的问题还在路上。。期待作者大大近期能够加快处理bug和优化的速度!

wang-bin commented 10 months ago

这个是flutter的插件模型,app开发者用的是面向app的package里的接口,比如VideoPlayerController。为了支持多平台,提供了平台接口的包,比如video_player相应的类主要是VideoPlayerPlatform。要支持一个平台,只要实现平台接口就行,video_player官方的ios、Android、web实现,还有fvp,做的就是这个。具体实现我用了我开发了很久的libmdk,互联网上应该找不到第二个库在视频播放方面对多平台、多应用开发环境支持得更好的了,一些知名的开源项目比如gyroflow选择libmdk就是这个原因,因为没有第二个选择。具体实现细节上的几个关键点我在readme的design部分提到。

media_kit我没用过,不过参考过一些思路。它是自己做了一套播放器接口,具体接口怎么样我也没看过,你得学习它的那套接口,而不是像fvp这样直接用官方接口可以无缝迁移。它应该提供了一些增加功能的接口,具体是啥我也没看,不过fvp/mdk.dart也提供了一套接口,这是和libmdk的大部分api对应的,如果video_player满足不了需求,可以用这套接口,fvp的VideoPlayerPlatform平台实现就是基于这套接口的,可以参考。

功能上我没仔细看过media_kit,性能上是全面优于media_kit的。media_kit底层使用libmpv,你可以直接对比mpv官方的播放器和mdk里的glfwplay例子,可以发现mdk在cpu、gpu、memory使用率上都低于mpv的。而且由于mpv对一些平台的支持不够完善,media_kit包括其他基于libmpv的播放器不可能是最高效的,比如windows的d3d11通过angle opengles调用的,macos、ios不支持metal。mpv在很多功能、稳定性上是优于libmdk的,因为他们的开发人员多,而且非常专业,你看他们的代码提交就知道了。