如何在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 中打开。你能解释为什么它不是一个解决方案。如果您有更好的想法,请分享@MuhammadpluginState
- 已弃用,Kitkat 或更高版本不支持插件【参考方案2】:
如果试过其他人都没有用,也许你可以试试这个:
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP)
webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
【讨论】:
【参考方案3】:您需要加载将视频嵌入其中的 html 文档,而不是直接加载视频。要使用 <video>
标签在 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 非常感谢,我也可以发送我的布局 他哥,它在我的设备上工作。顺便问一下,你有没有添加互联网权限??这可能是一个老问题,但这是可行的:
//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在线播放视频黑屏啊?