如何存储音频文件的缓存值?

时间:2013-06-13 11:43:55

标签: php javascript html5

我在我的网站上使用音频(.swf)文件,它有两个选项:AUDIO ON和AUDIO OFF。我可以打开和关闭音频。问题是音频没有停止。它反复播放。任何人都可以帮助我吗?

另一个问题是,每当我重新加载任何页面时,音频文件都会从头开始播放。我希望它可以从音频先前停止的地方播放。

编辑:添加评论代码

<audio id="main_audio" <?php echo $autoplaynf;?> preload="auto" loop="loop"> 
   <embed hidden="true" autostart="true" loop="true" src="audio.mp3" /> 
</audio>

1 个答案:

答案 0 :(得分:1)

当您刷新页面时,您的音频将从头开始。如果你真的需要从你离开的地方开始,你必须将播放位置存储在cookie中。它也可以通过在服务器上存储位置来完成,但如果在缓存整个音频文件时连接丢失,它将无法工作。

  1. 使用音频标签中的timeupdate事件可以让您知道当前播放位置的变化。此播放位置应更改
  2. 使用Cookie存储播放位置。如果您使用不同的音频文件,您也可以使用cookie存储音频文件名,以便区分音频文件是否已更改。
  3. 当加载页面并且特定音频文件的cookie存在时,从cookie中的播放位置开始,否则从头开始。
  4. 如果您有此代码:

    <audio id="main_audio" <?php echo $autoplaynf;?> preload="auto" loop="loop"> 
       <embed hidden="true" autostart="true" loop="true" src="audio.mp3" /> 
    </audio>
    

    您可以添加javascript(不确定是否使用jQuery)来执行上述操作。请注意,只有在加载音频标签后才能执行此操作。请注意,这只是伪代码。尽量使用它作为完成任务的准则。

    // when page is loaded do the following actions
    var atag = document.getElementById("main_audio");
    atag.addEventListener("timeupdate", timeUpdateEvent, false);
    
    // check if coockie exists
    var timePos = readCookie();
    atag.currentPos = timePos;
    
    function timeUpdateEvent(event) {
        // get time position from audio tag
        // store cookie
    }
    
    function readCookie() {
        // read the cookie and return time value
        // of cookie does not exist return a timevalue
        // that will let the audio start from the beginning
    }
    

    对于存储,阅读和删除cookie,我在SO上引用this answer。可能还有更多的例子。