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
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 に答える
1

使用する必要sound.stop(); があります サウンドの再生/一時停止を切り替える組み込み関数もあります。そのために使用sound.togglePause();します。

于 2014-03-06T01:22:05.847 に答える
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 に答える
0

一時停止機能をトリガーするイベントを、SC.stream() のコールバック関数に渡される「サウンド」オブジェクトにリンクするだけです。

次のコードのフォームは、次のようなサウンド クラウド リンクを受け入れますをクリックし、[ロード] をクリックします)。また、アプリを登録するときに soundcloud が提供する独自の client_id を提供する必要があります。これには 1 分ほどしかかかりません。

<!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" への一般的なポインタです。これに続いて、soundcloud サーバーへのリクエストを検証するために、個人的な client_id を JSONP に含めます。

この URL を取得したら、ブラウザで試してみたところ、曲を自動的に再生する HTML5 mp3 プレーヤーで ** 別の URL ** にリダイレクトされました。

私はこのsoundcloud docからこれを行うというアイデアを得ました: 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 に答える