Phonegap NativeAudio 无法在 iOS 上播放
Posted
技术标签:
【中文标题】Phonegap NativeAudio 无法在 iOS 上播放【英文标题】:Phonegap NativeAudio will not play on iOS 【发布时间】:2017-01-10 13:10:51 【问题描述】:我正在尝试将此插件与我的 PhoneGap Build 应用程序一起使用: https://www.npmjs.com/package/cordova-plugin-nativeaudio
我在我的 config.xml
中调用它<gap:plugin name="cordova-plugin-nativeaudio" source="npm" />
然后在我的 onDeviceReady 中加载声音,如下所示:
if( window.plugins && window.plugins.NativeAudio )
window.plugins.NativeAudio.preloadSimple( 'slide', 'sounds/slide.mp3', function(msg)
, function(msg)
alert( 'error: ' + msg );
);
else
alert("load failed");
然后在我每次移动 a 时发生的函数中发生
window.plugins.NativeAudio.play( 'slide' );
然后我打包并构建应用程序并通过 TestFlight 安装在我的手机上
声音存储在我的www/sounds/
文件夹中,如果我更改加载代码中的路径/文件名,我的手机会提示“加载失败”,但如果路径正确,它会保持静音,表示成功。然而它在调用时却没有声音。
我尝试通过 Media 插件播放相同的声音,并且它工作正常,所以我知道 .mp3 本身没有任何问题,但它被多次调用,以便 Media 处理冻结应用程序。
编辑:如果此插件损坏或过时,将接受合适的替代方案。
【问题讨论】:
您的音频文件的长度和大小是多少? 文件大小为 7kb,在文件资源管理器中显示为 0:00(也许这也是一个问题),因为它太短了,所以我怀疑它是否太复杂。 正如我在答案中所建议的,尝试使用 preloadComplex 。如果它不起作用,请更改您的音频文件并重试。 【参考方案1】:我已经测试了这个插件,它工作得很好。
你可以试试他们的sample project
起初我尝试使用您的代码和从互联网下载的声音,但在尝试播放时出现此错误:
WARNING: [0x1f197000] 998: Failure to setup sound, err = -50
(预加载成功回调,调用play时在Xcode调试区显示)
问题是用preloadSimple
播放的声音太复杂了,使用preloadComplex
为我解决了这个问题,所以也许你的声音太复杂而不能用preloadSimple
播放
注意:当使用preloadComplex
时,你必须在成功回调之前传递三个参数,音量,声音,延迟,应该是这样的:
window.plugins.NativeAudio.preloadComplex( 'slide', 'sounds/slide.mp3', 1, 1, 0,
function(msg)
window.plugins.NativeAudio.play( 'slide' );
, function(msg)
alert( 'error: ' + msg );
);
【讨论】:
好吧,这对我来说意义不大,因为我的声音文件只有 7kb 不到一秒的声音,但将其从简单更改为复杂似乎可行。非常感谢! 是的,听起来很奇怪。示例项目中的音频文件为 19-34KB 的简单声音和 1.4MB 的复杂背景声音。也许这与文件的比特率或频率有关。您可以使用MediaInfo等工具检查您的文件mediaarea.net/es/MediaInfo 是的,我会尝试不同的声音和其他东西来试图弄清楚,看看我是否可以缩小问题的范围。这只是延迟了我的游戏的发布,所以我只是需要一些工作。再次感谢您。【参考方案2】:可能问题出在音频文件的大小/类型上,因此请使用 preloadComplex insted of preloadSimple
preloadComplex: function ( id, assetPath, volume, voices, delay, successCallback, errorCallback)
【讨论】:
以上是关于Phonegap NativeAudio 无法在 iOS 上播放的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android 版 PhoneGap:无法在数据库中创建表