Java Kullanarak Sunumlarda Video Çerçevelerini Yönetme

Giriş

Sunumda yerleştirilen doğru bir video, mesajınızı daha etkileyici hâle getirebilir ve izleyicilerinizin katılım seviyesini artırabilir.

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

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

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

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

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

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Slaytın referansını indeks aracılığıyla alın.
  3. Video dosyası yolunu geçirerek videoyu sunuma gömmek için bir IVideo nesnesi ekleyin.
  4. Video için bir çerçeve oluşturmak amacıyla 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, dosya yolunu doğrudan addVideoFrame(float x, float y, float width, float height, IVideo video) yöntemine geçirerek video ekleyebilirsiniz:

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 İçeren Çerçeveler Oluşturma

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

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Slaytın referansını indeks aracılığıyla alın.
  3. Bağlantıyı geçerek bir IVideo nesnesi ekleyin.
  4. Video çerçevesi için bir küçük resim ayarlayın.
  5. Sunumu kaydedin.

Bu Java kodu, web üzerinden 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 Çerçevesini Kırpma

Aspose.Slides, bir videonun oynatılacak kısmını, IVideoFrame.setTrimFromStart ve IVideoFrame.setTrimFromEnd aracılığıyla trim-from-start ve trim-from-end değerlerini ayarlayarak kontrol etmenizi sağlar. Her iki değer de milisaniye cinsinden belirtilir ve sırasıyla videonun başından ve sonundan ne kadar sürenin atlanacağını tanımlar. Bu ayarlar sunumdaki video oynatma ayarlarını değiştirir; gömülü video ikili verisini kesmez veya değiştirmez.

Kırpma Ayarlarını Belirleme

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

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Sunuma bir IVideo nesnesi ekleyin.
  3. Bir slayta bir IVideoFrame nesnesi ekleyin.
  4. IVideoFrame.setTrimFromStart ve IVideoFrame.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 presentation = new Presentation();
try {
    FileInputStream videoStream = new FileInputStream("video.mp4");
    try {
        IVideo video = presentation.getVideos().addVideo(
                videoStream, LoadingStreamBehavior.ReadStreamAndRelease);
        ISlide slide = presentation.getSlides().get_Item(0);
        IVideoFrame videoFrame = slide.getShapes().addVideoFrame(50, 50, 640, 360, video);

        videoFrame.setTrimFromStart(2500f);
        videoFrame.setTrimFromEnd(1000f);

        presentation.save("video_with_trim.pptx", SaveFormat.Pptx);
    } finally {
        videoStream.close();
    }
} finally {
    presentation.dispose();
}

Kırpma Ayarlarını Okuma

Mevcut kırpma ayarlarını incelemek için bir sunum yükleyin, ilk slaydın şekilleri arasında bir IVideoFrame nesnesi bulun ve değerleri IVideoFrame.getTrimFromStart ve IVideoFrame.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 rapor eder:

Presentation presentation = new Presentation("video_with_trim.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IVideoFrame) {
            IVideoFrame videoFrame = (IVideoFrame) shape;
            float trimFromStart = videoFrame.getTrimFromStart();
            float trimFromEnd = videoFrame.getTrimFromEnd();

            System.out.println("Trim from start: " + trimFromStart + " ms");
            System.out.println("Trim from end: " + trimFromEnd + " ms");
            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 formatında depolanır ve IVideoFrame.getCaptionTracks yöntemi aracılığıyla erişilir.

Bir Video Çerçevesine Altyazı Ekleme

Bir 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 bir IVideoFrame nesnesi ekleyin.
  4. getCaptionTracks tarafından döndürülen ICaptionsCollection aracılığıyla bir WebVTT altyazı izi ekleyin.
  5. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod, bir video çerçevesine nasıl altyazı ekleneceğini 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ı eklemenize izin veren bir aşırı yükleme sunar.

Bir Video Çerçevesinden Altyazı Çıkarma

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

  1. Video içeren sunumu yükleyin.
  2. Hedef IVideoFrame nesnesini bulun.
  3. ICaptionsCollection içindeki altyazı izleri üzerinde döngü yapın.
  4. Her bir altyazı izini .vtt dosyasına kaydedin.

Aşağıdaki kod, bir video çerçevesinden altyazıların nasıl çıkarılacağını 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ı Silme

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

  1. Video 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ırmak istiyorsanız, clear yerine remove veya removeAt yöntemlerini kullanın.

Slaytlardan Video Çıkarma

Videoları slaytlara eklemenin yanı sıra Aspose.Slides, sunumlarda gömülü videoları çıkarmanıza da olanak tanır.

  1. Videoyu içeren sunumu yüklemek için Presentation sınıfının bir örneğini oluşturun.
  2. Tüm ISlide nesneleri üzerinde döngü yapın.
  3. IShape nesneleri içinde bir VideoFrame bulmak için döngü yapın.
  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ıklama) ve looping kontrol edilebilir. Bu seçenekler, VideoFrame nesnesinin özellikleri aracılığıyla bulunur.

Bir 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 bir bağlantı ve küçük resim gömülür, bu yüzden boyut artışı daha küçüktür.

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

Evet. Çerçevedeki video content değiştirilerek şeklin geometrisi korunabilir; bu, mevcut bir düzen içinde medyayı güncellemenin yaygın bir senaryosudur.

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.