如何在android webview中播放视频网址

时间:2013-12-02 06:22:52

标签: android video webview

我想在我的应用程序webview中播放视频网址但是当我运行应用程序时它只显示白屏。 我已经阅读了一些关于此的帖子,我已经使用了该代码,但视频没有在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);

测试网址正在浏览器中运行。

10 个答案:

答案 0 :(得分:16)

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");

也在清单文件中设置

 <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>

答案 1 :(得分:1)

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

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

希望这有帮助。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我知道这是一个老问题,我几天前遇到了同样的问题并且在互联网上冲浪我发现这个完整的来源对我有很大帮助,现在我想和别人分享,也许可以帮助像我这样的人。

https://github.com/cprcrack/VideoEnabledWebView

答案 4 :(得分:1)

如果尝试了其他人没有工作,也许你可以试试这个:

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

答案 5 :(得分:1)

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

    //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 :(得分:0)

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

答案 7 :(得分:0)

试试这个。

{
    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);
}

答案 8 :(得分:0)

我也遇到了这个问题。我得到了服务器的正确回复,但无法播放视频。很长一段时间后,我找到了解决方案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
}}

答案 9 :(得分:0)

对我来说,这就是解决方案

settings.setDomStorageEnabled(true);