Играть местные видео-файл в Хром упакованных приложений
Можно ли воспроизвести локальный видеофайл из упакованного приложения? Я уже написал код для выбора файла (chrome.файловая система.chooseEntry) и определить путь (хром.файловая система.getDisplayPath), но установка его на источник тега my video возвращает:
Не разрешается загружать локальный ресурс: file:// /
Заранее благодарю.
3 ответа:
Мое решение состояло в том, чтобы выбрать локальный файл через этот вызов:
chrome.fileSystem.chooseEntry({'type': 'openFile'}, function(fileEntry) { // ... });
С этим в памяти я получил каталог в моей изолированной постоянной области:
fileSystem.root.getDirectory('videos', { create : true }, function(dirEntry) { // ... }, $scope.errorHandler);
И скопировал локальный файл в этот каталог:
fileEntry.copyTo(dirEntry, fileEntry.name, function(newFileEntry) { video.src = newFileEntry.toURL(); });
Это сработало отлично, и это довольно чисто, функция, которую я не реализовал здесь, но важно, это обнаружение кодека, потому что если вы пытаетесь загрузить видео, которые не поддерживаются Chrome, вы можете подумать, что что-то не так с кодом, но это не так. связано с кодеком / видеоплеером.
Для дальнейшего ознакомления вот полный код:
window.requestFileSystem(window.PERSISTENT, 300*1024*1024, function(fileSystem) { console.log('A request to access the file system have been made.'); $scope.fileSystem = fileSystem; }, $scope.errorHandler); $scope.loadVideo = function() { chrome.fileSystem.chooseEntry({'type': 'openFile'}, function(fileEntry) { $scope.fileSystem.root.getDirectory('videos', { create : true }, function(dirEntry) { fileEntry.copyTo(dirEntry, fileEntry.name, function(newFileEntry) { video.src = newFileEntry.toURL(); }); }, $scope.errorHandler); }); };
Я нашел, что работает-это создание url-адреса объекта из FileEntry и использование в качестве
src
для тега<video>
. Вот пример:video_file.file(function(file) { var video_url = webkitURL.createObjectURL(file); $player.attr("src", video_url); });
У меня был похожий вопрос и столкнулся с теми же проблемами, вы не можете загрузить URL-адреса
Команда chrome предложила мне посмотреть на https://github.com/GoogleChrome/apps-resource-loader и используйте метод, который используетfile:///
из-за последствий для безопасности, и использование примера media gallery было сбоем, потому что мои видеофайлы превышают 150 МБ.RAL.RemoteImage
, чтобы загрузить файл в хранилище песочницы, а затем использовать его оттуда.Я использую
ral.min.js
и реализовал свой собственныйRemoteVideo
объект что я основывался на объектеRemoteImage
, меняя элемент на объектvideo
вместо объектаimg
и используя плакат вместо изображения по умолчанию, прежде чем он будет загружен, и это сработало для меня.