- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 Cordova 应用程序从服务器下载音频文件,并使它们可以在设备离线时播放。直到昨天我升级到最新版本时一切正常。
最初,下载(通过文件传输插件)和播放(通过媒体插件)都不起作用。进一步研究我发现 fileSystem.root.fullPath
现在返回一个相对于应用程序本地 Web 根文件夹的路径,但它过去返回一个完全限定的路径。 Cordova 现在建议改用 fileSystem.root.toURL()
( http://cordova.apache.org/news/2014/02/10/plugins-release.html )。这确实解决了文件传输问题。
但是,使用新的 URL 方案不适用于音频文件。尝试播放文件时,我收到一条错误消息,提示 “无法使用资源 'cdvfile://localhost/persistent/path/to/file' 中的音频文件”
。
检查 Cordova 问题跟踪器,我发现有人也报告了视频文件的相同问题 (https://issues.apache.org/jira/browse/CB-6051)。
Cordova 似乎没有更新 CDVSound 插件来处理新的文件名格式,但如果我可以像以前一样访问完全限定路径,它可能仍然有效。我查看了新代码和文档,但没有找到执行此操作的方法。
有没有人设法从文件插件中获得完全限定的路径?
最佳答案
我使用 dev 分支进行文件和文件传输,使其适用于视频。他们向 Entry 类添加了一个名为 toNativeURL 的函数。您需要从 github 项目下载 zip 文件:
https://github.com/apache/cordova-plugin-file-transfer/tree/dev
https://github.com/apache/cordova-plugin-file/tree/dev
https://github.com/apache/cordova-plugin-media/tree/dev
然后将它们安装到您的项目中:
cordova plugin rm org.apache.cordova.file-transfer
cordova plugin rm org.apache.cordova.file
cordova plugin rm org.apache.cordova.media
cordova plugin add <path_to_unzipped_dev_branch_of_file_plugin>
cordova plugin add <path_to_unzipped_dev_branch_of_file-transfer_plugin>
cordova plugin add <path_to_unzipped_dev_branch_of_media_plugin>
这是我工作的一个例子:
<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Hello World</title>
</head>
<body>
<div id="main" class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<div id="messages">
Loading Video...
</div>
<video width="320px" height="240px" controls></video>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
app.initialize();
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
console.log('Requesting file system');
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getDirectory("vids", {create: true}, gotDir);
}
function gotDir(dirEntry) {
dirEntry.getFile("video.mp4", {create: true, exclusive: false}, gotFile);
}
function gotFile(fileEntry) {
var localPath = fileEntry.fullPath;
var localUrl = fileEntry.toURL();
console.log('Loaded local path: ' + localPath);
console.log('Loaded local url: ' + localUrl);
var fileTransfer = new FileTransfer();
var uri = encodeURI('http://<url_to_video>.mp4');
console.log('Downloading ' + uri + ' to ' + localPath);
fileTransfer.download(
uri,
localUrl,
function(entry) {
console.log('download complete (path): ' + entry.fullPath);
console.log('download complete (url): ' + entry.toURL());
console.log('download complete (native): ' + entry.toNativeURL());
document.getElementById('messages').innerHTML =
'Downloaded Video path: ' + entry.fullPath + '<br />'
+ 'Downloaded Video url: ' + entry.toURL() + '<br />'
+ 'Downloaded Video Native url: ' + entry.toNativeURL() + '<br />';
var videoNode = document.querySelector('video');
videoNode.src = entry.toNativeURL();
},
function(error) {
console.log('download error source ' + error.source);
console.log('download error target ' + error.target);
}
);
}
function fail(error) {
console.log('Error creating file [' + error.name + ']: ' + error.message);
}
</script>
</body>
</html>
如果它适用于视频,那么它肯定适用于音频。
关于android - Cordova 视频/音频无法从 cdvfile ://urls after update to 3. 3.0 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21846046/
我一直在为实时流和静态文件(HTTP 上的 MP3)构建网络广播播放器。我选了Howler.js作为规范化 quirks 的后端的 HTML5 Audio (思考:自动播放、淡入/淡出、进度事件)。
vue移动端input上传视频、音频,供大家参考,具体内容如下 html部分 ?
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
我想在我的程序中访问音频和视频。 MAC里面可以吗? 我们的程序在 Windows 上运行,我使用 directshow 进行音频/视频编程。但我想在 MAC 中开发相同的东西。 有没有像direct
我的应用程序(使用 Flutter 制作,但这应该无关紧要)具有类似于计时器的功能,可以定期(10 秒到 3 分钟)发出滴答声。我在我的 Info.plist 中激活了背景模式 Audio、AirPl
我是 ionic 2 的初学者 我使用了音频文件。 import { Component } from '@angular/core'; import {NavController, Alert
我有一个包含ListView和图片的数据库,我想在每个语音数据中包含它们。我已经尝试过,但是有很多错误。以下是我的java和xml。 数据库.java package com.example.data
我在zend framework 2上建立了一个音乐社交网络。您可以想象它与SoundCloud相同,用户上传歌曲,其他用户播放它们,这些是网站上的基本操作。 我知道将要托管该页面的服务器将需要大量带
我正在尝试在android应用中播放音频,但是在代码中AssetFileDescriptor asset1及其下一行存在错误。这是代码: MediaPlayer mp; @Override prote
我对 WordPress Audio Shortcode有问题。我这样使用它: 但是在前面,在HTML代码中我得到了: document.createElement('audio');
我正在做一项关于降低噪音的滤波技术的实验。我在数据集中的样本是音频文件(.wav),因此,我有:原始录制的音频文件,我将它们与噪声混合,因此变得混合(噪声信号),我将这些噪声信号通过滤波算法传递,输出
一个人会使用哪种类型的神经网络架构将声音映射到其他声音?神经网络擅长学习从序列到其他序列,因此声音增强/生成似乎是它们的一种非常流行的应用(但不幸的是,事实并非如此-我只能找到一个(相当古老的)洋红色
这个让我抓狂: 在专用于此声音播放/录制应用程序的 Vista+ 计算机上,我需要我的应用程序确保(默认)麦克风电平被推到最大。我该怎么做? 我找到了 Core Audio lib ,找到了如何将 I
{ "manifest_version": 2, "name": "Kitten Radio Extension", "description": "Listen while browsi
class Main { WaveFileReader reader; short[] sample; Complex[] tmpComplexArray; publi
我正在使用电话录音软件(android),该软件可以记录2个人在电话中的通话。每个电话的输出是一个音频文件,其中包含来自 call 者和被 call 者的声音。 但是,大多数情况下,运行此软件的电话发
我正在构建一个需要语音激活命令的Web应用程序。我正在使用getUserMedia作为音频输入。 对于语音激活命令,该过程是用户将需要通过记录其语音来“校准”命令。例如,对于“停止”命令,用户将说出“
我正在开发一个Cordova应用程序,并将PouchDB用作数据库,当连接可用时,它将所有信息复制到CouchDB。 我成功存储了简单的文本和图像。 我一直在尝试存储视频和音频,但是没有运气。 我存储
我正在开发web application,我必须在其中使用.MP3的地方使用播放声音,但是会发生问题。 声音为play good in chrome, Firefox,但为safari its not
如何减少音频文件的位深?是否忽略了MSB或LSB?两者混合吗? (旁问:这叫什么?) 最佳答案 TL / DR:将音频曲线高度变量右移至较低位深度 可以将音频视为幅度(Y轴)随时间(X轴)的模拟曲线。
我是一名优秀的程序员,十分优秀!