【问题标题】:how to play video in Android Web view using html5如何使用 html5 在 Android Web 视图中播放视频
【发布时间】:2011-05-03 06:37:55
【问题描述】:

我使用下面的代码在包含 a 的 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)

【问题讨论】:

  • @dev_android 这个问题你解决了吗???

标签: android html webview html5-video


【解决方案1】:

我将视频文件放在 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

【讨论】:

  • 实际上需要省略“.mp4”后缀(如示例中所示),我无法在原始文件夹中使用子文件夹,也无法使用带有特殊字符的文件名。
  • @Twilite,你的意思是说-“.mp4”视频文件不工作?
  • 是的@Dhananjay video.src ="android.resource://ProjectPackageAame/raw/bigbuck"; 有效,而video.src ="android.resource://ProjectPackageAame/raw/bigbuck.mp4"; 无效(假设文件名是bigbuck.mp4
  • 是的!好的,我误解了你的评论。它通过其视频类型获取文件扩展名。所以不需要在video src添加文件扩展名。
【解决方案2】:

根据http://html5test.com/compare/browser/android40.html,Android 4.0 支持视频元素,但不支持嵌入 MP4、H.264 或 Ogg 视频。我还尝试使用 HTMl5 视频创建 PhoneGap Android 应用程序,但它不会播放视频。 HTML5 有效,但安卓浏览器无法播放视频。此外,您的 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 视频标签,真是令人困惑。

【讨论】:

  • 您是从 http 服务器加载上述 html 还是使用 file:/// url 在设备上本地加载?
【解决方案3】:

从视频标签中移除 src 属性并制作 javascript 函数来播放视频。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2019-08-15
    • 2012-03-30
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多