gpt4 book ai didi

android - YouTubeAndroidPlayerAPI 无法播放某些视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:46 25 4
gpt4 key购买 nike

-- 更新时间 09/05/2016 17:10 --问题似乎与视频的发布日期有关... 4 月的最后一周我在 YouTube 上发布了很多视频,那些发布到 4 月 27 日 19:00 的视频正常,而那些在 21:15 之前收费的同一天讨论了这个问题,好像在 4 月 27 日 19 日至 21 日之间,YouTube 对视频进行了一些更新或更改。我现在尝试加载一个新视频,这也有同样的问题。


我在使用 YouTubeAndroidPlayerAPI 时遇到了一个奇怪的问题。我使用 YouTubePlayerSupportFragment(但我与 YouTubePlayerFragment 有同样的问题)在我的应用程序中播放视频,一些视频播放完美,其他显示错误“播放时出现问题。点击重试。”。

当这种情况发生在 Android 监视器中时,我会看到 YouTube API 错误:

05-08 11:25:22.145 20521-20521/? E/YouTubeAndroidPlayerAPI: fmt.noneavailable
oae: Video not supported/available
at oab.a(SourceFile:212)
at nvl.a(SourceFile:383)
at nvl.a(SourceFile:706)
at nvr.a(SourceFile:1144
at nsn.onPostExecute(SourceFile:2102)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

如果我点击视频中的 YouTube 图标以在 YouTube 应用程序中播放它,则视频会在官方应用程序中正确播放。

如果视频启用了获利功能,则广告视频正常显示,最后显示错误。

我试过:

  • 使用 YouTubePlayerFragment 而不是 YouTubePlayerSupportFragment
  • 使用 Activity 而不是 AppCompatActivity
  • 将视频嵌入到 HTML 页面中,它可以正常工作
  • 停用货币化,没有任何变化
  • 不同的 key ,一个用于调试,一个用于发布

非常感谢您的帮助!


更新 11/05/2016 这似乎是一个 YouTube 错误;目前唯一可行的解​​决方法似乎是在 YouTube 官方应用程序中打开视频,目的是将播放器 fragment 替换为 WebView。标准 WebView 非常有限,不会显示将视频全屏显示的按钮。您需要创建一个扩展 WebChromeClient 的类:

public class MyWebChromeClient extends WebChromeClient {

FrameLayout.LayoutParams LayoutParameters = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);

@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
mContentView = (LinearLayout) findViewById(R.id.scheda_video_activity);
mContentView.setVisibility(View.GONE);
mCustomViewContainer = new FrameLayout(SchedaVideoActivity.this);
mCustomViewContainer.setLayoutParams(LayoutParameters);
mCustomViewContainer.setBackgroundResource(android.R.color.black);
view.setLayoutParams(LayoutParameters);
mCustomViewContainer.addView(view);
mCustomView = view;
mCustomViewCallback = callback;
mCustomViewContainer.setVisibility(View.VISIBLE);
setContentView(mCustomViewContainer);
}

@Override
public void onHideCustomView() {
if (mCustomView == null) {
return;
} else {
mCustomView.setVisibility(View.GONE);
mCustomViewContainer.removeView(mCustomView);
mCustomView = null;
mCustomViewContainer.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
mContentView.setVisibility(View.VISIBLE);
setContentView(mContentView);
}
}
}

然后初始化WebView:

WebView myWebView = (WebView)findViewById(R.id.webview);
MyWebChromeClient mWebChromeClient = new MyWebChromeClient();
myWebView.setWebChromeClient(mWebChromeClient);
myWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

最后,在 WebView 中加载视频:

myWebView.loadUrl("https://www.youtube.com/embed/"+youtube_id);

如果您想调整 WebView 尺寸以适应 YouTube 播放器,您可以这样做:

Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
myWebView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int)Math.round(size.x/1.77)));

最佳答案

尝试将您的 YouTube 应用更新到版本 11.19.56。

关于android - YouTubeAndroidPlayerAPI 无法播放某些视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37098956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com