【问题标题】:Embed config is not supported in RemoteEmbeddedPlayer?RemoteEmbeddedPlayer 不支持嵌入配置?
【发布时间】:2018-10-31 15:54:09
【问题描述】:

每当我尝试在我的应用中打开 Youtube 播放器时,总是会调用 onInitializationSuccess() 函数。但它显示一个空白屏幕。

首先出现这个错误:

W/YouTubeAndroidPlayerAPI:强制创建叠加层:affq@82a17f5 助手:Lazy@9b7098a 视图:空状态:....... {...}

然后:

E/YouTubeAndroidPlayerAPI:RemoteEmbeddedPlayer 不支持嵌入配置。

这是我的代码:

FragmentManager fragmentManager = ((AppCompatActivity)this.context).getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    Fragment  youtubeFragment = new YouTubePlayerSupportFragment();
    fragmentManager.beginTransaction().add(R.id.GlideLayout ,youtubeFragment).commit();


    utubevw = (YouTubePlayerSupportFragment) youtubeFragment;
    utubecontainer = imageLayout.findViewById(R.id.youtubecontainer);

    utubecontainer.setVisibility(View.VISIBLE);

    mOnInitializeListener = new YouTubePlayer.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
            youTubePlayer.cueVideo("_8kExcHqFi4");
            Log.i("youtube", "Successful");
        }
        @Override
        public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
            Log.i("youtube:Fail", youTubeInitializationResult.toString());
        }
    };
    utubevw.initialize(String.valueOf(R.string.googleapikey), mOnInitializeListener);

到处搜索,甚至在 Github 上发布,但找不到解决方案。

仅供参考 - 我不想使用 Webview 播放 Youtube。

【问题讨论】:

  • 你检查过这个SO post吗?我认为关于此错误,github 中仍有open issue。
  • 是的,也检查过了。没有找到任何解决方案。
    另外,我知道它现在没有引起任何问题,我的 youtube 视频没有出现在屏幕上因为创建了两个 youtube 片段。我删除了另一个,它开始显示
  • 我只在我的应用程序的签名版本中看到此问题,但它在调试版本中按预期工作。

标签: android youtube-api


【解决方案1】:

我刚才遇到了同样的问题,我能够通过删除所有可能的覆盖视图来解决它。 我有一个 FAB 刚好覆盖了 youtube 片段。将 FAB 移开后,错误已修复。

【讨论】:

  • 彼得,非常感谢!你把我从愚蠢的重构中救了出来!
【解决方案2】:

尝试使用youTubePlayer.loadVideo(" ") 而不是youTubePlayer.cueVideo(" ") 在片段启动时自动播放视频。 根据docs,如果你使用cueVideo()功能,你需要调用play(),否则它不会下载任何视频流。而loadVideo() 会自动播放视频。

【讨论】:

  • 确保在 .cueVideo() 或 .loadVideo() 中提供正确的视频 ID,而不是整个 URL。您是否使用正则表达式来获取视频 ID?
  • 你能展示你的正则表达式吗?如果需要,请改用 String pattern = "(?<=watch\\?v=|/videos/|embed/)[^#&?]*";
  • 肯定会试试这个。谢谢
【解决方案3】:

我尝试了@PeterOla 的答案,它工作了一段时间,但过了一段时间,错误又回来了,经过数小时的努力,我发现我只需要解析 youTubePlayer 中的关键 url(没有 youtube/)。 cueVideo(""),对我来说效果很好。

【讨论】:

    猜你喜欢
    • 2019-01-21
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多