【问题标题】:Playing html5 audio in android browser在 android 浏览器中播放 html5 音频
【发布时间】:2011-03-05 09:22:20
【问题描述】:

我有一个使用 html5 <audio> 标签在浏览器中播放音频的 javascript。它在 iPhone 浏览器中运行良好,但在 Android 中却不行。 (使用 android 2.1 的 htc 欲望进行测试。)有人知道为什么吗?

我的代码:

   function playHTML5(sound, soundcv){
                // sound = url to m4a audio file
                // soundcv = div in which the audioplayer should go

  var audio = document.createElement('audio');
  audio.src = sound;
  audio.controls = "controls";
  if (currentSound != null){
   soundcv.replaceChild(audio,currentSound);
  } else {
   soundcv.appendChild(audio);
  }
  currentSound = audio;
 }

顺便说一句,我也在尝试放大 iphone 中显示的音频按钮(默认按钮很小),到目前为止还没有运气 - 如有任何想法,我将不胜感激!

【问题讨论】:

  • Pekka:感谢您修复格式!没注意到我搞砸了。

标签: javascript iphone android audio html


【解决方案1】:

FroYo 中最新的 Android 浏览器尚不支持 HTML5 音频元素。这不是错误,而是尚未实现的功能。它可能会出现在姜饼中。

更新:姜饼浏览器有音频元素。

【讨论】:

  • html5test.com 在我的 FroYo 浏览器中显示不支持 PCM、MP3、AAC、Ogg Vorbis 或 WebM 音频。
  • 感谢您的回答。但是,如果这不是错误,那么文档显然不清楚,委婉地说 - 它应该明确说明不支持音频。
  • 文档不清楚怎么办?目前没有浏览器支持 html5 100%。您不希望他们记录下 w3c 管道中他们不支持的所有内容吗?音频标签是最新浏览器刚刚开始采用的一项新功能。仅仅因为 iPhone 支持它并不会使它成为 Android 上的错误。
  • 我本来打算从文档中给你一个报价 - 但后来我记得我根本没有真正找到任何文档。所以我想准确的措辞应该是文档要么不存在,要么很难找到。谈到 android 浏览器的文档,那就是 - 不是 android 应用程序平台。但是,如果您知道在哪里可以找到该文档,请将链接传递给我,我将不胜感激!
  • 嗯,可以。至少这可以回答您提出的问题 - “文档如何不清楚?”就我个人而言,我认为网络应用程序应该是未来——而不是原生应用程序——我认为谷歌在这个观点上看起来很有利......如果是这样,他们应该为网络开发人员提供与原生应用程序开发人员相同级别的文档,在我的查看。
【解决方案2】:

这里是 Google Android 错误的链接,该错误是由于 Android 中缺乏对 AUDIO 标签的支持而提出的。 请投票。

http://code.google.com/p/android/issues/detail?id=10546

顺便说一句,有一种解决方法,可以让您在 Android 1.6 .. 2.2 中播放原生 MP3,就像这样:

<video src="test.mp3" onclick="this.play();"></video>

【讨论】:

  • 哇。真的吗,谷歌?如果你把它放在一个视频标签中,它就可以工作。他们把这件事搞砸了多少?
  • 我在三星 Mini 上运行 Android 2.3.6,但我仍然无法使用视频标签或音频标签播放我的小 mp3。我在 chrome 中对其进行了测试,并且可以正常工作。你能确认视频标签的解决方法吗?您可以链接到有关它的任何其他阅读材料吗?谢谢:)
【解决方案3】:

我也想不通。但是,Apple 创建的这个测试页面在 Android 上播放 HTML5 音频:http://www.apple.com/html5/showcase/audio

苹果是怎么做到的?

【讨论】:

  • 生成源:&lt;audio id="" src="http://a1.phobos.apple.com/us/r1000/011/Music/12/14/7f/mzm.ubzkrulq.aac.p.m4a" class="audio" width="1" height="1" autoplay="autoplay" bgcolor="white" audio="true"&gt;&lt;/audio&gt;
【解决方案4】:

你检查过你的audio format 吗?

【讨论】:

  • 是的,我在一个在安卓上运行良好的原生应用程序中使用了完全相同的媒体文件。 3gp 音频,核心媒体文件的一部分。所以除非这些由于某种原因不能在 html5 标签中播放,即使它们可以在本机应用程序中,那应该不是问题?
  • 嗯,看来你是对的:android 一般支持的格式与音频标签中支持的格式之间可能存在差异:w3schools.com/html5/html5_audio.asp
  • @anderslov 你试过不同的浏览器吗?我不太了解android,所以我不确定你有什么选择。
  • 我最终设置了一个测试页面来了解格式,并得出结论认为浏览器中对音频元素的支持完全被破坏了。详情在这里:stackoverflow.com/questions/3100706/…
【解决方案5】:

我的 Kindle Fire 遇到了问题,但发现一件小事似乎可以解决问题。

<audio>
  <source src="someclip.mp3" type="audio/mpeg" />
</audio>

我错误地使用了“音频/mp3”。我正在使用没有原生控件的播放器(使用 HTML5/JS)。

【讨论】:

    【解决方案6】:

    我使用 trigger.io 部署到运行 Android Jellybean 的 Nexus 7 的项目上进行了这项工作,但目前只有在我使用绝对 URL 时才会播放音频。我不确定在我的项目中使用音频的相对路径是什么,但希望这会对某人有所帮助......

    (function() {
    
        var currentSound;
        // I have a div called "page"
        var soundcv = document.body;
    
        // This only works for one sound for simplicity's sake
        function playSound(sound){
    
            if (currentSound == null){
                var audio = document.createElement('audio');
                audio.src = sound;
                soundcv.appendChild(audio);
                currentSound = audio;
            }
    
            currentSound.play();
        }
    
        // This isn't a real audio file URL - replace it with one of your own
        playSound('http://example.com/example.mp3');
    })();
    

    【讨论】:

    【解决方案7】:

    我整天都在修修补补,终于让我的旧三星 Droid 浏览器与雅虎网络播放器一起工作:

    <a href="somefolder/file.mp3"></a>
    <script type="text/javascript" src="http://webplayer.yahooapis.com/player.js"></script>
    

    效果很好,在文本旁边放了一个小箭头图标,您可以点击它来播放您的 mp3。谢谢雅虎。

    我忘了提到在本地测试时音频不会显示在我的 Chrome 或 Firefox 浏览器中。不过在我的手机浏览器上效果很好。

    【讨论】:

      【解决方案8】:

      我知道这是一个 hack,但它无处不在(据我所知)!

      您可以使用视频元素并将您的 mp3 转换为 mp4 和 ogg 文件(ogg 用于 android 上的 firefox)。您还可以设置它的样式,使其不显示任何不必要的默认播放器。见以下代码:

      <video id="audioTest" width="1" height="1" style="top: -100px; left: -100px; position: absolute;" preload >
          <source src="audio.mp4" type="video/mp4">
          <source src="audio.ogv" type="video/ogg">
      </video>
      

      然后你可以在你的 js 代码中使用:

      var audioTest = document.getElementById("audioTest");
      audioTest.addEventListener("ended",onSoundComplete,false);
      audioTest.play();
      

      【讨论】:

      • 这种情况下预加载有效吗?我的测试似乎表明,当我在视频标签内使用 mp3 时,它没有正确预加载 mp3
      【解决方案9】:

      在正文中

      <audio id="myAudio" src="audio/bomba.mp3"></audio>
      

      活动期间在javascript中

      document.getElementById('myAudio').play();
                      
      

      【讨论】:

        猜你喜欢
        • 2015-03-25
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-21
        • 2012-11-22
        • 2012-02-02
        • 1970-01-01
        相关资源
        最近更新 更多