根据当前编号逐个播放声音文件

Play sound files one by one according to current number

本文关键字:播放声音 文件 编号      更新时间:2023-09-26

我知道以前有人问过类似的问题,但没有一个回答我的问题。

我正在开发一个队列系统,客户从售票亭获取门票并等待柜台拨打他们的号码,例如 1023。我有.mp3格式的每个数字的声音文件。顺便说一句,该项目是使用 php 开发的。

两个要求是声音文件必须根据数字播放,例如如果当前数字是 1023,则需要播放 1.mp3,然后播放 0.mp3,依此类推。

另一个问题是这些文件需要在前面的结尾之后播放。我设法完成了第一部分,但声音一起播放。请帮助我,以下是我第一部分的一些代码。

声音管理器

public function getSound($in_value)
{
    $value = $in_value;
    switch ($value){
    case "0":
        $path = "sounds/0.mp3";
        echo "<audio autoplay>";
        echo "<source src=".$path." >";
        echo "</audio>";
        break;
    case "1":
        $path = "sounds/1.mp3";
        echo "<audio autoplay>";
        echo "<source src=".$path." >";
        echo "</audio>";
        break;
    case "2":
        $path = "sounds/2.mp3";
        echo "<audio autoplay>";
        echo "<source src=".$path." >";
        echo "</audio>";
        break;
//and some more

获取声音.php

$word = isset($_POST['no']) ? $_POST['no'] : '';
$array = str_split($word);
$one = $array[0];
$two = $array[1];
$three = $array[2];
$four = $array[3];
$um = SoundManager::getInstance();
$um->getSound($one);
$um->getSound($two);
$um->getSound($three);
$um->getSound($four);

你去吧。

var audioFiles = ["http://www.magnac.com/sounds/onlyroadlarge.mp3", "http://www.magnac.com/sounds/paradiserowlarge.mp3", "http://www.magnac.com/sounds/lordslarge.mp3"];
var audio = document.createElement("audio");
var audioIdx = 0;
audio.addEventListener('ended', function () {
  audioIdx++;
  if (audioIdx >= audioFiles.length) audioIdx = 0;
  this.src = audioFiles[audioIdx];
  this.play();
});
audio.src = audioFiles[audioIdx];
audio.play();
var i = 0;
var loop = setInterval(function() {
  var audio;
  switch (dispatch_units[i]) {
    case 'ST39':
      audio = new Audio('sounds/alert1.mp3');
      break;
    case 'ALS':
      audio = new Audio('sounds/monty_engine.mp3');
      break;
    case 'ST38':
      audio = new Audio('sounds/twotone.mp3');
      break;
  }
  audio.play();
  i++;
  if(i<=total_units) {
      clearInterval(loop);
  }
}, 5000);