loading
0.06D
V2EX  ›  问与答

如何用js控制audio元素连续播放mp3文件

  •  
  •   loading · Oct 12, 2013 via iPhone · 8233 views
    This topic created in 4611 days ago, the information mentioned may be changed or developed.
    web app需要播放如“叮咚-t123-进站”
    共三个文件,求解。

    另:ajax一直取数据,如何判断某条数据变化后播放呢,如t123的状态从“进站”变为“晚点”

    如何处理优雅而高效
    6 replies    1970-01-01 08:00:00 +08:00
    Perry
        1
    Perry  
       Oct 12, 2013   ❤️ 1
    没有很理解你的意思。
    ajax取得的数据辨别进站和晚点后各自播放不一样的mp3文件:“叮咚-t123-进站”,“叮咚-t123-晚点”
    叮咚是每次都需要的?然后可以把“t123”的mp3文件的名字统一成列车的代号方便直接variable带入链接,进站和晚点就是一个判断了。
    loading
        2
    loading  
    OP
       Oct 12, 2013 via iPhone
    @Perry 页面一直轮训,json实际是个字典

    t123:晚点

    如果内容变为(即与上一次取得的json数据相比)

    t123:进站

    就播报对应音频。



    对于监视变化然后给出视觉提醒我已经写出“能跑”的代码了,当前是声音不好处理,因为放一次就有3个文件,分别是:叮咚;t123;进站。

    不知这个使用audio元素的js函数怎么写,函数应该是:

    function(车次,状态){
    blabla

    pandada8
        3
    pandada8  
       Oct 12, 2013
    要不在audio元素的播放完成事件里面再打开下一个文件?
    yimity
        4
    yimity  
       Oct 12, 2013
    替换下 audio 的 src 就好了么。
    icevil
        5
    icevil  
       Oct 12, 2013   ❤️ 1
    @loading

    function(车次,状态) {

    var tipSound = new Audio();
    tipSound = new Audio("叮咚.mp3");
    $(tipSound).bind("ended", function() {
    tipSound = new Audio(车次.mp3);
    tipSound.play();
    $(tipSound).bind("ended", function() {
    tipSound = new Audio(状态.mp3);
    tipSound.play();
    });
    });
    tipSound.play();

    }

    github 打开慢,懒得贴 gist 了,未测试,不知道可行否。。
    loading
        6
    loading  
    OP
       Oct 12, 2013 via iPhone
    突然发现如果能以队列方式播放就完美了,只要push进去,就依次放出来。
    @icevil 感谢,应该可以了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   909 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 466ea39e · 42ms · UTC 21:08 · PVG 05:08 · LAX 14:08 · JFK 17:08
    ♥ Do have faith in what you're doing.