【问题标题】:How to play video URL inside android webview如何在android webview中播放视频URL
【发布时间】:2013-12-17 19:01:39
【问题描述】:

我想在我的应用程序 webview 中播放视频 url,但是当我运行应用程序时它只显示白屏。 我已经阅读了一些关于此的帖子,并且我使用了该代码,但视频没有在 webview 中播放它启动设备播放器,但我的要求不是这个。

如果有人已经这样做了,请帮助我。 我的代码在这里:-

    WebView webView = (WebView) findViewById(R.id.myweb);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginState(PluginState.ON);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setSupportMultipleWindows(true);
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            setProgressBarIndeterminateVisibility(false);
            super.onPageFinished(view, url);
        }
    });
    webView.loadUrl("http://download.wavetlan.com/SVV/Media/HTTP/H264/Talkinghead_Media/H264_test1_Talkinghead_mp4_480x360.mp4");
    webView.setVisibility(View.VISIBLE);

测试 URL 正在浏览器中运行。

【问题讨论】:

    标签: android video webview


    【解决方案1】:
    WebView webview = (WebView) findViewById(R.id.webView1);
        webview.setWebViewClient(new WebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setPluginState(WebSettings.PluginState.ON);
        webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
        webview.setWebChromeClient(new WebChromeClient());
        webview.loadUrl("https://www.youtube.com");
    

    也在manifist文件中设置

     <application
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

    【讨论】:

    • 这不是直接在webview中播放视频,而是打开浏览器,这不是问题的解决方案。
    • 它正在播放来自 URL 的视频,并在 webview 中打开。你能解释为什么它不是一个解决方案。如果您有更好的想法,请分享@Muhammad
    • pluginState - 已弃用,Kitkat 或更高版本不支持插件
    【解决方案2】:

    如果试过其他人都没有用,也许你可以试试这个:

     if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP){
            webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
    

    【讨论】:

      【解决方案3】:

      您需要加载将视频嵌入其中的 HTML 文档,而不是直接加载视频。要使用 &lt;video&gt; 标签在 WebView 中播放内嵌视频,您还必须确保在您的应用程序中启用了硬件加速(请参阅 http://developer.android.com/guide/topics/graphics/hardware-accel.html)。

      【讨论】:

        【解决方案4】:

        添加 webview.setWebChromeClient(new WebChromeClient()); 并为您的视频添加插件:

          if (Build.VERSION.SDK_INT < 8) {
             webview.getSettings().setPluginsEnabled(true);
          }  
          else {
             webview.getSettings().setPluginState(PluginState.ON);
          }
        

        希望这会有所帮助。

        【讨论】:

        • @siddharth 不工作只显示缩放按钮我正在使用版本 >4.0
        • 非常感谢,我也可以发送我的布局
        • 他哥,它在我的设备上工作。顺便问一下,你有没有添加互联网权限??
        • 是的,我已经添加了,但在我的设备中只显示白屏
        • 你能检查一下其他网址,比如一些 youtube 网址吗?
        【解决方案5】:

        这可能是一个老问题,但这是可行的:

            //Here Im loading the html file from disk
            String html_file = LoadData(file.getAbsolutePath());
        
            WebView myWebView = (WebView) view.findViewById(R.id.webView);
            myWebView.reload();
            myWebView.getSettings().setJavaScriptEnabled(true);
            myWebView.loadData(html_file, "text/html; charset="utf-8", "UTF-8");
        

        使用 base64 编码的视频数据作为您的 video 来源:

        //html_file
        <video controls>
           <source type="video/mp4" src="data:video/webm;base64,MY_BASE64_ENCODED VIDEO_HERE">
        </video>
        

        【讨论】:

          【解决方案6】:

          我知道这是一个老问题,几天前我遇到了同样的问题,我在网上冲浪时发现这个完整的资源对我有很大帮助,现在我想与其他人分享,也许可以帮助像我这样的人。 .

          https://github.com/cprcrack/VideoEnabledWebView

          【讨论】:

            【解决方案7】:

            对我来说这是解决方案

            settings.setDomStorageEnabled(true);
            

            【讨论】:

            • 请在答案中添加详细信息
            【解决方案8】:

            不,在这种情况下,您不能通过链接播放视频。为此,您应该创建一个 RTSP 连接,然后您可以通过Webview 中的 RTSP url 播放视频。您可以从 Youtube 等服务器检索 RTSP 连接。

            【讨论】:

              【解决方案9】:

              试试这个。

              {
                  WebSettings settings = webView.getSettings();
                  settings.setJavaScriptEnabled(true);
                  settings.setDomStorageEnabled(true);
                  settings.setMinimumFontSize(10);
                  settings.setLoadWithOverviewMode(true);
                  settings.setUseWideViewPort(true);
                  settings.setBuiltInZoomControls(true);
                  settings.setDisplayZoomControls(false);
                  webView.setVerticalScrollBarEnabled(false);         
                  webView.loadDataWithBaseURL(null, vUrl, "text/html", "UTF-8", null);
              }
              

              【讨论】:

                【解决方案10】:

                我也被这个问题困住了。我得到了服务器的正确响应,但无法播放视频。很长一段时间后,我找到了解决方案here。也许,将来此链接将无效。所以,这是我的正确代码

                Uri video = Uri.parse("Your link should be in this place "); 
                mVideoView.setVideoURI(video); 
                
                mVideoView.setZOrderOnTop(true); //Very important line, add it to Your code
                mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
                    @Override 
                    public void onPrepared(MediaPlayer mediaPlayer) {
                   // here write another part of code, which provides starting the video
                }}
                

                【讨论】:

                  【解决方案11】:

                  如果您使用 Kotlin,此代码会很有用:

                  @SuppressLint("SetJavaScriptEnabled")
                      val url = "https://..."
                      val webView = findViewById<WebView>(R.id.webView)
                  
                      webView.webViewClient = WebViewClient()
                      webView.settings.javaScriptCanOpenWindowsAutomatically = true
                      webView.settings.javaScriptEnabled = true
                      webView.settings.setSupportZoom(true)
                      webView.settings.mediaPlaybackRequiresUserGesture = false
                     
                      webView.loadUrl(url)
                  

                  【讨论】:

                    猜你喜欢
                    • 2011-12-31
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-07-20
                    • 1970-01-01
                    • 2012-12-16
                    • 2011-10-22
                    • 1970-01-01
                    • 2011-06-26
                    相关资源
                    最近更新 更多