iPad HTML5音频曲目未重置

iPad HTML5音频曲目未重置,ipad,ios5,ios4,ipod,html5-audio,Ipad,Ios5,Ios4,Ipod,Html5 Audio,出于某种奇怪的原因,HTML5音频API不允许我访问iOS 4和iOS 5中用于iPad和iPod的currentTime。每当播放音频元素时,我都需要调整currentTime,但它的行为就像当前时间不可访问一样。我到处都在寻找答案,但我想不出来。我下面的代码在所有现代浏览器中都能正常工作,所以我有点不知所措 我的HTML标记 <p> <a class="audio" href="assets/audio/ambient-sounds-1.mp3" data-flas

出于某种奇怪的原因,HTML5音频API不允许我访问iOS 4和iOS 5中用于iPad和iPod的currentTime。每当播放音频元素时,我都需要调整currentTime,但它的行为就像当前时间不可访问一样。我到处都在寻找答案,但我想不出来。我下面的代码在所有现代浏览器中都能正常工作,所以我有点不知所措

我的HTML标记

<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>

关于为什么我的代码不起作用,iOS 4和iOS 5需要完全销毁整个音频元素(糟糕的解决方案,但它可以工作)。如果你遇到了我的问题,这里有一个关于如何解决这个问题的简要说明

  • 只在页面中插入1个元素(我在结束标记之前插入了我的元素)
  • 单击以播放新的音频元素时,请完全销毁现有的音频元素,并使用要播放的新曲目从头开始重建
  • 打电话。播放音频元素,你就可以开始了

  • 关于为什么我的代码不起作用,iOS 4和iOS 5需要完全销毁整个音频元素(糟糕的解决方案,但它可以工作)。如果你遇到了我的问题,这里有一个关于如何解决这个问题的简要说明

  • 只在页面中插入1个元素(我在结束标记之前插入了我的元素)
  • 单击以播放新的音频元素时,请完全销毁现有的音频元素,并使用要播放的新曲目从头开始重建
  • 打电话。播放音频元素,你就可以开始了

  • 我也有同样的问题,谷歌发现了这个页面和下面的页面


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

    我也有同样的问题,用谷歌搜索找到了这个页面和下面的页面


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

    我遇到了这些类型的问题,我也开始用那种不顾一切的方法来解决这个问题,包括重新创建音频组件、重新加载源等等

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

    我想用“纯”来表达所有未被先前代码“转化”的内容,这些代码可以在元数据到达ipad客户端之前更改或删除元数据

    在我目前正在进行的项目中,我发现使用Ipad,我无法重放或遍历“documents”文件夹中的任何内容,但如果我得到该文件并移动到其他地方,它工作得很好,我可以在Ipad上重放它,进入我希望的第二分钟,等等

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


    我删除了.htaccess绑定,ipad再次获得了良好的音频处理。(那download.php无论如何没有太多用处…

    我遇到了这些类型的问题,我也开始用那种不顾一切的方法来解决这个问题,包括重新创建音频组件、重新加载源代码等等

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

    我想用“纯”来表达所有未被先前代码“转化”的内容,这些代码可以在元数据到达ipad客户端之前更改或删除元数据

    在我目前正在进行的项目中,我发现使用Ipad,我无法重放或遍历“documents”文件夹中的任何内容,但如果我得到该文件并移动到其他地方,它工作得很好,我可以在Ipad上重放它,进入我希望的第二分钟,等等

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


    我删除了.htaccess绑定,ipad再次获得了良好的音频处理。(该download.php无论如何没有太多用处…

    它返回了什么错误?实际上,它没有因为if(audio.currentTime)而触发错误。但是如果我试图强制设置currentTime,它会显示“试图使用一个不可用或不再可用的对象。”O并且这个错误会触发所有未单击的元素,不是单击的元素,因为它似乎已成功加载到内存中。看起来iOS的答案可能只是使用一个音频元素,并在需要播放新文件时替换源。现在进行测试,在我完成实验后会发布更多信息,除非其他人在此之前提出更好的解决方案。它会返回什么错误?实际上它不会因为if(audio.currentTime)而触发错误。但是如果我试图强制设置currentTime,它会显示“试图使用一个不可用或不再可用的对象。”O并且这个错误会触发所有未单击的元素,不是单击的元素,因为它似乎已成功加载到内存中。看起来iOS的答案可能只是使用一个音频元素,并在需要播放新文件时替换源。现在测试,当我完成实验后会发布更多信息,除非之前有人提出更好的解决方案。我花了很多时间试图让他的解决方案发挥作用。出于某种原因,iOS 4很遗憾地拒绝合作。我花了很多时间试图让他的解决方案发挥作用。出于某种原因,iOS4很遗憾地拒绝合作。问题不在于数据传输,而在于它的iPad内存缓冲。谢谢分享,以前从未听说过这个问题。问题不在于数据传输,而在于iPad的内存缓冲。谢谢分享,以前没听说过这个问题。
    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();
        }
    
    };