我正在尝试在不停止 PIP 模式的情况下播放 YouTube 视频的画中画模式。但是视频在黑屏进入 PIP 时停止播放,即使手动调用 player.play() 方法也不会播放。我看到它工作的唯一方法是创建一个新的 Fragment 实例并再次 initialize() 。如何播放符合以下要求的视频?
- 进入 PIP 模式时,YouTube 视频应继续播放而不会停止/暂停
- newInstance() 丢失缓冲区 + 导致重新加载延迟,需要连续播放
- API 必须允许选择播放质量(“小”、“大”等)。所以 IFRAME API 不是一个选项
- 不应破坏 YouTube 的 TOS,因此其他支持 DASH 网址等的外部视频播放器看起来也不像是一个选项
- 最好 Activity 应该扩展 AppCompatActivity 而不是 YouTubeBaseActivity
注意:从 PIP 返回到完整模式时,视频会连续播放,没有问题。
尝试了以下方法:
- 尝试了不使用画中画的有界和无界服务,仍然连续播放是一个问题。
- Francesco 的 android youtube 播放器 API(视频可以无缝播放,但由于 YouTube 的 API 限制无法更改播放质量)
- 使用 YoutTubePlayerSupportFragment 在 Activity 和 Player 的 onPictureInPictureModeChanged()、onPause() 和 onStopped() 事件上手动调用 play()(视频不会播放,保持黑屏)
- 删除视图/布局并在 PIP 上尝试 YouTubePlayer.setFullscreen(true)
- 尝试在布局上仅使用一个空的 FrameLayout 来检查叠加层是否导致问题,否
- Android Studio 调试日志中也没有报告 Overlays 的错误
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" …Run Code Online (Sandbox Code Playgroud) java android youtube-api android-youtube-api android-picture-in-picture