RTS游戏HTML5音频Chrome MP3和OGG Stutters and Stops
RTS Game HTML5 Audio in Chrome MP3 and OGG Stutters and Stops
我们正在用HTML5/JavaScript编写一个Canvas演示实时战略(RTS)游戏,一切都很正常。然而,在Chrome(最新版本)中,声音一直断断续续,最终就放弃了。该代码在最新的Firefox、IE9和Safari中运行良好(尽管在iOS4 iPhone/iPad上根本没有声音,但显然这是苹果的商业决定)。你可以在下面的链接上看到,一次听到几个以上的声音就会引起问题。
http://www.enterprisewarfare.com/Play.aspx
简化的声音播放代码如下,注意每个声音存在4次(AUDIO_CHANELS_PER_FILE)以模拟多个通道。调整此数字不会导致声音丢失,因此与到达阵列的末尾或再次播放相同的音频对象无关。我们已经尝试了OGG和MP3文件格式,在IE9(MP3)和Firefox(OGG)中一切正常。我们也试着把文件找回来,但没有成功。
this.PlaySound = function(sId)
{
var iSoundMapIndex;
var asoundChannels;
if(sId == null || sId.length == 0) return;
// Grab sound channels array
iSoundMapIndex = this.SoundMap[sId];
asoundChannels = this.Sounds[iSoundMapIndex];
if(asoundChannels == null)
{
this.World.AddMessage("Unable to find sound '"" + sId + "'".");
return;
}
// play the next in sequence
asoundChannels[this.SoundChannel[iSoundMapIndex]].volume = 1;
asoundChannels[this.SoundChannel[iSoundMapIndex]].play();
this.SoundChannel[iSoundMapIndex]++;
if(this.SoundChannel[iSoundMapIndex] == this.AUDIO_CHANNELS_PER_FILE) this.SoundChannel[iSoundMapIndex] = 0;
}
这似乎是铬和铬的问题。我建议查看bug报告和开发人员对它们的回答,或者等待它得到解决,同时忽略问题。
遗憾的是,在javascript方面没有比我更有经验的人提出任何关于变通方法的建议。我对这个问题投了赞成票,希望你能找到一些帮助。
原来这是Chrome中的一个错误,现在似乎已经修复了。声音加载和多个通道仍然存在一些问题,但声音的完全分解似乎已经解决。
相关文章:
- Jplayer不播放音乐文件,mp3,ogg和m4a
- Mac版Firefox上的Audio.js和.ogg
- 用于.ogg循环播放的javascript/jquery启动按钮
- RTS游戏HTML5音频Chrome MP3和OGG Stutters and Stops
- 在应用程序引擎上将wav转换为ogg(或在javascript?中)
- Chrome杀死响应时,试图流OGG文件
- 如何在IPAD safari中播放HTML中的ogg文件
- 录制为MP3或OGG flash
- node.js express 4.13.3 serveStatic不支持mp3或ogg文件
- 如何让Html5音频在点击时播放声音?(ogg适用于Firefox等浏览器,mp3适用于chrome等浏览器)
- Ogg文件没有在手机上多次播放
- 更改开关语句以同时包含mp4和ogg文件
- Safari canPlayType()将.ogg标记为"可能",HTML5 & lt; audio
- 如何在c#中转换字符串数据:audio/ogg;base64到文件wav