我在Cordova中构建应用,其中应用的第一页包含设置为自动播放的视频标记。加载文件时我没有收到任何404错误...该文件刚刚赢了。视频只是黑色,0:00时间长度不会改变。
奇怪的是,我在视频文件的Chrome远程开发工具中收到了两个网络请求:第一个显示(成功)状态,第二个状态为(已取消)。我尝试过为文件使用两个不同的网址:
file:///android_asset/www/video/nameofmyvideo.mp4,视频文件实际位于/www/video/nameofmyvideo.mp4。
和
android.resource:// mypackagename / raw / nameofmyvideo,视频文件实际位于/ www / res / raw / nameofmyvideo和/ platforms / android / res / raw / nameofmyvideo
我正在运行最新的cordova(3.4.1-0.1.0)并在运行CM-11(4.4.2)的点火器上进行测试。
这是我使用的标记:
<video width="400px" height="300px" autoplay controls>
<source src="file:///android_asset/www/video/video-test.mp4" type="video/mp4">
</video>
OR
<video width="400px" height="300px" autoplay controls>
<source src="android.resource://my.package.name/raw/videotest" type="video/mp4">
</video>
这是一个Android路径问题吗?该应用程序在iOS中运行良好。我也尝试过使用webm,但没有成功。
编辑:
似乎无论文件是否可以实际加载,都会发生双网络加载问题(一次成功,一次取消)。我在我的网站上托管的http上加载了相同的mp4文件,视频播放得很好(但仍然显示了两个请求)。
答案 0 :(得分:2)
它无法从android上的内部资源文件夹中读取视频,您需要将它放在app,sdcard或远程以外的某个地方。 这是因为APK基本上是压缩JAR,资产中的文件需要解压缩才能工作,Android无法解压缩APK中的视频文件。
答案 1 :(得分:0)
应该是autoplay
而不是autoplay=""
和controls
而不是controls=""
。并移除px
:width="400" height="300"
答案 2 :(得分:0)
也许尝试在视频标记上添加load
:
<video width="400px" height="300px" autoplay controls onklcik="~videoClicked(this)">
<source src="file:///android_asset/www/video/video-test.mp4" type="video/mp4">
</video>
//somewhere in your scripts
videoClicked function(elem) {
$(elem).load();
}
答案 3 :(得分:0)
如果有人需要它,你可以嵌入代码下面。我已经尝试过了,它在android和ios都有效。
<object CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="100%" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<param name="src" value="{{filename}}">
<param name="qtsrc" value="{{filename}}">
<param name="autoplay" value="false">
<param name="loop" value="false">
<param name="controller" value="true">
<embed src="{{filename}}" qtsrc="{{filename}}" width="100%" autoplay="true" loop="false" controller="true" pluginspage="http://www.apple.com/quicktime/"></embed>
</object>