Webサイトにトラックリストを埋め込む
dlp-playerウィジェットを使えば、同期されたトラックリストを任意のWebサイトに埋め込めます。録音の再生中に、現在のトラックがハイライト表示されます。
前提条件
- DJ Live PlaylistからエクスポートしたプレイリストJSON(録音セッション付き)
<video>、<audio>、またはYouTube/SoundCloudの<iframe>を含むWebページ
インストール
npm経由
bash
npm install dlp-playerjs
import 'dlp-player/style.css'
import 'dlp-player'CDN経由
html
<link rel="stylesheet" href="https://unpkg.com/dlp-player/dist/dlp-player.css">
<script src="https://unpkg.com/dlp-player/dist/dlp-player.umd.js"></script>クイックスタート
任意のメディア要素にdlpクラスとプレイリストJSONを指すdata-dlp-src属性を追加します:
html
<!-- 動画ファイルの場合 -->
<video class="dlp" data-dlp-src="/playlist.json" src="my-mix.mp4" controls></video>
<!-- 音声ファイルの場合 -->
<audio class="dlp" data-dlp-src="/playlist.json" src="my-mix.mp3" controls></audio>
<!-- YouTube動画の場合 -->
<iframe class="dlp" data-dlp-src="/playlist.json"
src="https://www.youtube.com/embed/VIDEO_ID"
allow="autoplay; encrypted-media" allowfullscreen></iframe>ウィジェットはページ読み込み時に自動初期化されます — JavaScriptは不要です。
表示モード
リストモード(デフォルト)
トラックリストがプレーヤーの横に表示されます。現在のトラックがハイライトされ、自動スクロールされます。
html
<video class="dlp" data-dlp-src="/playlist.json" data-dlp-mode="list"
src="mix.mp4" controls></video>オーバーレイモード
トラックリストがプレーヤーの下部にフェードイン/フェードアウトアニメーション付きで重ねて表示されます。
html
<video class="dlp" data-dlp-src="/playlist.json" data-dlp-mode="overlay"
src="mix.mp4" controls></video>仕組み
- ウィジェットがDLPからエクスポートしたプレイリストJSONを読み込みます
recordingStartTimeと各トラックのplayHistoryを使用してオフセットを計算します- 再生中、SyncEngineが
currentTimeをアクティブなトラックに照合します - 表示がリアルタイムで更新されます
対応プレーヤー
| 要素 | 自動検出 |
|---|---|
<video> | ネイティブtimeupdateイベント |
<audio> | ネイティブtimeupdateイベント |
YouTube <iframe> | YouTube IFrame API(自動読み込み) |
SoundCloud <iframe> | SoundCloud Widget API |
CSSカスタマイズ
CSS変数を上書きしてサイトのデザインに合わせます:
css
.dlp-wrapper {
--dlp-bg: #1a1a2e;
--dlp-text-color: #eee;
--dlp-highlight-bg: rgba(14, 165, 233, 0.2);
--dlp-title-size: 1rem;
--dlp-artist-size: 0.85rem;
}JavaScript API
UMD(グローバル)
js
// DOMContentLoadedで自動初期化
// インスタンスにアクセス:
DLP.instances // DlpInstanceの配列
DLP.init() // ページを再スキャンして新しい要素を検出ESM(import)
js
import { DlpInstance, SyncEngine, loadPlaylist } from 'dlp-player'
const playlist = await loadPlaylist('/path/playlist.json')
const sync = new SyncEngine(playlist)
const activeIds = sync.getActiveTrackIds(currentTimeInSeconds)
