ios下读取app里的mp3文件的问题(android下正常)
发布于 1年前 作者 zcgly 1659 次浏览 来自 问答

主要代码如下: var filename = cordova.file.applicationDirectory + "www/mp3/1.mp3"; var media = new Media(filename, function(){}, function(){}); media.play(); 在android下执行一切正常,能播放语音,在ios下不行,调试窗口显示: Unknown resource ‘file:///Users/zcgly/Library/Developer/CoreSimulator/Devices/B2047624-C5C1-4096-8751-14A44773CC5B/data/Containers/Bundle/Application/D48E55E7-877A-4741-83C0-6C081CAAADF8/%E7%99%BD%E8%89%B2%E5%B7%A8%E7%9F%B3.app/www/mp3/1.mp3’ 怎么破?

15 回复

上面是报错提示是用模拟器,用真机调试显示:

Unknown resource 'file:///var/mobile/Applications/10060BBE-8365-4076-98C1-8D1296710F37/%E7%99%BD%E8%89%B2%E5%B7%A8%E7%9F%B3.app/www/mp3/1.mp3

可能是中文的原因
发自 Ioniclub

已经尝试过去掉中文,还是一样报错

折腾了好几天,终于给试出来了。最终的方案是:播放一个mp3之前,先将文件从www/mp3目录拷贝到cordova.file.cacheDirectory,再进行播放,并且播放的文件路径不能用file://开头。不清楚为什么app目录下就不能播放,权限问题?不知道有没有更简单的解决方案。

@zcgly 我记得ios使用的是沙盒的,file这个应该就废了大半的,同事做的html5车辆检测系统上传图片用的base64编码
发自 Ioniclub

我试过放documents目录,用file://可以访问的。
发自 Ioniclub

@tigerzy 打包生成ipa的时候,怎么把mp3文件放到documents目录?

@zcgly 那还是权限问题
发自 Ioniclub

@zcgly 或者说还是沙盒问题,有些目录就是不让你访问
发自 Ioniclub

我开发的程序是用户使用软件时进行拍照、录像和录音的,这些附件我都保存到了documents目录。不是打包时放进去的。
发自 Ioniclub

你为啥不像引用js一样使用相对目录呢?
发自 hainuoVersion

不是静态的,需动态增加的。
发自 Ioniclub

@hainuo www目录下的js、css、html是正常访问的,但mp3就不行。本地的mp3用相对目录的方式引用也不能正确播放,引用外部网站的mp3文件是正常的,只是这样体验太差了,不光是耗流量问题,下载会有好几秒的延迟,非常不爽。

@tigerzy 我的mp3文件是之前录好的,app仅仅是播放它,不是app生成的。

回到顶部