gpt4 book ai didi

android - 如何使用 webview 在基于 html5 的离线 Android 应用程序中播放 mp4 视频?

转载 作者:太空狗 更新时间:2023-10-29 14:54:51 52 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,它应该可以离线显示多个 html 页面,每个页面可能包含一个或两个小型嵌入式 mp4 视频。原始的 html 文件用于构建运行没有任何问题的 iPhone 应用程序。当用户导航到新页面时,视频文件应该在没有任何用户交互的情况下开始播放。嵌入的小视频应自动开始并无限循环。我在 Linux Mint 17.2 上使用 Android Studio 1.3.2,经过反复试验,仔细尝试我在此处找到的一些建议,我设法构建了一个应用程序 (Android 4.4.2),如下所示:

在 AndroidManifest.xml 中,我添加了硬件加速并允许访问互联网:

android:hardwareAccelerated="true"
<uses-permission android:name="android.permission.INTERNET" />

该应用是使用以下方法构建的:

compileSdkVersion 22
buildToolsVersion "22.0.1"
minSdkVersion 17
targetSdkVersion 22

在 MainActivity.java 中,我添加了 WebChromeClient 并启用了 JavaScript。我使用 setMediaPlaybackRequiresUserGesture 选项防止用户在可以自动播放视频之前必须先触摸:

private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mWebView = (WebView) findViewById(R.id.activity_main_webview);
mWebView.setWebChromeClient(new WebChromeClient());

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setMediaPlaybackRequiresUserGesture(false);

mWebView.loadUrl("file:///android_asset/www/index.html");
}

在 index.html 文件中,我尝试了以下几次嵌入电影文件的尝试。在我复制到不同文件夹的所有三种情况下,电影都是相同的 mp4 文件:

<body>
1) Intern mp4, resides in assets/www
<video id="vid2" width="100%" autoplay loop controls>
<source src="./mov_bbb.mp4">
</video>

2) extern SDcard
<video id="video" width="100%" autoplay loop controls>
<source src="file:///mnt/sdcard/cmr/mov_bbb.mp4">
</video>

3) online WWW
<video id="video" width="100%" autoplay loop controls>
<source src="http://www.w3schools.com/html/mov_bbb.mp4">
</video>
</body>

1) 尝试加载和播放位于 assets/www(与 index.html 所在位置相同)并打包在包内的 mp4 不起作用。当我按下播放按钮时,视频框变黑并调整为视频的大小,但它没有播放,出现未知错误:

W/MediaPlayer﹕ info/warning (1001, 0)
E/MediaPlayer﹕ Error (1,-2147483648)

2) 视频自动开始但不循环播放。此外,我不想让所有的电影文件都位于外部 SD 卡中:

E/MediaPlayer﹕ Should have subtitle controller already set
W/MediaPlayer﹕ info/warning (3, 0)

3) 在线内容:视频自动开始但不循环播放。我不希望该应用程序依赖于网络。离线访问是应用程序的重要组成部分。

I/MediaPlayer﹕ setDataSource(http://www.w3schools.com/html/mov_bbb.mp4)
E/MediaPlayer﹕ Should have subtitle controller already set
W/MediaPlayer﹕ info/warning (3, 0)

为什么像处理图像和 html 文件一样将 mp4 视频嵌入包中不起作用?是否有使用额外脚本的解决方法,也许可以解决我在构建应用程序时遇到的挑战?感谢您的帮助。

最佳答案

我想你把locate save video 改成sdcard

关于android - 如何使用 webview 在基于 html5 的离线 Android 应用程序中播放 mp4 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518694/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com