Správa audia v prezentacích pomocí PHP

Přehled

Tento článek vysvětluje, jak pracovat s audio rámci v Aspose.Slides. Ukazuje, jak přidat vložený zvuk do snímků, přizpůsobit miniaturu audio rámce, nakonfigurovat možnosti přehrávání jako hlasitost, smyčkování, skrytí, oříznutí a dobu prolínání, a jak extrahovat zvuk použité v přechodech prezentace.

Vytvoření audio rámců

Aspose.Slides pro PHP pomocí Java vám umožňuje přidávat zvukové soubory do snímků. Zvukové soubory jsou vkládány do snímků jako audio rámce.

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek pomocí jeho indexu.
  3. Načtěte stream zvukového souboru, který chcete vložit do snímku.
  4. Přidejte vložený audio rámec (obsahující zvukový soubor) do snímku.
  5. Nastavte PlayMode a Volume, které jsou k dispozici u objektu AudioFrame.
  6. Uložte upravenou prezentaci.

Tento PHP kód vám ukazuje, jak přidat vložený audio rámec do snímku:

// Vytvoří instanci třídy Presentation, která představuje soubor prezentace
$pres = new Presentation();
try {
    # Získá první snímek
    $sld = $pres->getSlides()->get_Item(0);
    # Načte soubor wav zvuku do streamu
    $fstr = new Java("java.io.FileInputStream", new Java("java.io.File", "audio.wav"));
    # Přidá audio rámec
    $audioFrame = $sld->getShapes()->addAudioFrameEmbedded(50, 150, 100, 100, $fstr);
    $fstr->close();
    # Nastaví režim přehrávání a hlasitost audia
    $audioFrame->setPlayMode(AudioPlayModePreset->Auto);
    $audioFrame->setVolume(AudioVolumeMode->Loud);
    # Zapíše soubor PowerPoint na disk
    $pres->save("AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
} catch(JavaException e) {
} finally {
    if (!java_is_null($pres)) $pres.dispose();
}

Změna miniatury audio rámce

Když přidáte zvukový soubor do prezentace, zvuk se zobrazí jako rámec se standardním výchozím obrázkem (viz obrázek v následující sekci). Můžete změnit náhledový obrázek audio rámce (nastavte svůj preferovaný obrázek).

Tento PHP kód vám ukazuje, jak změnit miniaturu nebo náhledový obrázek audio rámce:

$presentation = new Presentation();
try {
	$slide = $presentation->getSlides()->get_Item(0);
	# Přidá audio rámec na snímek se zadanou pozicí a velikostí.
	$audioStream = new Java("java.io.FileInputStream", "sample2.mp3");
	$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(150, 100, 50, 50, $audioStream);
	$audioStream->close();
	# Přidá obrázek do zdrojů prezentace.
	$picture;
	$image = Images->fromFile("eagle.jpeg");
	try {
		$picture = $presentation->getImages()->addImage($image);
	} finally {
		if (!java_is_null($image)) {
			$image->dispose();
		}
	}
	# Nastaví obrázek pro audio rámec.
	$audioFrame->getPictureFormat()->getPicture()->setImage($picture);// <-----

	# Uloží upravenou prezentaci na disk
	$presentation->save("example_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
	if (!java_is_null($presentation)) {
		$presentation->dispose();
	}
}

Změna možností přehrávání audia

Aspose.Slides pro PHP pomocí Java umožňuje měnit možnosti, které ovlivňují přehrávání nebo vlastnosti audia. Například můžete upravit hlasitost audia, nastavit přehrávání ve smyčce nebo dokonce skrýt ikonu audia.

Panel Audio Options v Microsoft PowerPoint:

example1_image

Možnosti Audio Options v PowerPointu, které odpovídají vlastnostem Aspose.Slides AudioFrame :

Možnosti Editing v PowerPointu, které odpovídají vlastnostem Aspose.Slides AudioFrame :

Regulátor Volume v ovládacím panelu audia v PowerPointu odpovídá metodě AudioFrame::setVolumeValue. Umožňuje změnit hlasitost audia v procentech.

Takto změníte možnosti přehrávání audia:

  1. Vytvořte nebo získejte Audio Frame.
  2. Nastavte nové hodnoty pro vlastnosti Audio Frame, které chcete upravit.
  3. Uložte upravený soubor PowerPoint.

Tento PHP kód demonstruje operaci, při které jsou upraveny možnosti audia:

$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    # Získá tvar AudioFrame
    $audioFrame = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    # Nastaví režim přehrávání na přehrání po kliknutí
    $audioFrame->setPlayMode(AudioPlayModePreset->OnClick);
    # Nastaví hlasitost na Nízkou
    $audioFrame->setVolume(AudioVolumeMode->Low);
    # Nastaví audio k přehrávání napříč snímky
    $audioFrame->setPlayAcrossSlides(true);
    # Zakáže smyčku pro audio
    $audioFrame->setPlayLoopMode(false);
    # Skryje AudioFrame během prezentace
    $audioFrame->setHideAtShowing(true);
    # Převine audio na začátek po přehrání
    $audioFrame->setRewindAudio(true);
    # Uloží soubor PowerPoint na disk
    $pres->save("AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
} finally {
	if (!java_is_null($pres)) {
		$pres->dispose();
	}
}

Tento PHP příklad ukazuje, jak přidat nový audio rámec s vloženým zvukem, oříznout jej a nastavit doby prolínání:

$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);

    // Nastaví počáteční offset ořezu na 1,5 sekundy
    $audioFrame->setTrimFromStart(1500);
    // Nastaví koncový offset ořezu na 2 sekundy
    $audioFrame->setTrimFromEnd(2000);

    // Nastaví dobu fade-in na 200 ms
    $audioFrame->setFadeInDuration(200);
    // Nastaví dobu fade-out na 500 ms
    $audioFrame->setFadeOutDuration(500);

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

Následující ukázka kódu ukazuje, jak načíst audio rámec s vloženým zvukem a nastavit jeho hlasitost na 85 %:

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

    // Získá tvar audio rámce
    $audioFrame = $slide->getShapes()->get_Item(0);

    // Nastaví hlasitost audia na 85%
    $audioFrame->setVolumeValue(85);

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

Správa titulků audia

Aspose.Slides vám umožňuje přidat uzavřené titulky k audio rámci pomocí metody getCaptionTracks. Tato metoda vrací objekt CaptionsCollection, který umožňuje přidávat stopy titulků WebVTT, procházet existující stopy a při potřebe je odstraňovat.

Přidání titulků audia

Použijte metodu getCaptionTracks k připojení jedné nebo více stop titulků k audio rámci. V následujícím příkladu je k snímku přidán zvukový soubor a poté je načtena nová stopa titulků ze souboru .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);

    // Přidejte novou stopu titulků z WebVTT souboru.
    $audioFrame->getCaptionTracks()->add("New track", "track.vtt");

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

Extrahování titulků audia

Můžete procházet stopy titulků spojené s audio rámcem a uložit je jako soubory .vtt. Každá stopa titulků poskytuje svá binární data a jedinečný identifikátor, který lze použít při exportu titulků.

$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);
                // Uložte každou stopu titulků jako soubor .vtt.
                $filePath = $captionTrack->getCaptionId() . ".vtt";
                file_put_contents($filePath, $captionTrack->getBinaryData());
            }
        }
    }
} finally {
    $presentation->dispose();
}

Odstranění titulků audia

Pro odstranění titulků z audio rámce použijte metody poskytované třídou CaptionsCollection, jako jsou clear, remove, nebo removeAt. Následující příklad odstraňuje všechny stopy titulků z audio rámce.

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

    // Odstraní všechny stopy titulků z audio rámce.
    $audioFrame->getCaptionTracks()->clear();

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

Extrahování audia

Aspose.Slides pro PHP pomocí Java vám umožňuje extrahovat zvuk použitý v přechodech prezentace. Například můžete extrahovat zvuk použitý v konkrétním snímku.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující zvuk.
  2. Získejte odkaz na příslušný snímek pomocí jeho indexu.
  3. Získejte slideshow transitions pro tento snímek.
  4. Extrahujte zvuk jako bajtová data.

Tento kód vám ukazuje, jak extrahovat zvuk použitý v snímku:

# Vytvoří instanci třídy Presentation, která představuje soubor prezentace
$pres = new Presentation("AudioSlide.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
	# Přistoupí k požadovanému snímku
	$slide = $pres->getSlides()->get_Item(0);
	# Získá efekty přechodu prezentace pro snímek
	$transition = $slide->getSlideShowTransition();
	# Extrahuje zvuk do pole bajtů
	$audio = $transition->getSound()->getBinaryData();
	echo("Length: " . $Array->getLength($audio));
} finally {
	if (!java_is_null($pres)) {
		$pres->dispose();
	}
}

FAQ

Mohu znovu použít stejný zvukový soubor na více snímcích, aniž by se zvětšila velikost souboru?

Ano. Přidejte zvuk jednou do sdílené audio collection prezentace a vytvořte další audio rámce, které odkazují na tento existující prostředek. Tím se zabrání duplikaci mediálních dat a velikost prezentace zůstane pod kontrolou.

Mohu vyměnit zvuk v existujícím audio rámci, aniž bych znovu vytvářel tvar?

Ano. U propojeného zvuku aktualizujte link path tak, aby ukazoval na nový soubor. U vloženého zvuku vyměňte objekt embedded audio za jiný z audio collection prezentace. Formátování rámce a většina nastavení přehrávání zůstane zachována.

Změní oříznutí podkladová audio data uložená v prezentaci?

Ne. Oříznutí upravuje pouze hranice přehrávání. Originální audio bajty zůstávají nedotčeny a jsou přístupné přes vložený zvuk nebo audio kolekci prezentace.