【问题标题】:Audio play wrong file音频播放错误文件
【发布时间】:2017-05-05 09:37:50
【问题描述】:

我无法弄清楚我的音频标签发生了什么。

我对 ionic 有 2 个不同的视图,有 2 个不同的控制器,每个控制器都有自己的音频标签。

<audio controls="true">
  <source data-ng-src="{{getUrl()}}" type="audio/mpeg">
</audio>

它们工作得很好,但是当我直接在 viewAudio1 和 viewAudio2 之间切换时,即使在开发工具中,src 也不会与音频标签正在播放的文件匹配。 我触发这个函数来更新音频:

function loadAudio() {
  var audio = document.getElementsByTagName("audio")[0];
  document.getElementById('timeline').style.width = '0%';
  audio.setAttribute("src", $scope.getUrl());
  audio.pause();
  audio.load();
}

我已经尝试了很多方法来解决这个问题。

【问题讨论】:

  • Url 已正确更改,所以getUrl() 方法显示新值,刷新时?如果它在函数中有正确的值,但没有超出,你应该使用NgZone
  • getUrl 给出了很好的价值,我可以在音频标签的 src 属性中看到预期的 url。但它不播放 src 中的内容。我感觉当前视图的音频标签没有播放,而是最后一个视图的音频标签正在播放旧音频(可以理解吗?^^我不是母语人士抱歉)
  • 您是否在某处暂停旧音频?因为load之前的audio.pause()要暂停实际的音频,这是一个局部变量。所以首先为audio 创建一个全局变量,然后pause(或停止),然后设置新属性并加载。 (顺便说一句。我理解你,在这里也一样:D)
  • 感谢audio.pause() $ionicView.leave 修复问题 =)
  • 我很高兴它现在正在工作,我将其添加为答案。

标签: javascript html angular audio ionic-framework


【解决方案1】:

您的audio 变量是本地变量,因此请在函数之外将其创建为全局变量。此外,您现在暂停新音频。所以在加载新的之前,先暂停旧的。

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2011-11-26
    • 2020-02-11
    相关资源
    最近更新 更多