打包后无法在电子应用程序中播放声音
Not able to play sound in electron app after packaging
我创建了一个包含音效的电子应用程序。我正在使用包 sound-play
在我的 main.js
文件中播放音效(从 中学习)。当我 运行 到 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
进行打包
再次指出,打包后只有声音不播放。其他方面完全没问题。
我可能遗漏了一些非常基本的东西。你能帮忙的话,我会很高兴。谢谢。
编辑:类似于我在下面列出的 electron-builder 解决方案,我搜索了 electron-packager 文档并找到了一个类似的额外文件选项,而不是“文件”,您将使用“extraResource”,检查一下in the docs.
原回答:
如果您在打包之前使用 webpack 来捆绑您的应用程序,请查看您是否可以将其包含在您的 Javascript 文件中,并在您的 webpack 中解释一个文件加载器 here(blog site), here (Stack overflow), and of course 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
]
}
然后您可以在您的应用程序中使用相对路径,但如果您在开发构建中没有类似的路径,事情可能会变得不稳定。您可以找到有关 electron-builder 封装选项的更多信息 on their website。 IMO 捆绑器(webpack)解决方案将是最好的。希望这对您有所帮助,祝您好运!
我创建了一个包含音效的电子应用程序。我正在使用包 sound-play
在我的 main.js
文件中播放音效(从 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
进行打包
再次指出,打包后只有声音不播放。其他方面完全没问题。
我可能遗漏了一些非常基本的东西。你能帮忙的话,我会很高兴。谢谢。
编辑:类似于我在下面列出的 electron-builder 解决方案,我搜索了 electron-packager 文档并找到了一个类似的额外文件选项,而不是“文件”,您将使用“extraResource”,检查一下in the docs.
原回答:
如果您在打包之前使用 webpack 来捆绑您的应用程序,请查看您是否可以将其包含在您的 Javascript 文件中,并在您的 webpack 中解释一个文件加载器 here(blog site), here (Stack overflow), and of course 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
]
}
然后您可以在您的应用程序中使用相对路径,但如果您在开发构建中没有类似的路径,事情可能会变得不稳定。您可以找到有关 electron-builder 封装选项的更多信息 on their website。 IMO 捆绑器(webpack)解决方案将是最好的。希望这对您有所帮助,祝您好运!