プレゼンテーションでのオーディオ管理(PHP 使用)

オーディオ フレームを作成

Aspose.Slides for PHP via Java を使用すると、スライドにオーディオ ファイルを追加できます。オーディオ ファイルはオーディオ フレームとしてスライドに埋め込まれます。

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. スライドに埋め込むオーディオ ファイル ストリームを読み込みます。
  4. 埋め込まれたオーディオ フレーム(オーディオ ファイルを含む)をスライドに追加します。
  5. AudioFrame オブジェクトが公開する PlayModeVolume を設定します。
  6. 変更されたプレゼンテーションを保存します。

この PHP コードは、スライドに埋め込まれたオーディオ フレームを追加する方法を示しています:

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します
$pres = new Presentation();
try {
    # 最初のスライドを取得します
    $sld = $pres->getSlides()->get_Item(0);
    # wav サウンドファイルをストリームにロードします
    $fstr = new Java("java.io.FileInputStream", new Java("java.io.File", "audio.wav"));
    # オーディオ フレームを追加します
    $audioFrame = $sld->getShapes()->addAudioFrameEmbedded(50, 150, 100, 100, $fstr);
    $fstr->close();
    # オーディオの再生モードと音量を設定します
    $audioFrame->setPlayMode(AudioPlayModePreset->Auto);
    $audioFrame->setVolume(AudioVolumeMode->Loud);
    # PowerPoint ファイルを書き出してディスクに保存します
    $pres->save("AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
} catch(JavaException e) {
} finally {
    if (!java_is_null($pres)) $pres.dispose();
}

オーディオ フレームのサムネイルを変更

プレゼンテーションにオーディオ ファイルを追加すると、オーディオは標準のデフォルト画像が付いたフレームとして表示されます(以下の画像参照)。オーディオ フレームのプレビュー画像(好きな画像)に変更できます。

この PHP コードは、オーディオ フレームのサムネイルまたはプレビュー画像を変更する方法を示しています:

$presentation = new Presentation();
try {
	$slide = $presentation->getSlides()->get_Item(0);
	# 指定された位置とサイズでスライドにオーディオ フレームを追加します。
	$audioStream = new Java("java.io.FileInputStream", "sample2.mp3");
	$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(150, 100, 50, 50, $audioStream);
	$audioStream->close();
	# プレゼンテーションのリソースに画像を追加します。
	$picture;
	$image = Images->fromFile("eagle.jpeg");
	try {
		$picture = $presentation->getImages()->addImage($image);
	} finally {
		if (!java_is_null($image)) {
			$image->dispose();
		}
	}
	# オーディオ フレームの画像を設定します。
	$audioFrame->getPictureFormat()->getPicture()->setImage($picture);// <-----
	
	# 変更されたプレゼンテーションをディスクに保存します
	$presentation->save("example_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
	if (!java_is_null($presentation)) {
		$presentation->dispose();
	}
}

オーディオ 再生オプションを変更

Aspose.Slides for PHP via Java を使用すると、オーディオの再生やプロパティを制御するオプションを変更できます。たとえば、音量を調整したり、ループ再生を設定したり、オーディオ アイコンを非表示にしたりできます。

Microsoft PowerPoint の Audio Options ペイン:

example1_image

PowerPoint Audio Options が Aspose.Slides の AudioFrame プロパティに対応:

PowerPoint Editing オプションが Aspose.Slides の AudioFrame プロパティに対応:

PowerPoint のオーディオ コントロール パネルの Volume controllAudioFrame::setVolumeValue メソッドに対応し、音量をパーセンテージで変更できます。

オーディオ 再生オプションを変更する手順:

  1. Create または取得した Audio Frame を使用します。
  2. 調整したい Audio Frame プロパティに新しい値を設定します。
  3. 変更された PowerPoint ファイルを保存します。

この PHP コードは、オーディオのオプションを調整する操作を示しています:

$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    # AudioFrame シェイプを取得します
    $audioFrame = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    # クリック時に再生するように再生モードを設定します
    $audioFrame->setPlayMode(AudioPlayModePreset->OnClick);
    # 音量を低に設定します
    $audioFrame->setVolume(AudioVolumeMode->Low);
    # スライド間でオーディオを再生するように設定します
    $audioFrame->setPlayAcrossSlides(true);
    # オーディオのループを無効にします
    $audioFrame->setPlayLoopMode(false);
    # スライドショー中に AudioFrame を非表示にします
    $audioFrame->setHideAtShowing(true);
    # 再生後にオーディオを先頭に巻き戻します
    $audioFrame->setRewindAudio(true);
    # PowerPoint ファイルをディスクに保存します
    $pres->save("AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
} finally {
	if (!java_is_null($pres)) {
		$pres->dispose();
	}
}

この PHP の例は、埋め込みオーディオを持つ新しいオーディオ フレームを追加し、トリムし、フェード時間を設定する方法を示します:

$pres = new Presentation();
try {
    $slide = $pres->getSlides()->get_Item(0);

    $audioData = file_get_contents("sampleaudio.mp3");
    $audio = $pres->getAudios()->addAudio($audioData);
    $audioFrame = $slide->getShapes()->addAudioFrameEmbedded(50, 50, 100, 100, $audio);

    // トリミング開始オフセットを 1.5 秒に設定します
    $audioFrame->setTrimFromStart(1500);
    // トリミング終了オフセットを 2 秒に設定します
    $audioFrame->setTrimFromEnd(2000);

    // フェードイン時間を 200 ミリ秒に設定します
    $audioFrame->setFadeInDuration(200);
    // フェードアウト時間を 500 ミリ秒に設定します
    $audioFrame->setFadeOutDuration(500);

    $pres->save("AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
} finally {
    $pres->dispose();
}

次のコード サンプルは、埋め込みオーディオを持つオーディオ フレームを取得し、音量を 85% に設定する方法を示しています:

$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    $slide = $pres->getSlides()->get_Item(0);

    // オーディオ フレーム シェイプを取得します
    $audioFrame = $slide->getShapes()->get_Item(0);

    // オーディオの音量を 85% に設定します
    $audioFrame->setVolumeValue(85);

    $pres->save("AudioFrameValue_out.pptx", SaveFormat::Pptx);
}
finally {
    $pres->dispose();
}

オーディオ キャプションを管理

Aspose.Slides を使用すると、getCaptionTracks メソッドを介してオーディオ フレームにクローズド キャプションを追加できます。このメソッドは CaptionsCollection を返し、WebVTT キャプション トラックの追加、既存トラックの反復、必要に応じた削除が可能です。

オーディオ キャプションを追加

getCaptionTracks メソッドを使用して、1 つまたは複数のキャプション トラックをオーディオ フレームに添付します。以下の例では、スライドにオーディオ ファイルを追加し、.vtt ファイルから新しいキャプション トラックを読み込みます。

$presentation = new Presentation();
try {
    $audioData = file_get_contents("audio.mp3");
    $audio = $presentation->getAudios()->addAudio($audioData);

    $slide = $presentation->getSlides()->get_Item(0);
    $audioFrame = $slide->getShapes()->addAudioFrameEmbedded(10, 10, 50, 50, $audio);

    // WebVTT ファイルから新しいキャプション トラックを追加します。
    $audioFrame->getCaptionTracks()->add("New track", "track.vtt");

    $presentation->save("audio_with_captions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

オーディオ キャプションを抽出

オーディオ フレームに関連付けられたキャプション トラックを反復し、.vtt ファイルとして保存できます。各キャプション トラックはバイナリ データと一意の識別子を公開しており、キャプションのエクスポート時に使用できます。

$presentation = new Presentation("audio_with_captions.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $shapeCount = java_values($slide->getShapes()->size());
    for ($shapeIndex = 0; $shapeIndex < $shapeCount; $shapeIndex++) {
        $shape = $slide->getShapes()->get_Item($shapeIndex);
        if (java_instanceof($shape, new JavaClass("com.aspose.slides.AudioFrame"))) {
            $audioFrame = $shape;
            $trackCount = java_values($audioFrame->getCaptionTracks()->getCount());
            for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
                $captionTrack = $audioFrame->getCaptionTracks()->get_Item($trackIndex);
                // 各キャプション トラックを .vtt ファイルとして保存します。
                $filePath = $captionTrack->getCaptionId() . ".vtt";
                file_put_contents($filePath, $captionTrack->getBinaryData());
            }
        }
    }
} finally {
    $presentation->dispose();
}

オーディオ キャプションを削除

オーディオ フレームからキャプションを削除するには、CaptionsCollection が提供するメソッド(clearremoveremoveAt など)を使用します。次の例は、オーディオ フレームからすべてのキャプション トラックを削除します。

$presentation = new Presentation($folderPath . "audio_with_captions.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $audioFrame = $slide->getShapes()->get_Item(0); // タイプ: AudioFrame

    // オーディオ フレームからすべてのキャプション トラックを削除します。
    $audioFrame->getCaptionTracks()->clear();

    $presentation->save($folderPath . "audio_without_captions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

オーディオを抽出

Aspose.Slides for PHP via Java を使用すると、スライド ショーの遷移で使用されるサウンドを抽出できます。たとえば、特定のスライドで使用されているサウンドを抽出できます。

  1. オーディオを含むプレゼンテーションを読み込むために、Presentation クラスのインスタンスを作成します。
  2. インデックスを使用して対象スライドの参照を取得します。
  3. スライドの slideshow transitions にアクセスします。
  4. バイト データとしてサウンドを抽出します。

このコードは、スライドで使用されているオーディオを抽出する方法を示しています:

# プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します
$pres = new Presentation("AudioSlide.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
	# 目的のスライドにアクセスします
	$slide = $pres->getSlides()->get_Item(0);
	# スライドのスライドショー遷移効果を取得します
	$transition = $slide->getSlideShowTransition();
	# 音声をバイト配列として抽出します
	$audio = $transition->getSound()->getBinaryData();
	echo("Length: " . $Array->getLength($audio));
} finally {
	if (!java_is_null($pres)) {
		$pres->dispose();
	}
}

FAQ

同じオーディオ アセットを複数のスライドで再利用し、ファイル サイズを増加させずに済みますか?

はい。プレゼンテーションの共有 audio collection にオーディオを一度追加し、その既存アセットを参照する追加のオーディオ フレームを作成します。これによりメディア データの重複が防止され、プレゼンテーション サイズが抑制されます。

既存のオーディオ フレームのサウンドを形状を再作成せずに置き換えることはできますか?

はい。リンクされたサウンドの場合は、link path を新しいファイルに更新します。埋め込みサウンドの場合は、プレゼンテーションの audio collection から別の埋め込みオーディオ オブジェクトに差し替えます。フレームの書式設定やほとんどの再生設定はそのまま保持されます。

トリミングはプレゼンテーションに保存されている基礎オーディオ データを変更しますか?

いいえ。トリミングは再生範囲のみを調整し、元のオーディオ バイトは変更されず、埋め込みオーディオまたはプレゼンテーションのオーディオ コレクションを通じて引き続きアクセス可能です。