我使用下面的代码在android WebView中播放视频,其中包含一个,我已将视频和海报图像放在资产文件夹中。
vWebview = (WebView)findViewById(R.id.VWebview);
vWebview.getSettings().setJavaScriptEnabled(true);
vWebview.getSettings().setPluginsEnabled(true);
ViewContent(raw);
InputStream fileStream = getResources().openRawResource(R.raw.test);
int fileLen = fileStream.available();
byte[] fileBuffer = new byte[fileLen];
fileStream.read(fileBuffer);
fileStream.close();
String displayText = new String(fileBuffer);
vWebview.loadDataWithBaseURL("fake://not/needed", displayText, "text/html", "utf-8", "");
html文件是这样的:
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Hello World</title>
<body>
<div>
<p>
<video src="file:///android_asset/bigbuck.m4v" poster="file:///android_asset/test.jpg" onclick="this.play();"/>
</p>
</div>
</body>
</html>
工作正常。海报图像显示正确,一旦我点击它就会出错:
05-12 10:24:22.207: ERROR/http(2882): Null or empty value for header "Host"
05-12 10:24:22.207: ERROR/webcoreglue(2882): *** Uncaught exception returned from Java call!
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): Uncaught handler: thread WebViewCoreThread exiting due to uncaught exception
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): java.lang.RuntimeException: Null or empty value for header "Host"
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.net.http.Request.addHeader(Request.java:161)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.net.http.Request.<init>(Request.java:126)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.net.http.RequestQueue.queueRequest(RequestQueue.java:359)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.net.http.RequestQueue.queueRequest(RequestQueue.java:327)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.webkit.HTML5VideoViewProxy$PosterDownloader.start(HTML5VideoViewProxy.java:275)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.webkit.HTML5VideoViewProxy.loadPoster(HTML5VideoViewProxy.java:490)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.webkit.WebViewCore.nativeTouchUp(Native Method)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.webkit.WebViewCore.access$3400(WebViewCore.java:48)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1095)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.os.Looper.loop(Looper.java:123)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:612)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): at java.lang.Thread.run(Thread.java:1096)
答案 0 :(得分:2)
我将视频文件放在RAW文件夹中,并通过以下代码访问default.html文件中的视频文件:
video.src ="android.resource://ProjectPackageAame/raw/bigbuck";
video.type = "video/mp4";
video.load();
video.play();
它像我想要的那样播放视频。还在AndroidManifest文件中添加了以下行。
android:hardwareAccelerated="true"
试试这个 - where to place local video files for android webview html5 hybrid app
答案 1 :(得分:1)
根据http://html5test.com/compare/browser/android40.html,Android 4.0支持视频元素,但它不支持嵌入MP4,H.264或Ogg视频。我还尝试使用HTMl5视频创建一个PhoneGap Android应用程序,它不会播放视频。 HTML5有效,但Android浏览器无法播放视频。此外,您的HTML5视频代码似乎错了。 W3Schools网站的HTML5 video
标记设置如下:
<video width="width" height="height" poster="postersrc.jpg" controls="controls">
<source src="source.mp4" type="video/mp4" />
<source src="source.ogg" type="video/ogg" />
No support for HTML5 video. Sorry!
</video>
如果不支持任何视频类型,浏览器可以支持HTML5视频标记真的很混乱。
答案 2 :(得分:0)
从视频标记中删除src属性,并使用javascript函数播放视频。