Video‑frames beheren in presentaties met PHP

Inleiding

Een goed geplaatste video in een presentatie kan uw boodschap overtuigender maken en het betrokkenheidsniveau van uw publiek verhogen.

PowerPoint stelt u in staat om video’s aan een dia in een presentatie toe te voegen op twee manieren:

  • Voeg een lokale video toe of embed een lokale video (opgeslagen op uw computer)
  • Voeg een online video toe (van een webbron zoals YouTube).

Om u in staat te stellen video‑objecten aan een presentatie toe te voegen, biedt Aspose.Slides de klasse Video , de klasse VideoFrame en andere relevante types.

Maak Ingesloten Video‑frames

Als het videobestand dat u aan uw dia wilt toevoegen lokaal is opgeslagen, kunt u een video‑frame maken om de video in uw presentatie in te sluiten.

  1. Maak een instantie van de klasse Presentation aan.
  2. Haal een verwijzing naar een dia op via de index.
  3. Voeg een Video object toe en geef het pad naar het videobestand door om de video in de presentatie in te sluiten.
  4. Voeg een VideoFrame object toe om een frame voor de video te maken.
  5. Sla de gewijzigde presentatie op.

Deze PHP‑code laat zien hoe u een lokaal opgeslagen video aan een presentatie toevoegt:

  # Instantieert de Presentation-klasse
  $pres = new Presentation("pres.pptx");
  try {
    # Laadt de video
    $fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
    $video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
    # Haalt de eerste dia op en voegt een video-frame toe
    $pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
    # Slaat de presentatie op naar schijf
    $pres->save("pres-with-video.pptx", SaveFormat::Pptx);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

U kunt ook een video toevoegen door het bestandspad rechtstreeks door te geven aan de methode addVideoFrame(float x, float y, float width, float height, Video video):

  $pres = new Presentation();
  try {
    $sld = $pres->getSlides()->get_Item(0);
    $vf = $sld->getShapes()->addVideoFrame(50, 150, 300, 150, "video1.avi");
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Video‑frames Maken met Video van Webbronnen

Microsoft PowerPoint 2013 en nieuwer ondersteunt YouTube‑video’s in presentaties. Als de video die u wilt gebruiken online beschikbaar is (bijv. op YouTube), kunt u deze via de web‑link aan uw presentatie toevoegen.

  1. Maak een instantie van de klasse Presentation aan.
  2. Haal een verwijzing naar een dia op via de index.
  3. Voeg een Video object toe en geef de link naar de video door.
  4. Stel een miniatuurafbeelding in voor het video‑frame.
  5. Sla de presentatie op.

Deze PHP‑code laat zien hoe u een video van het internet aan een dia in een PowerPoint‑presentatie toevoegt:

  # Instantieert een Presentation-object dat een presentatiebestand vertegenwoordigt
  $pres = new Presentation();
  try {
    addVideoFromYouTube($pres, "Tj75Arhq5ho");
    $pres->save("out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Video‑bijschriften Beheren

Aspose.Slides stelt u in staat om ondertitels voor video‑frames in PowerPoint‑presentaties te beheren. Ondertitels worden opgeslagen in WebVTT‑formaat en kunnen worden benaderd via de methode VideoFrame::getCaptionTracks.

Ondertitels aan een Video‑frame Toevoegen

Om ondertitels aan een video‑frame toe te voegen:

  1. Maak een instantie van de klasse Presentation aan.
  2. Voeg een video toe aan de presentatie.
  3. Voeg een VideoFrame object toe aan een dia.
  4. Gebruik de collectie CaptionsCollection die wordt geretourneerd door getCaptionTracks om een WebVTT‑ondertiteltrack toe te voegen.
  5. Sla de gewijzigde presentatie op.

De volgende code laat zien hoe u ondertitels aan een video‑frame toevoegt:

$presentation = new Presentation();
try {
    $videoData = file_get_contents("video.mp4");
    $video = $presentation->getVideos()->addVideo($videoData);

    $slide = $presentation->getSlides()->get_Item(0);
    $videoFrame = $slide->getShapes()->addVideoFrame(0, 0, 100, 100, $video);

    // Voegt een nieuw ondertiteltrack toe vanuit een WebVTT-bestand.
    $videoFrame->getCaptionTracks()->add("English", "track.vtt");

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

De klasse CaptionsCollection biedt ook een overload waarmee u ondertitels vanuit een stream kunt toevoegen.

Ondertitels uit een Video‑frame Extraheren

Om ondertitels uit een video‑frame te extraheren:

  1. Laad de presentatie die de video bevat.
  2. Zoek het doel-VideoFrame object.
  3. Itereer door de collectie getCaptionTracks.
  4. Sla elke ondertiteltrack op naar een .vtt‑bestand.

De volgende code laat zien hoe u ondertitels uit een video‑frame kunt extraheren:

$presentation = new Presentation("video_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.VideoFrame"))) {
            $videoFrame = $shape;
            $trackCount = java_values($videoFrame->getCaptionTracks()->getCount());
            for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
                $captionTrack = $videoFrame->getCaptionTracks()->get_Item($trackIndex);
                // Slaat het ondertiteltrack op naar een WebVTT-bestand.
                $filePath = $captionTrack->getCaptionId() . ".vtt";
                file_put_contents($filePath, $captionTrack->getBinaryData());
            }
        }
    }
} finally {
    $presentation->dispose();
}

Elk Captions object geeft de ondertitel‑identifier, label, binaire gegevens en de ondertiteltekst weer als een UTF‑8‑string.

Ondertitels uit een Video‑frame Verwijderen

Om ondertitels uit een video‑frame te verwijderen:

  1. Laad de presentatie die de video bevat.
  2. Haal het doel-VideoFrame object op.
  3. Verwijder ondertitel‑tracks uit de collectie getCaptionTracks.
  4. Sla de gewijzigde presentatie op.

De volgende code laat zien hoe u alle ondertitels uit een video‑frame kunt verwijderen:

$presentation = new Presentation("video_with_captions.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $videoFrame = $slide->getShapes()->get_Item(0); // type: VideoFrame

    // Verwijdert alle ondertitels van het video-frame.
    $videoFrame->getCaptionTracks()->clear();

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

Als u slechts één ondertiteltrack wilt verwijderen, gebruik dan de methoden remove of removeAt in plaats van clear.

Video Uit Dia’s Extraheren

Naast het toevoegen van video’s aan dia’s, stelt Aspose.Slides u in staat om video’s die in presentaties zijn ingesloten te extraheren.

  1. Maak een instantie van de klasse Presentation aan om de presentatie met de video te laden.
  2. Itereer door alle Slide objecten.
  3. Itereer door alle Shape objecten om een VideoFrame te vinden.
  4. Sla de video op naar schijf.

Deze PHP‑code laat zien hoe u de video van een presentatiedia kunt extraheren:

  # Instantieert een Presentation-object dat een presentatiebestand vertegenwoordigt
  $pres = new Presentation("VideoSample.pptx");
  try {
    foreach($pres->getSlides() as $slide) {
      foreach($slide->getShapes() as $shape) {
        if (java_instanceof($shape, new JavaClass("com.aspose.slides.VideoFrame"))) {
          $vf = $shape;
          $type = $vf->getEmbeddedVideo()->getContentType();
          $ss = $type->lastIndexOf('-');
          $buffer = $vf->getEmbeddedVideo()->getBinaryData();
          # Haalt de bestandsextensie op
          $charIndex = $type->indexOf("/");
          $type = $type->substring($charIndex + 1);
          $fop = new Java("java.io.FileOutputStream", "testing2." . $type);
          $fop->write($buffer);
          $fop->flush();
          $fop->close();
        }
      }
    }
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Welke afspeelparameters van een video kunnen worden aangepast voor een VideoFrame?

U kunt de playback mode (auto of bij klikken) en looping regelen. Deze opties zijn beschikbaar via de eigenschappen van het VideoFrame object.

Heeft het toevoegen van een video invloed op de bestandsgrootte van het PPTX‑bestand?

Ja. Wanneer u een lokale video insluit, worden de binaire gegevens in het document opgenomen, waardoor de presentatiegrootte evenredig toeneemt met de bestandsgrootte. Wanneer u een online video toevoegt, worden alleen een link en een miniatuurafbeelding ingesloten, waardoor de toename van de grootte kleiner is.

Kan ik de video in een bestaand VideoFrame vervangen zonder de positie en grootte te wijzigen?

Ja. U kunt de video content binnen het frame vervangen terwijl u de geometrie van de vorm behoudt; dit is een veelvoorkomend scenario voor het bijwerken van media in een bestaande lay-out.

Kan het content‑type (MIME) van een ingesloten video worden bepaald?

Ja. Een ingesloten video heeft een content type dat u kunt lezen en gebruiken, bijvoorbeeld bij het opslaan naar schijf.