【问题标题】:How to seek with AudioContext如何使用 AudioContext 进行搜索
【发布时间】:2016-03-28 15:12:25
【问题描述】:

我想创建在点击时播放下一首/上一首歌曲的按钮,但他们应该在长按时寻找音乐。

我确实设法改变了歌曲,但我找不到搜索方法。还有如何让它从头开始播放?

有没有办法确定从歌曲开始到现在已经过去了多少时间?我发现缓冲区有持续时间,但没有实际播放时间。

在初始化时:

context = new (window.AudioContext || window.webkitAudioContext)()

播放歌曲:

var buffer = song.buffer
var source = context.createBufferSource()
source.buffer = song.buffer
source.connect(analysers.main)
source.start(0, offset || 0)

【问题讨论】:

    标签: javascript html5-audio


    【解决方案1】:

    猜猜,你应该使用AudioBufferNode(它有搜索能力)-https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start

    另外,这个包装器可能有用 - https://github.com/eipark/buffaudio

    【讨论】:

    • 能否请您也回答问题的第二部分?关于我们的歌曲有多远?以百分比或其他形式...
    • 猜猜,AudiBufferNodeduration 属性。你可以尝试使用它。另外,这可能有点用stackoverflow.com/questions/11203773/…
    • 这是不正确的,AudioBufferSourceNode 不能搜索(你不能多次调用start)。
    • 这是不正确的。无法寻找或重新启动 AudioBufferNode。它所能做的就是暂停/恢复和循环。您需要创建一个新的缓冲区节点来寻找。
    【解决方案2】:

    使用taphold API 来实现长按事件。

    $(function(){
      $( "your element" ).bind( "taphold", tapholdHandler );
    
      function tapholdHandler( event ){
       /*write your code here for seek forward */
    
      }
    });
    

    使用 JQuery 计时器

    var mousedowntime;
        var presstime;
        $("button[id$='" + buttonID + "']").mousedown(function() {
            var d = new Date();
            mousedowntime = d.getTime();
        });
        $("button[id$='" + buttonID + "']").mouseup(function() {
            var d = new Date();
            presstime = d.getTime() - mousedowntime;
            if (presstime > 999/*You can decide the time*/) {
                //Do_Action_Long_Press_Event();
            }
            else {
                //Do_Action_Click_Event();
            }
        });
    

    从头开始玩

    function beginAudio(){
                audio.trigger('pause');
                audio.prop("currentTime",audio.prop("currentTime")-audio.prop("currentTime"));
                audio.trigger('play');
            }
    

    或将当前时间设置为零,然后播放。

    向前和向后使用这个

    audio.prop("currentTime",audio.prop("currentTime")-5);// 5 secs backward
    audio.prop("currentTime",audio.prop("currentTime")+5);// 5 secs forward
    

    【讨论】:

    • 我没有音频变量,我有上下文变量(typeof AudioContext)。而且没有 jQuery。并且保持寻找不是寻找的问题,事实上,audiocontext 自创建以来就开始计算 currentTime 并且不会在声音出现时停止
    • 您能否展示您的音频上下文以及play next/prev song on click song 的原始代码..
    猜你喜欢
    • 2016-05-31
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2020-12-15
    • 2015-03-05
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多