Youtube HTML5视频停止在Android中工作

Phi*_*lak 9 java youtube android

不知何故,Youtube HTML5视频大约一周前就停止了为我工作.我不知道为什么.这是上周工作的代码(好吧,不是真正的代码,而是我能做的最小的例子):

public class VideoTestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        WebView webView = new WebView(this);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setPluginState(PluginState.OFF);
        webView.setWebChromeClient(new TestWebChromeClient());

        setContentView(webView);

        // Try with http://player.vimeo.com/video/24158845 and it works.
        webView.loadUrl("http://www.youtube.com/embed/e2UIg3Ddfp0");
    }

    private class TestWebChromeClient extends WebChromeClient {
        @Override
        public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
            super.onShowCustomView(view, callback);
            VideoTestActivity.this.setContentView(view);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这不适用于我的手机或模拟器.疯狂的部分是Vimeo仍然很棒.我尝试设置一个iPhone用户代理,但这不起作用,我没有想法.它真的看起来Youtube改变了一些东西......

Ovi*_*tcu 2

Youtube可能已经更改了嵌入页面中的某些内容,这很可能会导致内部出现问题WebView,这就是它不再工作的原因。

您是否还在与以前相同的设备上测试您的应用程序?

我认为使用此解决方案不是一个好的做法,因为您不能依赖今天显示的内容并且Youtube它有效,几天后也会相同并且它仍然有效,就像您所看到的那样现在刚刚遇到。我也遇到了类似的问题和videos内容Youtube,它可以在一台设备上运行,但在其他一些设备上根本不起作用。它也是一种Flash内容,很多Android设备没有Flash也无法播放该内容。

解决方案是创建一个Intent用于播放视频的:

      Intent videoIntent=new Intent(Intent.ACTION_VIEW, 
                                     Uri.parse("http://www.youtube.com/my_url"));
      startActivity(videoIntent);
Run Code Online (Sandbox Code Playgroud)

但我建议的是按照支持的媒体格式Android中的建议对视频进行编码,并将它们存储在您自己的服务器上(如果有可能)。

编辑:他们肯定改变了一些东西,因为那里有一个 js 错误。您可以使用以下方式跟踪它们WebChromeClient

  mWebView.setWebChromeClient(new WebChromeClient(){
        @Override
        public void onConsoleMessage(String message, int lineNumber,
                String sourceID) {
            super.onConsoleMessage(message, lineNumber, sourceID);
            Log.i("VIDEO VIEW",message);
        }
 }
Run Code Online (Sandbox Code Playgroud)

这是我收到的消息错误:

TypeError: Result of expression 'a' [undefined] is not an object.line 78sourcehttp://www.youtube.com/embed/e2UIg3Ddfp0
Run Code Online (Sandbox Code Playgroud)

不知道对你有没有帮助,我稍后再看一下,看看能找到什么。