javascript - SoundJS 不会从无扩展的 MP3 播放声音
问题描述
我正准备把这个该死的图书馆扔进垃圾箱。执行此操作时,我对“HowlerJS”没有任何问题,而且似乎 SoundJS 只是拒绝加载我的 mp3 文件,除非它们具有扩展名。
我的代码非常简单,将一个包含文件 ID 的数组传递给 register sound 函数。
createjs.Sound.on("fileload", Audiocover._, this);
createjs.Sound.alternateExtensions = ["mp3"];
for(let i = 0; i < MusicPixels.length; i++)
{
debugLog("registered sound: " + "sound-" + i + " (" + resources.sounds[i] + ")" );
var sound = {
path: "/",
manifest:[
{id: "sound-" + i, src: {mp3: "file?id=" + resources.sounds[i]}}
]
}
createjs.Sound.registerSounds( sound );
}
而已。如果我包含扩展名 .mp3,则会播放声音。使用当前代码,它不会显示任何错误。它完全拒绝在 Chrome 上播放声音。无论如何围绕这个?还是我必须从字面上使用原始位置。
解决方案
我通过更改我的逻辑的工作方式并在加载时使用元数据 + 原始文件位置抓取一个对象来修复它。
我找不到任何地方至少使用 .mp3 的这个库支持扩展少加载。所以我的逻辑有点像这样。充满所述声音 ID 的查询 API 服务器和 API 服务器的数据对象返回一个带有轨道元数据(如 soundcloud)+ 直接声音 URL 的对象。
//returns with an object with the latest .mp3 locations of each of the file ids
function getResourceLocations(resources, callback)
{
$.post( getApiLink("resources"), {
apikey: Options.apikey,
resources
}, function (data) {
if(data.errors.length!==0)
throw data.errors[0];
callback(data);
});
}
然后我只需通过该方法加载它,我仍然可以获得所需的逻辑,而无需 .mp3 扩展名。
推荐阅读
- android - 无法解析 android.support.design。迁移到 AndroidX 后
- javascript - Instascan QR 码扫描仪“扫描”侦听器不会更新 Angular 5 组件视图
- c# - 使用 XmlDocument 向元素添加命名空间的正确方法
- docker - 将网络分配给一项服务是否会将其与 docker-compose 中的其他服务隔离开来?
- ruby-on-rails - 使用 'bundle exec rake db:create' 时,rake 总是中止如何解决?
- android - 启动器图标(仅限旧版)显示白色背景图标 android studio 3.3
- python - RecursionError:比较超过最大递归深度
- pandas - 什么是 pyarrow 表?它会替代熊猫数据框吗?
- amazon-s3 - 在 Amazon Athena 中创建内部表
- javascript - Parse.User.logIn 卡住了