Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

当前依赖问题 #541

Open
Predidit opened this issue Dec 31, 2024 · 4 comments
Open

当前依赖问题 #541

Predidit opened this issue Dec 31, 2024 · 4 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Predidit
Copy link
Owner

Predidit commented Dec 31, 2024

1. media-kit (android)

目前我们的播放器使用独立的 media-kit分支

其和 media-kit主分支 均基于 mpv 0.36

我们的 libmpv android 编译脚本位于 https://github.com/Predidit/libmpv-android-video-build

目前最新的 mpv 版本为 0.39 我们在升级 mpv 依赖的尝试遇到了问题,高于 0.3.6 版本的依赖会导致闪烁,我们需要尝试调查并解决这一问题

测试方法:

分叉我们当前的 media-kit 分支,修改其中的 libmpv 下载路径到高版本位置,并运行当前分支中的 media-kit-test 目录下的 main.dart 进行测试

@Predidit Predidit added enhancement New feature or request help wanted Extra attention is needed labels Dec 31, 2024
@Predidit Predidit pinned this issue Dec 31, 2024
@Predidit Predidit changed the title [Android] 升级 mpv 版本 当前依赖问题 Jan 1, 2025
@Predidit
Copy link
Owner Author

Predidit commented Jan 4, 2025

updated:

问题出现在 media_kit_video/lib/src/video_controller/android_video_controller/real.dart L108 行相关调用, 这个调用的目的是订阅Dart 侧播放器的通知,当 Dart 侧 player.stream.videoParams 发生变化时,通知 native 侧调整视频画布大小。

这里的问题是这个调用被频繁触发,且在视频样片没有问题的情况下多次接收到不正确的通知,例如当播放一个宽度为 960 的视频时,我们总是间歇收到宽度为 960 (正确) 或是宽度为 854 (错误) 的通知,这导致视频画布的频繁闪烁。

我们需要更多的调查来了解为什么这部分在 mpv0.37 以前工作良好。

@Predidit
Copy link
Owner Author

我继续调查了这一问题,问题来自

https://github.com/Predidit/media-kit/blob/d8eb365f7e957020f68309214e142fc527b855c7/media_kit/lib/src/player/native/player/real.dart#L1933-L1949

我不知道为什么我们从 ffi 得到错误的宽高信息

@Predidit
Copy link
Owner Author

这可能是

mpv-player/mpv#12825

这同样发生在 0.37 版本

但是这样的话问题应该出现在所有平台,这让人非常困惑

@Predidit
Copy link
Owner Author

我现在非常怀疑问题来自 mpv

mpv 文档中提供了多种方法获取视频参数

video-params video-out-params video-dec-params video-target-params

这四种方法几乎是完全相同的,仅有细微的差距

我们现在可以轻易地通过修改当前使用的 video-out-paramsvideo-params 修复闪烁问题

我们现在只需要考虑新版本 mpv 的编译细节和升级 mpv 的必要性以及可能的风险

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant