Electron无法在Raspberry Pi 3b +中使用<audio> Html5标签播放mp3音频文件

问题描述

问题:我在raspberry-pi上做了一个简单的电子项目,它可以播放音频文件,但是某种程度上无法播放。

我的努力

  1. 我已经尝试了很多其他音频文件。
  2. 从我的 raspberry-pi 3b + 设备中删除了node_modules,nodejs和npm,然后重新安装。
  3. 我还尝试了一些电子版本9.0.0、9.3.1、10.0.0。
  4. 我试图更新和升级树莓派设备。
  5. 我使用了一个简单的nodejs文件,并使用了一个播放声音的npm模块并播放了音频文件,是的,但是我在电子应用程序中尝试过的相同代码没有播放。
  6. 我还通过单击按钮尝试了下面的代码段。
  7. 我还使用AudioContext和AudioBuffer播放声音,但再次失败。

电子版本: ^ 9.0.0,^ 9.3.1

Node JS版本: 10.19.0

电子版本: 5.8.0

设备:Raspberry Pi 3B +

我的音频代码

var audio = new Audio('beep.mp3');
audio.volume = 1.0;
setInterval(()=>{
    audio.play();
},1000);

带有npm模块代码的简单节点JS文件

var player = new require('play-sound')(opts={});
setInterval(()=>{
    player.play('beep.mp3',function(err){
        console.log('Err :',err);
    });
},1000);

说明:上面的代码非常适合在简单的节点js中使用,但不能与电子一起使用。

电子index.js(主要过程)

const { app,BrowserWindow } = require('electron');
function createWindow () {
  const win = new BrowserWindow({
    width: 800,height: 600,webPreferences: {
      nodeIntegration: true
    }
  })
  win.loadFile('index.html');
  win.webContents.openDevTools();
}
app.whenReady().then(createWindow)
app.on('window-all-closed',() => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate',() => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow();
  }
});

电子index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Audio Play</title>
  </head>
  <body>
      <script>
             var audio = new Audio('beep.mp3');
             audio.volume = 1.0;
             setInterval(()=>{
               audio.play();
             },1000);
      </script>
  </body>
</html>

结论: 我认为电子没有播放音频文件的权限。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)