Skip to content

iOS 内置avplayer 被fvp挟持后无法实现画中画问题 #357

Description

@wangjunjx8868

Is your feature request related to a problem? Please describe.
是的,如果不用fvp ,基于avplayer 可以实现原生的画中画,但是视频格式兼容性就差了很多,所以还得用fvp
Describe the solution you'd like
经过完整诊断(view 树 + layer 树双重遍历),彻底确认当前环境(video_player_avfoundation 2.9.7 + 当前 Flutter 版本)下,iOS 上视频画面被合成进 FlutterMetalLayer,原生视图树里不存在 AVPlayerLayer。所以不能构建Android那种画中画。
日志相关:
flutter: [PiP诊断]
flutter: findPlayerLayerDebug: windows=1
flutter: window key=true root=FlutterView
flutter: AVPlayerLayer NOT found. View tree:
flutter: - VIEW FlutterView [layer:FlutterMetalLayer playerLayer:false hasPlayer:false subs:1 sublayers:1]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:414.0x0.0 sublayers:2]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:7.0x3.0 sublayers:1]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:7.0x3.0 sublayers:0]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:3.0x36.0 sublayers:1]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:3.0x36.0 sublayers:0]
flutter: - VIEW UIScrollView [layer:CALayer playerLayer:false hasPlayer:false subs:2 sublayers:2]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:7.0x3.0 sublayers:1]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:7.0x3.0 sublayers:0]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:3.0x36.0 sublayers:1]
flutter: - LAYER CALayer [playerLayer:false hasPlayer:false frame:3.0x36.0 sublayers:0]
Describe alternatives you've considered
我想过替代方方案,比如:https://pub.dev/packages/better_native_video_player,但这个播放器还是很多格式不用兼容。
Additional context
然后我用AI帮我分析各种播放和别的解决方案。还是希望作者你做一个兼容回退。
我还是希望用图上第四个方案,从技术看难吗?
Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions