September 25, 2013

JavaScriptでSoundCloudの曲を再生してみる

なかなかまとまった情報も無さそうなので、簡単にですが、調べてみました。先に、サンプルです。client_id値は置換して下さい。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SoundCloud TEST</title>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="http://connect.soundcloud.com/sdk.js"></script>
</head>
<body>

<button id="play">再生</button>
<button id="pause">一時停止</button>
<button id="stop">停止</button>
<button id="duration">総再生時間をコンソールに出力</button>
<button id="position">現在の再生時間をコンソールに出力</button>

<script>
// 初期化
SC.initialize({client_id: 'xxxxxxxxxx'});

// ストリーミングオブジェクト(?)
var s = null;
SC.stream('/tracks/293', function(sound){
    s = sound;
});

// 再生
$('#play').click(function() {
    s.play();
});

// 一時停止
$('#pause').click(function() {
    s.pause();
});

// 停止
$('#stop').click(function() {
    s.stop();
});

// 総再生時間をコンソールに出力
$('#duration').click(function() {
    console.log(s.duration);
});

// 現在の再生時間をコンソールに出力
$('#position').click(function() {
    console.log(s.position);
});
</script>
</body>
</html>
上記サンプルのポイントは
* SC.initialize()にクライアントIDを渡して初期化する
* SC.stream()のコールバックでストリーミングオブジェクト(という表現が正しいのかわからない...)をグローバルな場所に保存
くらいでしょうか。

尚、durationは、再生直後に取得した場合と、少し間をおいた場合とで、値が変わりました。ローディングに合わせて増えていくように見えました。

SoundCloudのドキュメントは以下です。
http://developers.soundcloud.com/docs/api/sdks#streaming

ドキュメントに記載されているように、SoundCloudのJSライブラリは、SoundManager 2というライブラリを用いているようです。
(これが結構がっつりしてる気がする...)

No comments:

Post a Comment