SoundJS无法播放无扩展MP3的声音

问题描述

我正准备把这个该死的图书馆扔进垃圾箱。这样做时,我对“ HowlerJS”没有任何问题,似乎SoundJS只是拒绝加载我的mp3文件,除非它们具有扩展名。

我的代码非常简单,将充满文件ID的数组传递给注册声音功能

   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的支持下,我找不到任何支持此扩展的库。所以我的逻辑有点像这样。充满了上述Sound 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扩展名,我仍然可以获得所需的逻辑。