Presentasyonlarda PHP ile Video Çerçevelerini Yönetme

Giriş

Bir sunumda iyi konumlandırılmış bir video, mesajınızı daha etkileyici hâle getirebilir ve izleyicinizle etkileşim seviyesini artırabilir.

PowerPoint, bir sunumdaki slayta videoları iki şekilde eklemenize olanak tanır:

  • Yerel bir video ekleyin veya gömün (bilgisayarınızda depolanan)
  • Çevrimiçi bir video ekleyin (YouTube gibi bir web kaynağından).

Video nesnelerini (video objects) bir sunuma eklemenizi sağlamak için, Aspose.Slides Video sınıfı, VideoFrame sınıfı ve diğer ilgili türleri sağlar.

Gömülü Video Çerçeveleri Oluşturma

Slaytınıza eklemek istediğiniz video dosyası yerel olarak depolanıyorsa, videoyu sunuma gömmek için bir video çerçevesi oluşturabilirsiniz.

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Bir slaydın referansını indeksine göre alın.
  3. Video nesnesi ekleyin ve videoyu sunuma gömmek için video dosya yolunu geçin.
  4. VideoFrame nesnesi ekleyerek video için bir çerçeve oluşturun.
  5. Değiştirilmiş sunumu kaydedin.

Bu PHP kodu, yerel olarak depolanan bir videoyu bir sunuma nasıl ekleyeceğinizi gösterir:

  # Presentation sınıfını örnekler
  $pres = new Presentation("pres.pptx");
  try {
    # Videoyu yükler
    $fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
    $video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
    # İlk slaytı alır ve bir video çerçevesi ekler
    $pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
    # Sunumu diske kaydeder
    $pres->save("pres-with-video.pptx", SaveFormat::Pptx);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Alternatif olarak, video dosya yolunu doğrudan addVideoFrame(float x, float y, float width, float height, Video video) metoduna geçirerek bir video ekleyebilirsiniz:

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

Web Kaynaklarından Video Çerçeveleri Oluşturma

Microsoft PowerPoint 2013 ve daha yeni sürümleri sunumlarda YouTube videolarını destekler. Kullanmak istediğiniz video çevrimiçi (ör. YouTube’da) ise, web bağlantısı aracılığıyla sunuma ekleyebilirsiniz.

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Bir slaydın referansını indeksine göre alın.
  3. Video nesnesi ekleyin ve video bağlantısını geçin.
  4. Video çerçevesi için bir küçük resim (thumbnail) ayarlayın.
  5. Sunumu kaydedin.

Bu PHP kodu, web üzerinden bir video ekleyerek bir PowerPoint sunumundaki slayta nasıl ekleyeceğinizi gösterir:

  # Bir sunum dosyasını temsil eden Presentation nesnesini örnekler
  $pres = new Presentation();
  try {
    addVideoFromYouTube($pres, "Tj75Arhq5ho");
    $pres->save("out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Video Altyazılarını Yönetme

Aspose.Slides, PowerPoint sunumlarındaki video çerçeveleri için kapalı altyazıları yönetmenizi sağlar. Altyazılar WebVTT formatında depolanır ve VideoFrame::getCaptionTracks yöntemi aracılığıyla kullanılabilir.

Video Çerçevesine Altyazı Ekleme

Video çerçevesine altyazı eklemek için:

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Sunuma bir video ekleyin.
  3. Bir slayta VideoFrame nesnesi ekleyin.
  4. getCaptionTracks tarafından döndürülen CaptionsCollection koleksiyonunu kullanarak bir WebVTT altyazı izi ekleyin.
  5. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod, video çerçevesine altyazı eklemeyi gösterir:

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

    // Yeni bir altyazı izini WebVTT dosyasından ekler.
    $presentation->save("video_with_captions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

CaptionsCollection sınıfı ayrıca bir akıştan altyazı eklemenizi sağlayan bir aşırı yükleme sunar.

Video Çerçevesinden Altyazı Çıkarma

Video çerçevesinden altyazı çıkarmak için:

  1. Videoyu içeren sunumu yükleyin.
  2. Hedef VideoFrame nesnesini bulun.
  3. getCaptionTracks koleksiyonu üzerinde yineleme yapın.
  4. Her bir altyazı izini bir .vtt dosyasına kaydedin.

Aşağıdaki kod, video çerçevesinden altyazı çıkarmayı gösterir:

$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);
                // Altyazı izini bir WebVTT dosyasına kaydeder.
                $filePath = $captionTrack->getCaptionId() . ".vtt";
                file_put_contents($filePath, $captionTrack->getBinaryData());
            }
        }
    }
} finally {
    $presentation->dispose();
}

Her bir Captions nesnesi altyazı tanımlayıcısını, etiketini, ikili verisini ve UTF‑8 dizesi olarak altyazı metnini ortaya koyar.

Video Çerçevesinden Altyazı Silme

Video çerçevesinden altyazı silmek için:

  1. Videoyu içeren sunumu yükleyin.
  2. Hedef VideoFrame nesnesini alın.
  3. getCaptionTracks koleksiyonundan altyazı izlerini kaldırın.
  4. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod, bir video çerçevesindeki tüm altyazıları kaldırmayı gösterir:

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

    // Video çerçevesindeki tüm altyazıları kaldırır.
    $videoFrame->getCaptionTracks()->clear();

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

Yalnızca tek bir altyazı izini kaldırmanız gerekiyorsa, clear yerine remove veya removeAt metodlarını kullanın.

Slaytlardan Video Çıkarma

Videoları slaytlara eklemenin yanı sıra, Aspose.Slides sunumlardaki gömülü videoları çıkarmanıza da izin verir.

  1. Videoyu içeren sunumu yüklemek için bir Presentation örneği oluşturun.
  2. Tüm Slide nesneleri üzerinde yineleme yapın.
  3. Tüm Shape nesneleri arasında bir VideoFrame bulmak için arama yapın.
  4. Videoyu diske kaydedin.

Bu PHP kodu, bir sunum slaydındaki videoyu nasıl çıkaracağınızı gösterir:

  # Sunum dosyasını temsil eden bir Presentation nesnesini örnekler
  $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();
          # Dosya uzantısını alır
          $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();
    }
  }

SSS

Bir VideoFrame için hangi oynatma parametreleri değiştirilebilir?

playback mode (otomatik veya tıklama) ve looping kontrol edebilirsiniz. Bu seçenekler, VideoFrame nesnesinin özellikleri aracılığıyla bulunur.

Bir video eklemek PPTX dosya boyutunu etkiler mi?

Evet. Yerel bir video gömülürken ikili veri belgeye eklenir, bu da sunum boyutunun dosya boyutuyla orantılı artmasına neden olur. Çevrimiçi bir video eklediğinizde ise bir bağlantı ve küçük resim gömülür, bu yüzden boyut artışı daha küçüktür.

Mevcut bir VideoFrame’in videosunu konum ve boyutunu değiştirmeden değiştirebilir miyim?

Evet. Çerçevenin geometrisini koruyarak video content değiştirebilirsiniz; bu, mevcut bir yerleşimde medyanın güncellenmesi için yaygın bir senaryodur.

Gömülü bir videonun içerik türü (MIME) belirlenebilir mi?

Evet. Gömülü bir videonun content type vardır ve bunu okuyup, örneğin diske kaydederken kullanabilirsiniz.