Cordova Media无法播放来自www的mp3

1bqhqjot  于 2022-11-15  发布在  其他
关注(0)|答案(4)|浏览(163)

我在StackOverflow上找到了很多解决这个问题的方法,但似乎没有什么能解决我的问题。我正在尝试使用org.apache.cordova.media@0.2.10在我的Cordova(3.5)应用程序中播放mp3文件

var sound = new Media('audio/el/hello.mp3');
sound.play()

但它就是无法播放,并且在LogCat中出现以下错误

MediaPlayer error (1, -2147483648)

我已经尝试在本地提供文件夹,以下内容指向同一文件

var sound = new Media('http://10.0.2.2:9999/www/audio/el/hello.mp3');
sound.play()

这表明不是因为文件有编码问题。
我无法使用最新版本的media插件,因为deviceready事件从未触发。

更新:我刚刚尝试将文件解压缩到永久存储并从那里播放它们,我得到了同样的错误。
更新:逐步执行AudioPlayer.java来源,www目录似乎不是资产的一部分,因为下列呼叫会掷回FileNotFoundException,其中f == "www/el/hello.mp3"

fd = this.handler.cordova.getActivity().getAssets().openFd(f);

然而,如果我把文件直接放在assets文件夹,那么它的工作。

b5lpy0ml

b5lpy0ml1#

媒体文件的路径不正确。您必须获取正确的路径:

var getPathMedia = function () {
var path = window.location.pathname;
var phoneGapPath = path.substring(0, path.lastIndexOf('/') + 1);
// Return path at www folder
return 'file://' + phoneGapPath;
};
var media = new Media(getPathMedia() + 'media/message.mp3');
media.play();
33qvvth1

33qvvth12#

在android上,您只需要有www文件夹的正确路径。
安卓系统:

var media = new Media("/android_asset/www/audio/el/hello.mp3",
    successFunction,
    errorFunction
);

如果您的应用也要在iOS上运行,您需要动态添加/android_asset/www/,因为iOS不需要它。
iOS系统:

var media = new Media("audio/el/hello.mp3",
    successFunction,
    errorFunction
);
tzcvj98z

tzcvj98z3#

我终于自己想明白了,但我想我应该分享一下。
我需要做的不是获取位置,而是获取我所在页面的当前url,然后构建一个指向我想播放的资产的url。

var path = window.location.href;
var phoneGapPath = path.substring(0, path.lastIndexOf('/') + 1);
var media = new Media(phoneGapPath + 'media/message.mp3');
media.play();

我希望这能有所帮助

nnt7mjpx

nnt7mjpx4#

我正在使用这个插件与离子电容器。我不得不使用一个不同的文件路径,当播放音频文件位于资产文件夹。此外,我不得不调用释放函数后,onSuccess-event激发。当我调用它后,file.play(),播放没有工作。

var audioPath = "/android_asset/public/assets/" + "audio.mp3"
const file: MediaObject = this.media.create(audioPath)
file.onSuccess.subscribe(() => {
    console.log('Action is successful')
    file.release()
});
file.play();

如果没有找到音频文件,请确保将其复制到Android项目资产文件夹中。如果没有,请运行“npx cap sync”和“npx cap copy”。

相关问题