【问题标题】:SoundJS wont play sound from an extension-less MP3SoundJS 不会从无扩展的 MP3 播放声音
【发布时间】:2020-10-26 08:10:56
【问题描述】:

我正准备把这个该死的图书馆扔进垃圾箱。执行此操作时,我对“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 一起工作,为什么你不简单地加上它的后缀?你试过用:createjs.Sound.alternateExtensions = ["mp3"];->createjs.com/tutorials/SoundJS%20and%20PreloadJS
  • 在我重新编程之前,JS脚本是使用一个id来查询服务器,然后请求所说的mp3。

标签: javascript createjs soundjs


【解决方案1】:

我通过更改我的逻辑的工作方式并在加载时使用元数据 + 原始文件位置抓取一个对象来修复它。

我找不到任何地方至少使用 .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 扩展名的情况下获得所需的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2011-01-07
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多