gpt4 book ai didi

javascript - Firefox OS 中的 Audio.src 和路径

转载 作者:行者123 更新时间:2023-11-28 01:38:01 25 4
gpt4 key购买 nike

我正在开发一款适用于 Firefox OS < 1.3 的应用程序,用于将您的歌曲设置为铃声。 repo https://github.com/Mte90/RingTone-Picker-for-FirefoxOS有问题的文件是 script.js

在行 https://github.com/Mte90/RingTone-Picker-for-FirefoxOS/blob/master/script.js#L73它的路径是正确的,如“/emmc/audio.ogg”,但音频播放器返回核心错误 4。这个问题是路径错误但路径是正确的!

如果我在第 74 行添加 console.log(player.src) 返回类似“app://strangenumberhash/emmc/audio.ogg”的路径。我完全不知道如何解决这个问题。

最佳答案

应用协议(protocol)不允许用于引用打包应用内的音频/视频文件。我相信这是一个安全限制,旨在防止跨应用程序内容读取。您需要在 HTML 中使用音频标记或使用 XMLHttpRequest。类似以下内容(视频示例):

var xhr = new XMLHttpRequest();
xhr.open('GET', 'myvid.ogg');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
videoblob = new Blob([xhr.response], { type: 'video/ogg' });
var openingVideo = new MozActivity({
name: "open",
data: {
type: [
"video/webm",
"video/mp4",
"video/3gpp",
"video/mkv",
"video/ogg"
],
blob: videoblob
}
});

};
xhr.onerror = function() {
console.log('Error loading test video', xhr.error.name);
};

如果文件位于 SDCard 上,您有几个选项:

您可以只使用选择事件并让用户找到它:

var act = new MozActivity({
name: 'pick',
data: {
type: 'audio/ogg'
}
});

或者您可以在 list 中设置 SD 卡的读写权限,然后手动读取并使用音频标签或打开的 Activity 进行播放(很少有错误检查)。

var sdcard = navigator.getDeviceStorage('sdcard');
//assumes sample.ogg is located at the top of the sdcard
var request = sdcard.get("sample.ogg");

request.onsuccess = function () {
var file = this.result;
console.log("Get the file: " + file.name);
var mysrc = URL.createObjectURL(file);
var audio1 = new Audio();
audio1.onerror = function(e) {
console.log(" error playing file ");
}
audio1.src = mysrc;
audio1.type = "video/ogg";
console.log( "audio src " + audio1.src);
audio1.play();
URL.revokeObjectURL(url);
}
request.onerror = function () {
console.warn("Unable to get the file: ");
}

关于javascript - Firefox OS 中的 Audio.src 和路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265039/

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