.NET'te Sunumlarda Video Çerçevelerini Yönetme
Giriş
Sunumda iyi yerleştirilmiş bir video, mesajınızı daha etkileyici kılabilir ve izleyicilerinizle etkileşim seviyelerini artırabilir.
PowerPoint, bir sunumdaki slayta video eklemenize iki şekilde izin verir:
- Yerel bir video ekleyin veya gömün (makinenizde depolanmış)
- Çevrimiçi bir video ekleyin (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çevesi Oluşturma
Yerel olarak saklanan bir video dosyasını slaydınıza eklemek istiyorsanız, sunuma videoyu gömmek için bir video çerçevesi oluşturabilirsiniz.
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaydın referansını indeks üzerinden alın.
- Bir IVideo nesnesi ekleyin ve videoyu sunuma gömmek için video dosya yolunu geçirin.
- Videoyu çerçevelemek için bir IVideoFrame nesnesi ekleyin.
- Değiştirilmiş sunumu kaydedin.
Bu C# kodu, yerel olarak depolanmış bir videoyu sunuma nasıl ekleyeceğinizi gösterir:
// Presentation sınıfının bir örneğini oluşturur
using (Presentation pres = new Presentation("pres.pptx"))
{
// Videoyu yükler
using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
{
IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// İlk slaytı alır ve bir video çerçevesi ekler
pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
// Sunumu diske kaydeder
pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
}
}
Alternatif olarak, videoyu dosya yolunu doğrudan AddVideoFrame yöntemine geçirerek ekleyebilirsiniz:
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}
Web Kaynağından Video ile Video Çerçevesi Oluşturma
Yeni Microsoft PowerPoint sürümleri, sunumlarda çevrimiçi videoları destekler. Kullanmak istediğiniz video çevrimiçi (ör. YouTube) mevcutsa, web bağlantısı aracılığıyla sunuma ekleyebilirsiniz.
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaydın referansını indeks üzerinden alın.
- Bir IVideo nesnesi ekleyin ve videoya bağlantıyı geçirin.
- Video çerçevesi için bir küçük resim ayarlayın.
- Sunumu kaydedin.
Bu C# kodu, web üzerindeki bir videoyu PowerPoint sunumundaki bir slayta nasıl ekleyeceğinizi gösterir:
public static void Run()
{
// Sunum dosyasını temsil eden bir Presentation nesnesi oluşturur
using (Presentation pres = new Presentation())
{
AddVideoFromYouTube(pres, "Tj75Arhq5ho");
pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
}
}
private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
// Bir VideoFrame ekler
IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
videoFrame.PlayMode = VideoPlayModePreset.Auto;
// Küçük resmi yükler
using (WebClient client = new WebClient())
{
string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
}
}
Video Çerçevesini Kırpma
Aspose.Slides, bir videonun oynatılacak kısmını IVideoFrame.TrimFromStart ve IVideoFrame.TrimFromEnd aracılığıyla ayarlayarak kontrol etmenizi sağlar. Her iki değer de milisaniye cinsindendir ve videonun başından ve sonundan atlanacak zamanı 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:
- Presentation sınıfının bir örneğini oluşturun.
- Sunuma bir IVideo nesnesi ekleyin.
- Bir slayta bir IVideoFrame nesnesi ekleyin.
- IVideoFrame.TrimFromStart ve IVideoFrame.TrimFromEnd aracılığıyla kırpma değerlerini ayarlayın.
- Değiştirilmiş sunumu kaydedin.
Aşağıdaki kod örneği, bir gömülü videonun oynatılması sırasında ilk 2,5 saniyeyi ve son bir saniyeyi atlar:
using var presentation = new Presentation();
var videoData = File.ReadAllBytes("video.mp4");
var video = presentation.Videos.AddVideo(videoData);
var slide = presentation.Slides[0];
var videoFrame = slide.Shapes.AddVideoFrame(50, 50, 640, 360, video);
videoFrame.TrimFromStart = 2500f;
videoFrame.TrimFromEnd = 1000f;
presentation.Save("video_with_trim.pptx", SaveFormat.Pptx);
Kırpma Ayarlarını Okuma
Mevcut kırpma ayarlarını incelemek için bir sunumu yükleyin, ilk slaydın şekilleri arasındaki bir IVideoFrame nesnesini bulun ve değerleri IVideoFrame.TrimFromStart ve IVideoFrame.TrimFromEnd üzerinden okuyun.
Aşağıdaki kod örneği, ilk slayttaki ilk video çerçevesini bulur ve kırpma ayarlarını milisaniye olarak raporlar:
using var presentation = new Presentation("video_with_trim.pptx");
var slide = presentation.Slides[0];
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
var trimFromStart = videoFrame.TrimFromStart;
var trimFromEnd = videoFrame.TrimFromEnd;
Console.WriteLine($"Trim from start: {trimFromStart} ms");
Console.WriteLine($"Trim from end: {trimFromEnd} ms");
break;
}
}
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.CaptionTracks özelliği aracılığıyla erişilebilir.
Video Çerçevesine Altyazı Ekleme
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.
- CaptionTracks koleksiyonunu kullanarak bir WebVTT altyazı izini ekleyin.
- Değiştirilmiş sunumu kaydedin.
Aşağıdaki kod, bir video çerçevesine altyazı eklemenizi gösterir:
using (Presentation presentation = new Presentation())
{
byte[] videoData = File.ReadAllBytes("video.mp4");
IVideo video = presentation.Videos.AddVideo(videoData);
ISlide slide = presentation.Slides[0];
IVideoFrame videoFrame = slide.Shapes.AddVideoFrame(0, 0, 100, 100, video);
// WebVTT dosyasından yeni bir altyazı izi ekler.
videoFrame.CaptionTracks.Add("English", "track.vtt");
presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}
ICaptionsCollection arayüzü 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:
- Videoyu içeren sunumu yükleyin.
- Hedef IVideoFrame nesnesini bulun.
- CaptionTracks koleksiyonunda gezinin.
- Her altyazı izini bir
.vttdosyasına kaydedin.
Aşağıdaki kod, bir video çerçevesinden altyazı çıkarmanızı gösterir:
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
foreach (IShape shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
foreach (ICaptions captionTrack in videoFrame.CaptionTracks)
{
// Altyazı izini bir WebVTT dosyasına kaydeder.
string filePath = $"{captionTrack.CaptionId}.vtt";
File.WriteAllBytes(filePath, captionTrack.BinaryData);
}
}
}
}
Her ICaptions nesnesi, altyazı tanımlayıcısını, etiketini, ikili verisini ve altyazı metnini UTF-8 dizesi olarak ortaya koyar.
Video Çerçevesinden Altyazı Kaldırma
Video çerçevesinden altyazı kaldırmak için:
- Videoyu içeren sunumu yükleyin.
- Hedef IVideoFrame nesnesini alın.
- CaptionTracks koleksiyonundan altyazı izlerini kaldırın.
- 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:
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;
// Video çerçevesindeki tüm altyazıları kaldırır.
videoFrame.CaptionTracks.Clear();
presentation.Save("video_without_captions.pptx", SaveFormat.Pptx);
}
Yalnızca tek bir altyazı izini kaldırmak istiyorsanız, Clear yerine Remove veya RemoveAt yöntemlerini kullanın.
Slayttan Video Çıkarma
Video eklemenin yanı sıra, Aspose.Slides sunumlardaki gömülü videoları çıkarmanıza da izin verir.
- Video içeren sunumu yüklemek için bir Presentation sınıfının bir örneğini oluşturun.
- Tüm ISlide nesnelerinde gezin.
- IShape nesnelerinde gezinerek bir VideoFrame bulun.
- Videoyu diske kaydedin.
Bu C# kodu, bir sunum slaydındaki videoyu nasıl çıkaracağınızı gösterir:
// Sunum dosyasını temsil eden bir Presentation nesnesi oluşturur
Presentation presentation = new Presentation("Video.pptx");
// Slaytlar arasında döner
foreach (ISlide slide in presentation.Slides)
{
// Şekiller arasında döner
foreach (IShape shape in presentation.Slides[0].Shapes)
{
// Video içeren VideoFrame bulunduğunda videoyu diske kaydeder
if (shape is VideoFrame)
{
IVideoFrame vf = shape as IVideoFrame;
String type = vf.EmbeddedVideo.ContentType;
int ss = type.LastIndexOf('/');
type = type.Remove(0, type.LastIndexOf('/') + 1);
Byte[] buffer = vf.EmbeddedVideo.BinaryData;
using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
{
stream.Write(buffer, 0, buffer.Length);
}
}
}
}
FAQ
Bir VideoFrame için hangi video oynatma parametreleri değiştirilebilir?
playback mode (otomatik ya da tıklama) ve looping kontrol edebilirsiniz. Bu seçenekler, VideoFrame nesnesinin özellikleri aracılığıyla kullanılabilir.
Bir video eklemek PPTX dosya boyutunu etkiler mi?
Evet. Yerel bir video gömülürse, ikili veri belgeye dahil edilir ve sunum boyutu dosya boyutu ile orantılı olarak artar. Çevrimiçi bir video eklenirse, bir bağlantı ve bir küçük resim gömülür, bu yüzden boyut artışı daha küçüktür.
Mevcut bir VideoFrame’deki videoyu konumunu ve boyutunu değiştirmeden değiştirebilir miyim?
Evet. Çerçeve içindeki video content değiştirilirken şeklin geometrisi korunur; 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 okunup kullanılabilecek bir content type vardır, örneğin diske kaydederken.