Java Kullanarak Sunumlarda Video Çerçevelerini Yönetme

Giriş

İyi yerleştirilmiş bir video, mesajınızı daha çekici hâle getirebilir ve izleyicilerinizin katılım seviyesini artırabilir.

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

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

Sunuma video (video nesneleri) eklemenizi sağlamak için Aspose.Slides, IVideo arayüzünü, IVideoFrame arayüzünü ve diğer ilgili türleri sağlar.

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

Slayda eklemek istediğiniz video dosyası yerel olarak depolanmışsa, videoyu sunumunuza gömmek için bir video çerçevesi oluşturabilirsiniz.

  1. Create an instance of the Presentation class.
  2. Slaytın indeks üzerinden referansını alın.
  3. Videoyu sunuma gömmek için video dosya yolunu geçerek bir IVideo nesnesi ekleyin.
  4. Video için bir çerçeve oluşturmak üzere bir IVideoFrame nesnesi ekleyin.
  5. Değiştirilmiş sunumu kaydedin.

Bu Java kodu, yerel olarak depolanmış bir videoyu sunuma nasıl ekleyeceğinizi gösterir:

// Presentation sınıfını örnekler
Presentation pres = new Presentation("pres.pptx");
try {
    // Videoyu yükler
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo 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 (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Alternatif olarak, videonun dosya yolunu doğrudan addVideoFrame(float x, float y, float width, float height, IVideo video) metoduna geçirebilirsiniz:

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

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

Microsoft PowerPoint 2013 ve sonraki sürümleri sunumlarda YouTube videolarını destekler. Eğer kullanmak istediğiniz video çevrimiçi olarak mevcutsa (ör. YouTube’da), web bağlantısı aracılığıyla sunuma ekleyebilirsiniz.

  1. Create an instance of Presentation class
  2. Slaytın indeks üzerinden referansını alın.
  3. Bir IVideo nesnesi ekleyin ve videonun bağlantısını geçin.
  4. Video çerçevesi için bir küçük resim ayarlayın.
  5. Sunumu kaydedin.

Bu Java kodu, web üzerindeki bir videoyu PowerPoint sunumundaki bir slayta nasıl ekleyeceğinizi gösterir:

// Bir sunum dosyasını temsil eden Presentation nesnesini örnekler 
Presentation pres = new Presentation();
try {
    addVideoFromYouTube(pres, "Tj75Arhq5ho");
    pres.save("out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
private static void addVideoFromYouTube(Presentation pres, String videoID)
{
    // Bir video çerçevesi ekler
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // Küçük resmi yükler
    String thumbnailUri = "http://img.youtube.com/vi/" + videoID + "/hqdefault.jpg";
    URL url;

    try {
        url = new URL(thumbnailUri);
        videoFrame.getPictureFormat().getPicture().setImage(pres.getImages().addImage(url.openStream()));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Video Altyazılarını Yönetme

Aspose.Slides, PowerPoint sunumlarındaki video çerçeveleri için kapalı altyazıları yönetmenize olanak tanır. Altyazılar WebVTT formatında depolanır ve IVideoFrame.getCaptionTracks yöntemi aracılığıyla elde edilir.

Bir Video Çerçevesine Altyazı Ekleme

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

  1. Create an instance of the Presentation class.
  2. Sunuma bir video ekleyin.
  3. Bir slayta IVideoFrame nesnesi ekleyin.
  4. getCaptionTracks tarafından döndürülen ICaptionsCollection nesnesini kullanarak bir WebVTT altyazı izi ekleyin.
  5. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod, bir video çerçevesine nasıl altyazı ekleyeceğinizi gösterir:

Presentation presentation = new Presentation();
try {
    byte[] videoData = Files.readAllBytes(Paths.get("video.mp4"));
    IVideo video = presentation.getVideos().addVideo(videoData);

    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame 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();
}

ICaptionsCollection arayüzü 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 IVideoFrame nesnesini bulun.
  3. ICaptionsCollection içindeki altyazı izlerini döngüyle gezinin.
  4. Her altyazı izini bir .vtt dosyasına kaydedin.

Aşağıdaki kod, bir video çerçevesinden nasıl altyazı çıkaracağınızı gösterir:

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IVideoFrame) {
            IVideoFrame videoFrame = (IVideoFrame)shape;
            for (ICaptions captionTrack : videoFrame.getCaptionTracks()) {
                // Altyazı izini bir WebVTT dosyasına kaydeder.
                String filePath = captionTrack.getCaptionId().toString() + ".vtt";
                Files.write(Paths.get(filePath), captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

Her ICaptions nesnesi, altyazı tanımlayıcısını, etiketini, ikili verisini ve UTF‑8 dizesi olarak altyazı metnini ortaya çıkarır.

Bir Video Çerçevesinden Altyazı Kaldırma

Bir video çerçevesinden altyazı kaldırmak için:

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

Aşağıdaki kod, bir video çerçevesindeki tüm altyazıların nasıl kaldırılacağını gösterir:

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = (IVideoFrame)slide.getShapes().get_Item(0);

    // 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, remove veya removeAt yöntemlerini, clear yerine kullanın.

Slaytlardan Video Çıkarma

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

  1. Create an instance of the Presentation class to load the presentation containing the video.
  2. Tüm ISlide nesnelerini döngüyle gezinin.
  3. IShape nesnelerini döngüyle gezerek bir VideoFrame bulun.
  4. Videoyu diske kaydedin.

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

// Bir sunum dosyasını temsil eden Presentation nesnesini örnekler 
Presentation pres = new Presentation("VideoSample.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        for (IShape shape : slide.getShapes()) 
        {
            if (shape instanceof VideoFrame) 
            {
                IVideoFrame vf = (IVideoFrame) shape;
                String type = vf.getEmbeddedVideo().getContentType();
                int ss = type.lastIndexOf('-');
                byte[] buffer = vf.getEmbeddedVideo().getBinaryData();

                // Dosya uzantısını alır
                int charIndex = type.indexOf("/");
                type = type.substring(charIndex + 1);

                FileOutputStream fop = new FileOutputStream("testing2." + type);
                fop.write(buffer);
                fop.flush();
                fop.close();
            }
        }
    }
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

SSS

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

playback mode (otomatik veya tıklamayla) ve looping kontrol edilebilir. Bu seçenekler VideoFrame nesnesinin özellikleri aracılığıyla kullanılabilir.

Bir video eklemek PPTX dosya boyutunu etkiler mi?

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

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

Evet. Şeklin geometrisini koruyarak çerçeve içindeki video content değiştirebilirsiniz; bu, mevcut bir yerleşimde medyayı 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 okunabilir ve örneğin diske kaydederken kullanılabilir.