无法使用cordova在android上播放视频
Posted
技术标签:
【中文标题】无法使用cordova在android上播放视频【英文标题】:Can't play videos on android using cordova 【发布时间】:2021-04-04 19:19:38 【问题描述】:我已经四处寻找了几天:(所以真的需要你的帮助。 我正在开发的是一个下载图像和视频并全屏显示的应用程序。 对于图像来说,一切都很好。
但是在播放视频时,有时会出现此图像并且视频无法播放。
这是我的下载代码:
download(URL, fileName, callback)
var folderName = "serverMediaDir";
var uri = encodeURI(URL);
window.requestFileSystem(
LocalFileSystem.PERSISTENT,
0,
function (fileSystem)
var directoryEntry = fileSystem.root; // to get root path of directory
directoryEntry.getDirectory(
folderName,
create: true,
exclusive: false
,
function (parent)
// Directory created successfuly
var filename = fileSystem.root.toURL() + folderName + "/" + fileName;
console.log("Directory created successfuly: " + filename);
var fileTransfer = new FileTransfer();
fileTransfer.download(
uri,
filename,
function (entry)
// download success
var path = entry.toURL(); //**THIS IS WHAT I NEED**
console.log("Download Completed: " + entry.fullPath);
callback(null, filename, entry);
,
function (error)
callback(error, null);
// irrelevant download error
);
,
function (error)
//Error while creating directory
callback(error, null);
);
, function (error)
callback(error, null);
// irrelevant request fileSystem error
);
然后我将视频和图像的完整路径保存到我用来显示它们的数组中。
这就是我玩它们的方式:
vid: function ()
var self = this;
//Accepts any number of ‘src‘ to a same video ('.mp4', '.ogg' or '.webm')
var el = document.createElement("video");
// var source = document.createElement("source");
/*for (var i = 0; i < arguments.length; i++)
source.src = arguments[i];
// source.type = "video/" + arguments[i].split(".")[arguments[i].split(".").length - 1];
el.appendChild(source);
*/
el.src = arguments[0];
el.onplay = function ()
clearInterval(window.sliding);
;
el.onended = function ()
window.sliding = setInterval(self.rotateImages, self.mediaUnitDuration * 1000);
self.rotateImages();
;
return el;
,
rotateMedias: function ()
var self = this;
if (self.newMedia)
self.galleryArray = [];
if (self.mediaServer.length === 0)
self.galleryArray.push(self.img(require(window.display.toUpperCase() ==='H'? '~/assets/H.jpg':'~/assets/V.jpg')))
for (var i = 0; i < self.mediaServer.length; i++)
if (self.mediaServer[i].type.toLowerCase() === "video" && self.mediaServer[i].status)
var obj = ;
obj = self.vid(self.mediaServer[i].path);
else if (self.mediaServer[i].type.toLowerCase() === "image" && self.mediaServer[i].status)
var obj = ;
obj = self.img(self.mediaServer[i].path);
self.galleryArray.push(obj);
self.newMedia = false;
$("#slideShow").fadeOut("slow");
setTimeout(function ()
self.curImg = self.curImg < self.galleryArray.length - 1 ? self.curImg + 1 : 0;
document.getElementById("slideShow").innerhtml = "";
self.galleryArray[self.curImg].style.width = "100%";
self.galleryArray[self.curImg].style.height = "100%";
self.galleryArray[self.curImg].style.margin = "0px";
document.getElementById("slideShow").appendChild(self.galleryArray[self.curImg]);
if (self.galleryArray[self.curImg].tagName.toLowerCase() === "video")
self.galleryArray[self.curImg].play();
$("#slideShow").fadeIn("slow");
, 500);
我尝试的解决方案是更改存储文件的目录 (cordova.file.applicationDirectory|dataDirectory|externalApplicationStorageDirectory...) 并尝试公开和私有但也无法正常工作。
我也尝试了协议 file:/// 和 cdvfile://localhost
我使用: 科尔多瓦 10.0.0 科尔多瓦插件文件传输 1.7.1 科尔多瓦插件文件 6.0.2
并在装有 android 7.1.2 的 X96mini 盒子上运行该应用
【问题讨论】:
【参考方案1】:经过大量测试,我发现这是一个盒子错误(该应用程序可以在许多其他具有不同版本的 android 设备上运行)。 Thnx 上帝,我找到了 this 插件,所以我使用了它,并且它确实可以很好地解决一些问题。
【讨论】:
这些解决方法是什么?你能分享吗?谢谢。以上是关于无法使用cordova在android上播放视频的主要内容,如果未能解决你的问题,请参考以下文章
在 iOs 和 Android 的 PhoneGap/Cordova-app 中播放视频
Unity VideoPlayer使用url方式,Android平台下无法播放http链接的视频(黑屏无反应无报错无log输出)...