首页 > 解决方案 > 打包后无法在电子应用中播放声音

问题描述

我创建了一个包含声音效果的电子应用程序。我正在使用该包sound-play播放我的文件中的音效main.js(从这里学习)。当我运行它时,它可以正常工作npm start。但是使用 打包我的应用程序后electron-packager,当我从“release-builds”文件夹运行 exe 文件时,只有音效没有播放。该应用程序的所有其他方面都运行良好。

Shutter.mp3 是项目目录中的声音文件

主.js:

const sound = require("sound-play");
const filePath = path.join(__dirname, "shutter.mp3");
sound.play(filePath)  //For playing the sound inside a function

包.json:

 "scripts": {
    "start": "electron .",
    "package-mac": "electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds",
    "package-win": "electron-packager . Namegoeshere --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Namegoeshere\"",
    "package-linux": "electron-packager . electron-tutorial-app --overwrite --asar=true --platform=linux --arch=x64 --icon=assets/icons/png/1024x1024.png --prune=true --out=release-builds"
  },

使用命令npm package-win进行打包。

只是再次指出它只是包装后声音不播放。其他方面完全没问题。

我可能遗漏了一些非常基本的东西。你能帮忙的话,我会很高兴。谢谢。

标签: javascriptnode.jsaudioelectron

解决方案


编辑:与我在下面列出的电子生成器解决方案类似,我搜索了电子打包器文档,发现额外文件的类似选项,而不是“文件”,您将使用“extraResource”,请在文档中查看。

原答案:

如果您在打包之前使用 webpack 捆绑您的应用程序,请查看是否可以将其包含在您的 Javascript 文件中,并在您的 webpack 中有一个文件加载器在此处(博客站点)此处(堆栈溢出),当然还有此处(webpack 官方) . 一定要安装文件加载器!

我更喜欢使用Electron builder来打包应用程序,如果要切换,可以将文件包含到打包的应用程序中,如下所示:

列出要包含在打包程序中的 JSON 设置 (package.json) 中的音频文件,例如:

"build": {
    // ...Other settings go here,
    "files": [
      "path/to/sound.mp3" //<-- This will include the file separately 
      // into your app's build
   ]
}

然后,您可以在您的应用程序中使用相对路径,但如果您在开发构建中没有类似的路径,事情可能会变得不稳定。您可以在他们的网站上找到有关电子制造商包装选项的更多信息。IMO 捆绑器(webpack)解决方案将是最好的。希望这会有所帮助,祝你好运!


推荐阅读