javascript - 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用。我怎样才能做到这一点?

标签 javascript html audio

我正在尝试为 mp3 文件使用介绍声音。播放完介绍后,原始轨道应开始播放。我的意思是原版 mp3 在介绍结束后立即播放。我有这个:

<script type="text/javascript" src="js/jquery.min.js"></script>
<audio id='top' onended="playOrg();" preload='none' src='http://www.sounddogs.com/previews/59/mp3/607322_SOUNDDOGS__th.mp3' type='audio/mpeg'> </audio>
<a href='#' class='btn' id='audioControl'> START </a>

这里是javascript部分:
<script type="text/javascript">

var yourAudio = document.getElementById('top');
var ctrl = document.getElementById('audioControl');

ctrl.onclick = function () {
    var pause = ctrl.innerHTML === 'STOP';
    $('.btn').html('START');
    $('audio').trigger('pause');
    ctrl.innerHTML = pause ? 'START' : 'STOP';
    var method = pause ? 'pause' : 'play';
    yourAudio [method]();
    return false; };

function playOrg(){                   
  yourAudio.setAttribute('onended','orgPlayed()');
  yourAudio.src='http://www.sounddogs.com/sound-effects/59/mp3/606540_SOUNDDOGS__sf.mp3';
  yourAudio.play();
  console.log('playOrg()');
}

function orgPlayed(){                   
  yourAudio.setAttribute('onended','playOrg()');
  yourAudio.src='http://www.sounddogs.com/previews/59/mp3/607322_SOUNDDOGS__th.mp3';
  yourAudio.pause();
  yourAudio.currentTime = 0;
  console.log('orgPlayed()');
}

</script>

当我按下开始播放文件并在最后调用 playOrg() 函数时,女巫应该更改一些属性并播放原始轨道。然后第二个文件应该播放,这次应该调用 orgPlayed() 函数并设置回属性,以便为其他播放做好准备。

所以我想为我在网站上的所有轨道使用介绍轨道。但我无法做到这一点。我感谢任何即将到来的帮助。

PS:实际上我的原始代码中的所有轨道都有一个循环,但我在这里总结了它。请不要问我为什么找不到更好的 mp3 测试文件 :)。

最佳答案

我发现了我的问题。我没有用 "currentTime=0"重新加载新轨道,而是尝试用 "load()"重新加载,现在它可以工作了。我想有时我们需要为这些问题 sleep :)。谢谢大家 ;)。

<audio id='top' onended="playOrg();" preload='none' src='top10/intro/1.mp3' type='audio/mpeg'> </audio>
<a href='#' class='btn' id='audioControl'>START</a> 

<script type="text/javascript">

var yourAudio = document.getElementById('top');
var ctrl = document.getElementById('audioControl');

ctrl.onclick = function () {
  if (ctrl.innerHTML=='START') {
    ctrl.innerHTML='STOP';
    yourAudio.play();
  }else if (ctrl.innerHTML=='STOP'){
    ctrl.innerHTML='START';
    yourAudio.pause();
  }    
}

function playOrg(){
  var myPlayer= document.getElementById('top');
  myPlayer.setAttribute('onended','orgPlayed()');
  myPlayer.src='top10/tarkan.mp3';
  myPlayer.pause();
  myPlayer.load();
  myPlayer.play();
}

function orgPlayed(){
  var myPlayer= document.getElementById('top');
  myPlayer.setAttribute('onended','playOrg()');
  myPlayer.src='top10/intro/1.mp3';
  myPlayer.pause();
  myPlayer.load();
  ctrl.innerHTML='START';
}

</script>

现在我意识到另一种方法来解决这个问题。我可以使用两个音频标签,一个是介绍源,另一个是原始源。然后在第一个结束后,我可以使用函数或直接 onended="document.getElementById('top2').play();"播放第二个

我的意思是这样的:
<audio id='top1' onended="play second(with a function or directly)" preload='none' src='intro' type='audio/mpeg'> </audio>
<audio id='top2' onended="make ready for another play (with a function or directly)" preload='none' src='original' type='audio/mpeg'> </audio>
<a href='#' class='btn' id='audioControl'>START</a> 

关于javascript - 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用。我怎样才能做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934370/

相关文章:

javascript - 单击 php 页面中的那个 div 时如何隐藏标题 "City"?

javascript - 有没有可靠的解决方案可以在 HTML 页面中自动播放背景音乐?

c# - 回传背景中的ASP.NET音乐

javascript - 在歌曲的开头和结尾淡入/淡出音频

JavaScript:提交和阻止

Addy Osmani 的 Javascript 装饰器模式

javascript - MeterGuage 4.2 Android 版本中的针问题?

javascript - 向表单字段添加隐藏值

javascript - ckeditor替换word如何添加更多?

html - 悬停可见性