PHP Kullanarak Sunumlarda Video Çerçevelerini Yönetme

Giriş

Bir sunumda iyi yerleştirilmiş bir video, mesajınızı daha etkileyici hâle getirebilir ve izleyicilerinizle etkileşim seviyesini artırabilir.

PowerPoint, bir sunumdaki slayta video eklemenize iki şekilde izin verir:

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

Sunuma videolar (video nesneleri) 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 sunumunuza gömmek için bir video çerçevesi oluşturabilirsiniz.

  1. Bir Presentation sınıfının örneğini oluşturun.
  2. Bir slaytın referansını indeks üzerinden alın.
  3. Bir Video nesnesi ekleyin ve video dosya yolunu sunuma gömmek için iletin.
  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:

  # Sunum 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, videoyu dosya yolunu doğrudan addVideoFrame(float x, float y, float width, float height, Video video) metoduna geçirerek 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 Kullanarak Video Çerçeveleri Oluşturma

Microsoft PowerPoint 2013 ve daha yenileri sunumlardaki YouTube videolarını destekler. Kullanmak istediğiniz video çevrimiçi mevcutsa (ör. YouTube’da), sunumunuza web bağlantısı üzerinden ekleyebilirsiniz.

  1. Bir Presentation sınıfının örneğini oluşturun
  2. Bir slaytın referansını indeks üzerinden alın.
  3. Bir Video nesnesi ekleyin ve videonun bağlantısını iletin.
  4. Video çerçevesi için bir küçük resim ayarlayın.
  5. Sunumu kaydedin.

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

  # Presentation dosyasını temsil eden bir Presentation nesnesi oluşturur
  $pres = new Presentation();
  try {
    addVideoFromYouTube($pres, "Tj75Arhq5ho");
    $pres->save("out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Video Çerçevesini Kırpma

Aspose.Slides, bir videonun hangi kısmının oynatılacağını, VideoFrame::setTrimFromStart ve VideoFrame::setTrimFromEnd aracılığıyla trim‑from‑start ve trim‑from‑end değerlerini ayarlayarak kontrol etmenizi sağlar. Her iki değer de milisaniye cinsindendir ve videonun başlangıcından ve sonundan atlanacak süreyi tanımlar. Bu ayarlar sunumdaki video oynatma ayarlarını değiştirir; gömülü video ikili verisini kesmez veya başka bir şekilde değiştirmez.

Kırpma Ayarlarını Belirleme

Bir video çerçevesi oluşturup kırpma ayarlarını belirlemek için:

  1. Bir Presentation sınıfının örneğini oluşturun.
  2. Sunuma bir Video nesnesi ekleyin.
  3. Bir slayta bir VideoFrame nesnesi ekleyin.
  4. VideoFrame::setTrimFromStart ve VideoFrame::setTrimFromEnd aracılığıyla trim‑from‑start ve trim‑from‑end değerlerini ayarlayın.
  5. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod örneği, gömülü bir videonun oynatılması sırasında ilk 2,5 saniyeyi ve son bir saniyeyi atlar:

$presentation = new Presentation();
$videoStream = null;
try {
    $videoStream = new Java("java.io.FileInputStream", "video.mp4");
    $video = $presentation->getVideos()->addVideo(
        $videoStream, LoadingStreamBehavior::ReadStreamAndRelease);
    $slide = $presentation->getSlides()->get_Item(0);
    $videoFrame = $slide->getShapes()->addVideoFrame(50, 50, 640, 360, $video);

    $videoFrame->setTrimFromStart(2500);
    $videoFrame->setTrimFromEnd(1000);

    $presentation->save("video_with_trim.pptx", SaveFormat::Pptx);
} finally {
    if ($videoStream !== null) {
        $videoStream->close();
    }
    $presentation->dispose();
}

Kırpma Ayarlarını Okuma

Mevcut kırpma ayarlarını incelemek için bir sunumu yükleyin, ilk slaydın şekilleri arasında bir VideoFrame nesnesi bulun ve değerleri VideoFrame::getTrimFromStart ve VideoFrame::getTrimFromEnd aracılığıyla okuyun.

Aşağıdaki kod örneği, ilk slayttaki ilk video çerçevesini bulur ve kırpma ayarlarını milisaniye cinsinden raporlar:

$presentation = new Presentation("video_with_trim.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;
            $trimFromStart = java_values($videoFrame->getTrimFromStart());
            $trimFromEnd = java_values($videoFrame->getTrimFromEnd());

            echo "Trim from start: " . $trimFromStart . " ms\n";
            echo "Trim from end: " . $trimFromEnd . " ms\n";
            break;
        }
    }
} finally {
    $presentation->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 biçiminde depolanır ve VideoFrame::getCaptionTracks yöntemi aracılığıyla sunulur.

Bir Video Çerçevesine Altyazı Ekleme

Bir video çerçevesine altyazı eklemek için:

  1. Bir Presentation sınıfının örneğini oluşturun.
  2. Sunuma bir video ekleyin.
  3. Bir slayta bir 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, bir video çerçevesine altyazı eklemenizi 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);

    // WebVTT dosyasından yeni bir altyazı izi ekler.
    $videoFrame->getCaptionTracks()->add("English", "track.vtt");

    $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.

Bir Video Çerçevesinden Altyazı Çıkarma

Bir video çerçevesinden altyazı çıkarmak için:

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

Aşağıdaki kod, bir video çerçevesinden altyazı çıkarmanızı 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 Captions nesnesi, altyazı tanımlayıcısını, etiketini, ikili verisini ve altyazı metnini UTF‑8 dizesi olarak sunar.

Bir Video Çerçevesinden Altyazı Silme

Bir 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ı nasıl kaldıracağınızı 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 gerektiğinde, clear yerine remove veya removeAt yöntemlerini kullanın.

Slaytlardan Video Çıkarma

Gömülü videoları slaytlardan çıkarmanıza da izin verir.

  1. Videoyu içeren sunumu yüklemek için bir Presentation sınıfının örneğini oluşturun.
  2. Tüm Slide nesneleri üzerinde yineleme yapın.
  3. Tüm Shape nesneleri üzerinde yineleme yaparak bir VideoFrame bulun.
  4. Videoyu diske kaydedin.

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

  # Bir sunum dosyasını temsil eden Presentation nesnesi oluşturur
  $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

Video çerçevesi için hangi video oynatma parametreleri değiştirilebilir?

Oynatma modunu (otomatik ya da tıklamayla) ve döngüyü kontrol edebilirsiniz. Bu seçenekler, VideoFrame nesnesinin özellikleri aracılığıyla kullanılabilir.

Video eklemek PPTX dosya boyutunu etkiler mi?

Evet. Yerel bir video gömdüğünüzde, ikili veri belgeye dahil edilir ve sunum boyutu dosya boyutuyla orantılı olarak artar. Çevrimiçi bir video eklediğinizde ise yalnızca bir bağlantı ve küçük resim gömülür, bu yüzden boyut artışı daha az olur.

Mevcut bir VideoFrame içindeki videoyu konumunu ve boyutunu değiştirmeden değiştirebilir miyim?

Evet. video content öğesini çerçeve içinde değiştirerek şeklin geometrisini koruyabilirsiniz; bu, mevcut bir düzenin medyasını güncellemek 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 bu bilgiyi okuyarak örneğin diske kaydederken kullanabilirsiniz.