如何在android webview中播放视频URL

Posted

技术标签:

【中文标题】如何在android webview中播放视频URL【英文标题】:How to play video URL inside android webview 【发布时间】: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 正在浏览器中运行。

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于如何在android webview中播放视频URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中隐藏 WebView 播放器的视频选项

如何解决在android开发中WebView在线播放视频黑屏啊?

Android webview中如何播放网络视频

如何使用android在webview中播放视频?

如何在 Android WebView 中播放 YouTube 视频?

如何清除 Webview 内容以更改 Android Oreo 中的视频