12

我正在尝试在 android 中使用HTML5在webView中播放 mp4 视频,但不幸的是它不起作用,所以任何人都可以帮助我,我该怎么做?

这是我的代码 HTML文件,名称为 new2.html

<video width="365" height="200" src="/sdcard/Download/video.mp4" controls autobuffer></video>


<!--<!DOCTYPE html>
<html>
<body>

<video width="320" height="240" controls autoplay>
  <source src="/sdcard/Download/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

</body>
</html>-->

Java文件是:

public class WebActivity extends Activity {
     WebView wv;  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
         setContentView(R.layout.web_activity);  

         wv = (WebView) findViewById(R.id.webview);  
         wv.loadUrl("file:///android_asset/new2.html");
         wv.getSettings().setAllowFileAccess(true);
         wv.getSettings().setJavaScriptEnabled(true);
         wv.getSettings().setPluginsEnabled(true);
        // webview.loadUrl("file:///android_asset/new.html");
    }

}

XML文件是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <WebView
        android:id="@+id/webview" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>
4

5 回答 5

1

您需要通过本地主机调用您的文件 -- file://localhost/ -- 否则您的手机将无法识别是您在请求权限。通过在没有本地主机的情况下使用浏览器,您正在 ping 卫星,并且无法在重新进入时返回。

您正在显示控件,因为它们来自公共 html 文件夹,但您的源(视频)没有。

于 2013-06-07T04:34:22.663 回答
1

这个博客它指出有两个步骤:

  1. 创建扩展 ContentProvider 的新类并基本上覆盖 1 个方法 openFile。方法 onCreate 可以为空,返回 true,其余的可以抛出 UnsupportedOperationException。
  2. 将提供程序条目添加到 AndroidManifest.xml。

此页面也显示了如何执行此操作 - 该页面的摘要如下:

第 1 步:在 AndroidManifest.xml 中声明您的 Content Provider:

<provider android:name="MyDataContentProvider"
    android:authorities="com.techjini" />
                         ^^^^^^^^^^^ change this

第2步:

创建ContentProvider并实施openFile. 您所要做的就是从 uri 获取真实路径,打开它并返回描述符

URI uri = URI.create("file:///data/data/com.techjini/files/myImage.jpeg");
                              ^^^^^your path to your file    
File file = new File(uri);
ParcelFileDescriptor parcel =
    ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
return parcel;

您可以使用以下命令查找图像的存储位置:

System.out.println(getFilesDir().getAbsolutePath());

您现在可以加载文件:

myWebView.loadUrl("content://com.techjini/myImage.jpeg");
                             ^^^^^^^^^^^change to same as in manifest

希望有帮助。

于 2013-06-07T06:52:33.537 回答
0

如果将“/sdcard/Download/video.mp4”更改为“file:///sdcard/Download/video.mp4”会发生什么?我的意思是html部分:

<video width="365" height="200" src="file:///sdcard/Download/video.mp4" controls autobuffer></video>

我无法在自定义 Web 应用程序中打开 html 页面。但是我注意到,如果不添加“file:///”,视频将无法在我的 Android 浏览器中播放。(在我的情况下,通过添加“file:///”,视频开始加载需要一些时间。)

于 2013-06-08T12:14:03.980 回答
0

在WebView中播放MP4视频需要先在Manifest中声明Content Provider

<provider android:name = "MyDataContentProvider" android:authorities="com.myapp" />

使用方法实现打开文件open()-</p>

URI myURL = URI.create("file:///mypath/new.mp4");
File f = new File(myURL);
ParcelFileDescriptor p =
   ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
return p;
于 2021-12-28T11:47:03.450 回答
0
<video width="365" height="200" src="video.mp4" controls autobuffer></video>

并且 video.mp4 应该在您的资产文件夹中,与您放置 new2.html 的位置相同

于 2016-04-15T06:30:09.643 回答