3

我想允许声音文件播放和暂停。该文档显示了如何播放流文件:

    $("#stream").live("click", function(){      
          SC.stream("/tracks/{'track-id'}", function(sound){
             sound.play();
          };

它使用声音管理器进行流式传输并使用它的一些对象和方法……比如 .pause()!

所以这是我认为应该工作的代码:

    var is_playing="false";

    $("#stream").live("click", function(){

        SC.stream("/tracks/{'track-id'}", function(sound){
            if (is_playing==="true")
                {
                    sound.pause();
                    is_playing = "false";
                    console.log(is_playing);
                }
            else if (is_playing === "false")
                {
                    sound.play();
                    is_playing = "true";
                    console.log(is_playing);
                }

            });

但是,它会继续播放曲目而不会暂停。有任何想法吗?谢谢。

4

5 回答 5

1
SC.stream("/tracks/13680213", function(sound) {
    SC.sound = sound;
});

这意味着您没有在 SC.stream 构造函数中编写事件侦听器,然后您可以随意访问以下(以及更多):

SC.sound.play(); SC.sound.pause(); SC.sound.stop(); SC.sound.pause(); SC.sound.playState;

于 2014-12-31T19:12:43.427 回答
1

您必须使用sound.stop(); 还有一个内置功能来切换声音的播放/暂停。用来sound.togglePause();做那个。

于 2014-03-06T01:22:05.847 回答
1
var is_playing = false;
soundManager.setup({
    url: '/swf/soundmanager2.swf',
    preferFlash: false,
    onready: function() {
        var mySound = soundManager.createSound({
            id: 'aSound',
            url: 'sonidos/sonido1.mp3' ,
            autoplay: false
        });

        $("#stream").live("click", function(){    
            if (is_playing==false){
                    mySound.play();
                    is_playing = true;
                }else if (is_playing== true) {
                    mySound.stop();
                    is_playing = false;
             }
        });
    },
    /*    ontimeout: function() {
    // Hrmm, SM2 could not start. Missing SWF? Flash blocked? Show an error, etc.?
    }*/
});
</script>
于 2013-06-25T00:14:45.477 回答
0

只需将您想要触发暂停函数的事件链接到传递给 SC.stream() 回调函数的“声音”对象。

以下代码中的表单接受一个声音云链接,例如这个:https ://soundcloud.com/djalmix-1/living-in-stereo-dj-almix (所以一旦应用程序上线就将其粘贴到表单中并单击加载)。此外,您还必须提供您自己的 client_id,这是 soundcloud 在您注册应用程序时为您提供的,这只需一分钟左右。

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script src="http://connect.soundcloud.com/sdk.js"></script>
        <script>
            function load_sound() {             
                var track_url = document.getElementById("sc_url").value;
                    SC.initialize({
                        client_id: 'client_id'
                            });
                            SC.get('/resolve', {url: track_url}, function(track) {
                                console.log("the track id is: " + track.id);
                                SC.stream("/tracks/" + track.id, function(sound) {
                                    var is_playing = true;
                                    sound.play();
                                    document.getElementById("stream").onclick = function(){  
                                        if(is_playing === false){
                                            sound.resume();
                                            is_playing = true;
                                        } else if(is_playing === true){
                                            sound.pause();
                                            is_playing = false;
                                        }   
                                    };                                  
                                });
                            });
                        }              
        </script>
        <form>
            <input id="sc_url" type="url">
            <input type="button" onclick="load_sound();" value="load">
        </form>
        <button id="stream">pause/resume</button>
    </body>
</html>
于 2014-02-06T05:39:00.937 回答
0

由于关于这个主题的答案很少,我想我会回答我自己的问题。

我继续下载了 Sound Manager 2 并将必要的文件放在需要的位置(您可以在 Sound manager2 页面的基本教程部分找到它。)

http://www.schillmania.com/projects/soundmanager2/demo/template/

诀窍是找到与我想嵌入的用户相关联的 SoundCloud mp3。为此,我必须使用 RESTClient 并输入适当的 api url。它看起来像这样。

http://api.soundcloud.com/tracks/12758186.json?client_id= {MyClient_ID_number}

http://api.soundcloud.com/tracks/是指向音轨 id="12758186" 的通用指针。接下来是我的个人 client_id 的 JSONP 包含,以验证我对 soundcloud 服务器的请求。

获得此网址后,我在浏览器中尝试了它,它使用 HTML5 mp3 播放器将我重定向到**另一个网址**,该播放器会自动播放歌曲。

我从这个 soundcloud 文档中得到了这样做的想法:http: //developers.soundcloud.com/docs#playing

然后,我复制了这个 url,并将原始问题中的代码混合到上面提到的基本教程中(http://www.schillmania.com/projects/soundmanager2/demo/template/)。

最终代码:

            var is_playing = false;

            $("#stream").live("click", function(){
                soundManager.setup({
                  url: './swf/soundmanager2.swf',
                  onready: function() {
                    var mySound = soundManager.createSound({
                      id: 'aSound',
                      url: {**another url**},
                      autoplay: false
                    });
                    if (is_playing===false)
                        {
                            mySound.play();
                            is_playing = true;
                        }
                    else if (is_playing=== true)    
                        {
                            mySound.stop();
                            is_playing = false;
                        }

                  },
                  ontimeout: function() {
                    // Hrmm, SM2 could not start. Missing SWF? Flash blocked? Show an error, etc.?
                  }
                });
            });
于 2013-02-28T20:22:04.880 回答