メインコンテンツへスキップ

はじめに

GitHub

AIアシストセットアップを使ってプラグインをインストールできます。以下のコマンドで、お使いのAIツールに Capgo スキルを追加してください:

ターミナルウィンドウ
bunx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

次に、以下のプロンプトを使用します:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-youtube-player` plugin in my project.

手動セットアップを希望する場合は、以下のコマンドでプラグインをインストールし、下記のプラットフォーム別の手順に従ってください:

ターミナルウィンドウ
bun add @capgo/capacitor-youtube-player
bunx cap sync
import { YoutubePlayer } from '@capgo/capacitor-youtube-player';

クイックスタート

「Quick start」セクション
import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
await YoutubePlayer.initialize({
playerId: 'my-player',
videoId: 'dQw4w9WgXcQ',
playerSize: { width: 640, height: 360 },
privacyEnhanced: true
});

よくある落とし穴

「Common pitfalls」セクション
  • リスナー: 画面のアンマウント時にハンドルを削除してください。
  • 一度の初期化で完了: アプリのブートストラップ時にセットアップを実行します。
  • 信頼できる情報源: 信頼する src/definitions.ts GitHub リポジトリ内に

メインWebViewでのYouTubeリファラーブロックを修正する

「メインWebViewでのYouTubeリファラーブロックを修正する」というセクション

プラグイン内ではYouTubeが動作するものの、Capacitor のメインWebView経由でYouTubeのページ、埋め込み、またはAPIを読み込む際に失敗する場合は、 patchRefererHeader Capacitor の設定で enable を有効にしてください。

有効にすると、プラグインが同期/アップデート中に Capacitor をパッチし、インターセプトされたYouTubeリクエストに有効な Referer header.

{
"plugins": {
"YoutubePlayer": {
"patchRefererHeader": true,
"refererHeader": "https://www.youtube.com"
}
}
}
  • 影響を受けるのは youtube.com, youtube-nocookie.com、および youtu.be リクエストのみです。
  • すでに Referer header が定義されているリクエストは、元の値を保持します。
  • refererHeader は任意で、デフォルトは https://www.youtube.com.
  • Capacitor でサポートされています 8.x インストール済みの iOS および Android プラットフォームが対象です。

新しい YouTube プレイヤーのインスタンスを初期化します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
await YoutubePlayer.initialize({
playerId: 'my-player',
videoId: 'dQw4w9WgXcQ',
playerSize: { width: 640, height: 360 },
privacyEnhanced: true
});

プレイヤーのインスタンスを破棄し、リソースを解放します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.destroy({ playerId: 'player-id-123' });
console.log(result);

動画の再生を停止し、読み込みをキャンセルします。 使用は控えめにしてください。通常は pauseVideo() が推奨されます。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.stopVideo({ playerId: 'player-id-123' });
console.log(result);

キューに追加されている、または読み込み済みの動画を再生します。 最終的なプレイヤーの状態は PLAYING (1) になります。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.playVideo({ playerId: 'player-id-123' });
console.log(result);

再生中の動画を一時停止します。 すでに ENDED (0) の状態でない限り、最終的なプレイヤーの状態は PAUSED (2) になります。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.pauseVideo({ playerId: 'player-id-123' });
console.log(result);

動画の特定の時間にシークします。 プレイヤーが一時停止中の場合は一時停止を維持し、再生中の場合はそのまま再生を継続します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.seekTo({
playerId: 'player-id-123',
seconds: 10,
allowSeekAhead: true,
});
console.log(result);

YouTube IDを指定して動画を読み込み、再生します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.loadVideoById({
playerId: 'player-id-123',
options: { videoId: 'video-id-123' },
});
console.log(result);

再生せずに、IDを指定して動画をキューに追加します。 サムネイルを読み込み、プレイヤーを準備しますが、playVideo() が呼ばれるまで動画はリクエストしません。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.cueVideoById({
playerId: 'player-id-123',
options: { videoId: 'video-id-123' },
});
console.log(result);

動画のフルURLを指定して読み込み、再生します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.loadVideoByUrl({
playerId: 'player-id-123',
options: { mediaContentUrl: 'https://example.com' },
});
console.log(result);

再生せずに、URLで動画をキューに追加します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.cueVideoByUrl({
playerId: 'player-id-123',
options: { mediaContentUrl: 'https://example.com' },
});
console.log(result);

再生せずにプレイリストをキューに追加します。 プレイリストを読み込み、最初の動画を準備します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.cuePlaylist({
playerId: 'player-id-123',
playlistOptions: { listType: 'playlist' },
});
console.log(result);

プレイリストを読み込んで再生します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.loadPlaylist({
playerId: 'player-id-123',
playlistOptions: { listType: 'playlist' },
});
console.log(result);

プレイリスト内の次の動画を再生します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.nextVideo({ playerId: 'player-id-123' });
console.log(result);

プレイリスト内の前の動画を再生します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.previousVideo({ playerId: 'player-id-123' });
console.log(result);

プレイリスト内の特定の動画をインデックスで再生します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.playVideoAt({
playerId: 'player-id-123',
index: 1,
});
console.log(result);

プレイヤーの音声をミュートします。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.mute({ playerId: 'player-id-123' });
console.log(result);

プレイヤーのミュートを解除します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.unMute({ playerId: 'player-id-123' });
console.log(result);

プレイヤーが現在ミュートされているか確認します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.isMuted({ playerId: 'player-id-123' });
console.log(result);

プレイヤーの音量を設定します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.setVolume({
playerId: 'player-id-123',
volume: 0.5,
});
console.log(result);

現在の音量を取得します。 ミュート状態でも音量を返します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getVolume({ playerId: 'player-id-123' });
console.log(result);

プレイヤーのサイズをピクセル単位で設定します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.setSize({
playerId: 'player-id-123',
width: 1080,
height: 1920,
});
console.log(result);

現在の再生速度を取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getPlaybackRate({ playerId: 'player-id-123' });
console.log(result);

再生速度を設定します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.setPlaybackRate({
playerId: 'player-id-123',
suggestedRate: 1,
});
console.log(result);

現在の動画で利用可能な再生速度のリストを取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getAvailablePlaybackRates({ playerId: 'player-id-123' });
console.log(result);

プレイリストのループを有効または無効にします。 有効にすると、最後の動画の後でプレイリストが先頭から再開されます。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.setLoop({
playerId: 'player-id-123',
loopPlaylists: true,
});
console.log(result);

プレイリストのシャッフルを有効または無効にします。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.setShuffle({
playerId: 'player-id-123',
shufflePlaylist: true,
});
console.log(result);

バッファリングされた動画の割合を取得します。 非推奨の getVideoBytesLoaded/getVideoBytesTotal よりも信頼性が高いです。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getVideoLoadedFraction({ playerId: 'player-id-123' });
console.log(result);

プレイヤーの現在の状態を取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getPlayerState({ playerId: 'player-id-123' });
console.log(result);

アクティブなすべてのプレイヤーのイベント状態を取得します。 複数のプレイヤーインスタンスを追跡する際に便利です。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getAllPlayersEventsState();
console.log(result);

現在の再生位置を秒単位で取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getCurrentTime({ playerId: 'player-id-123' });
console.log(result);

フルスクリーンモードの切り替え。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.toggleFullScreen({
playerId: 'player-id-123',
isFullScreen: true,
});
console.log(result);

現在の再生画質を取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getPlaybackQuality({ playerId: 'player-id-123' });
console.log(result);

推奨する再生画質を設定します。 実際の画質はネットワーク状況により異なる場合があります。

import { YoutubePlayer, IPlaybackQuality } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.setPlaybackQuality({
playerId: 'player-id-123',
suggestedQuality: IPlaybackQuality.SMALL,
});
console.log(result);

現在の動画で利用可能な画質リストを取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getAvailableQualityLevels({ playerId: 'player-id-123' });
console.log(result);

現在の動画の再生時間を秒単位で取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getDuration({ playerId: 'player-id-123' });
console.log(result);

現在の動画の YouTube.com URL を取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getVideoUrl({ playerId: 'player-id-123' });
console.log(result);

現在の動画の埋め込み code を取得します。 HTML iframe 埋め込み code を返します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getVideoEmbedCode({ playerId: 'player-id-123' });
console.log(result);

現在のプレイリストに含まれる動画 ID の配列を取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getPlaylist({ playerId: 'player-id-123' });
console.log(result);

プレイリスト内で現在再生中のビデオのインデックスを取得します。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getPlaylistIndex({ playerId: 'player-id-123' });
console.log(result);

プレーヤーのiframe DOM要素を取得します。 Webプラットフォームのみ。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
const result = await YoutubePlayer.getIframe({ playerId: 'player-id-123' });
console.log(result);

プレーヤーにイベントリスナーを追加します。 Webプラットフォームのみ。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
YoutubePlayer.addEventListener({
playerId: 'my-player',
eventName: 'onStateChange',
listener: (event) => {
console.log('Player state:', event.data);
},
});

プレーヤーからイベントリスナーを削除します。 Webプラットフォームのみ。

import { YoutubePlayer } from '@capgo/capacitor-youtube-player';
await YoutubePlayer.removeEventListener({
playerId: 'player-id-123',
eventName: 'onReady',
listener: (event) => {
console.log(event);
},
});
export interface PlayerIdOptions {
playerId: string;
}
export interface SeekToOptions extends PlayerIdOptions {
playerId: string;
seconds: number;
allowSeekAhead: boolean;
}
export interface VideoByIdMethodOptions extends PlayerIdOptions {
playerId: string;
options: IVideoOptionsById;
}
export interface VideoByUrlMethodOptions extends PlayerIdOptions {
playerId: string;
options: IVideoOptionsByUrl;
}
export interface PlaylistMethodOptions extends PlayerIdOptions {
playerId: string;
playlistOptions: IPlaylistOptions;
}
export interface PlayVideoAtOptions extends PlayerIdOptions {
playerId: string;
index: number;
}
export interface SetVolumeOptions extends PlayerIdOptions {
playerId: string;
volume: number;
}
export interface SetSizeOptions extends PlayerIdOptions {
playerId: string;
width: number;
height: number;
}
export interface SetPlaybackRateOptions extends PlayerIdOptions {
playerId: string;
suggestedRate: number;
}
export interface SetLoopOptions extends PlayerIdOptions {
playerId: string;
loopPlaylists: boolean;
}
export interface SetShuffleOptions extends PlayerIdOptions {
playerId: string;
shufflePlaylist: boolean;
}
export interface ToggleFullScreenOptions extends PlayerIdOptions {
playerId: string;
isFullScreen: boolean | null | undefined;
}

このページはプラグインの src/definitions.tsから生成されています。上流で公開 API が変更されたら、sync を再実行してください。

以下を使用している場合: はじめに ダッシュボードと API の操作を計画するには、以下と連携してください @capgo/capacitor-youtube-player の使用方法 @capgo/capacitor-youtube-player でネイティブ機能を使用する場合、 API の概要 API Overview の実装の詳細については、 はじめに Introduction の実装の詳細については、 API キー API Keys の実装の詳細については、 デバイス Devices の実装の詳細については。