首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPad HTML5音频曲目未重置

iPad HTML5音频曲目未重置
EN

Stack Overflow用户
提问于 2012-04-03 00:16:33
回答 3查看 1.8K关注 0票数 0

出于某种奇怪的原因,HTML5 Audio API不能让我在iOS 4和5中访问iPads和iPods的currentTime。每当播放音频元素时,我都需要调整currentTime,但它的行为就像当前时间不可访问一样。我到处寻找这个问题的答案,但我找不到答案。我下面的代码在所有现代浏览器中都运行得很好,所以我有点困惑。

我的HTML标记

代码语言:javascript
运行
复制
<p>
    <a class="audio" href="assets/audio/ambient-sounds-1.mp3" data-flash="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/niftyplayer.swf" data-mp3="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/ambient-sounds-1.mp3" data-ogg="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/ambient-sounds-1.ogg">
        Ambient Sounds
        <span class="audio-play">Play</span>
        <audio preload="">
            <source preload="" src="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/ambient-sounds-1.mp3" type="audio/mpeg">
            <source preload="" src="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/ambient-sounds-1.ogg" type="audio/ogg">
        </audio>
    </a>
</p>

<p>
    <a class="audio" href="assets/audio/city_street.mp3" data-flash="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/niftyplayer.swf" data-mp3="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/city_street.mp3" data-ogg="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/city_street.ogg">
        City Street Sounds
        <span class="audio-play">Play</span>
        <audio preload="">
            <source preload="" src="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/city_street.mp3" type="audio/mpeg">
            <source preload="" src="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/city_street.ogg" type="audio/ogg">
        </audio>
    </a>
</p>

<p>
    <a class="audio" href="#" data-flash="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/niftyplayer.swf" data-mp3="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/crash.mp3" data-ogg="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/crash.ogg">
        Loud Crash
        <span class="audio-play">Play</span>
        <audio preload="">
            <source preload="" src="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/crash.mp3" type="audio/mpeg">
            <source preload="" src="http://athens.sierrabravo.net/~ablue/plato/videoplayer/assets/audio/crash.ogg" type="audio/ogg">
        </audio>
    </a>
</p>

我的JavaScript

代码语言:javascript
运行
复制
AudioPlayer = {
    init: function () {
        var player = this;
        this.audio = $('.audio'); // Save and cache all audio elements so they can be targeted by mass stop()

        player.audio.each( function() {
            // Bind each audio element
            player.bind($(this));
        });
    },

    bind: function (object) {
        var player = this;

        object.bind('touchstart click', function() {

            // get the real DOM element, not the jQuery array
            var audio = $(this).find('audio').get(0);

            if(audio.paused) { // Check if its playing
                player.play(audio);
            }
            else {
                player.stop(audio);
            }

            return false;
        });
    },

    play: function(audio) {
        // Stop all existing audio elements and set them to 0
        this.audio.each( function() {
            var audioOther = $(this).find('audio').get(0);
            audioOther.pause();
        });

        // Play the audio element
        if(audio.currentTime) audio.currentTime = 0;
        audio.play();
    },

    stop: function(audio) {       
        if(audio.currentTime) audio.currentTime = 0;
        audio.play();
    }

};
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-04 03:07:15

为什么我的代码不能工作,有一个答案,iOS 4和5需要完全销毁整个音频元素(很糟糕的解决方案,但它是有效的)。如果你遇到我的问题,这里有一个快速的概要,告诉你如何解决它。

  1. 只在页面中插入1个元素(我在结束标签之前插入了我的元素)。单击
  2. 可以播放新的音频元素,完全销毁现有元素并使用要播放的新曲目从头开始重建。
  3. 在音频元素上调用.play,您就可以开始播放了。
票数 1
EN

Stack Overflow用户

发布于 2012-04-16 18:58:51

我也有同样的问题,然后谷歌然后找到这个页面和下面的页面

http://remysharp.com/2010/12/23/audio-sprites/

这家伙可能找到了更详细的答案。

票数 1
EN

Stack Overflow用户

发布于 2012-10-24 23:54:58

我遇到了这些类型的问题,我也开始使用这种绝望的方法来解决问题,包括重新创建音频组件,重新加载源,等等。

一两天前,我发现媒体内容的来源必须是“纯”的,才能在ipad上成功使用。

我想用“纯”的方式表达所有内容,这些内容不会被之前的代码“变形”,这些代码可能会在元数据到达ipad客户端之前对其进行更改或删除。

在我目前从事的项目中,我发现使用ipad我无法重放或遍历到mm:ss "documents“文件夹中的任何内容,但如果我获得该文件并移动到其他地方,它工作得很好,我可以在我的Ipad上重放它,转到分钟:秒我希望,等等。

在我的例子中,一个.htaccess强制我的apache服务器通过一个" download.php“发送"get”查询,这个“download.php”检查权限并做一些奇怪的事情,然后这个download.php将文件分派到客户端,但方式不是很好,也不是ipad喜欢的方式。

我去掉了.htaccess的绑定,ipad的音频处理效果又不错了。(无论如何,download.php并没有太好的用处……)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9979932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档