electron Package 后无法在电子应用程序中播放声音

ct2axkht  于 2023-09-28  发布在  Electron
关注(0)|答案(2)|浏览(306)

我已经创建了一个电子应用程序组成的声音效果。我正在使用软件包sound-play来播放我的main.js文件中的声音效果(从here学习)。当我通过npm start运行它时,它就像它应该的那样工作。但是在使用electron-packager打包我的应用程序后,当我从“release-builds”文件夹中运行exe文件时,只有声音效果没有播放。应用程序的所有其他方面都运行良好。
Shutter.mp3是项目目录中的声音文件
Main.js:

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

Package.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命令进行打包。

  • 只是再次指出,只有声音是 Package 后不播放.其他方面都很好 *

我可能错过了一些非常基本的东西。任何帮助将是美好的。谢谢.

yruzcnhs

yruzcnhs1#

编辑:类似于我下面列出的电子构建器解决方案,我搜索了电子打包器文档,发现了一个类似的额外文件选项,而不是“文件”,你将使用“extraResource”,请在文档中查看。
原文回答:
如果你在打包之前使用webpack捆绑你的应用,看看你是否可以将它包含在你的JavaScript文件中,并在你的webpack中有一个文件加载器解释here(blog site)here (Stack overflow),当然还有here (webpack official)。请务必安装File-loader!
我更喜欢使用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
   ]
}

然后,您可以在应用程序中使用相对路径,但如果在开发构建中没有类似的路径,则可能会出现问题。你可以在他们的网站上找到更多关于电子制造商 Package 选项的信息。IMO的bundler(webpack)解决方案将是最好的。希望这有帮助,祝你好运!

uqxowvwt

uqxowvwt2#

您可以使用base64数据代替声音文件路径。同样在HTML5 Audio的渲染过程中:

import soundBase64Data from '../path/to/sound.mp3'

new Audio(soundBase64Data).play() // this line for renderer process only

相关问题