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.
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeks aracılığıyla alın.
- Video dosyası yolunu geçirerek videoyu sunuma gömmek için bir IVideo nesnesi ekleyin.
- Video için bir çerçeve oluşturmak amacıyla bir IVideoFrame nesnesi ekleyin.
- 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.
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeks aracılığıyla alın.
- Bağlantıyı geçerek bir IVideo nesnesi ekleyin.
- Video çerçevesi için bir küçük resim ayarlayın.
- 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:
- Presentation sınıfının bir örneğini oluşturun.
- Sunuma bir IVideo nesnesi ekleyin.
- Bir slayta bir IVideoFrame nesnesi ekleyin.
- IVideoFrame.setTrimFromStart ve IVideoFrame.setTrimFromEnd aracılığıyla trim-from-start ve trim-from-end değerlerini ayarlayın.
- 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:
- Presentation sınıfının bir örneğini oluşturun.
- Sunuma bir video ekleyin.
- Bir slayta bir IVideoFrame nesnesi ekleyin.
- getCaptionTracks tarafından döndürülen ICaptionsCollection aracılığıyla bir WebVTT altyazı izi ekleyin.
- 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:
- Video içeren sunumu yükleyin.
- Hedef IVideoFrame nesnesini bulun.
- ICaptionsCollection içindeki altyazı izleri üzerinde döngü yapın.
- Her bir altyazı izini
.vttdosyası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:
- Video içeren sunumu yükleyin.
- Hedef IVideoFrame nesnesini alın.
- ICaptionsCollection içindeki altyazı izlerini kaldırın.
- 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.
- Videoyu içeren sunumu yüklemek için Presentation sınıfının bir örneğini oluşturun.
- Tüm ISlide nesneleri üzerinde döngü yapın.
- IShape nesneleri içinde bir VideoFrame bulmak için döngü yapın.
- 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.