PowerPoint Sunumlarını .NET'te Videoya Dönüştürme
Giriş
PowerPoint ya da OpenDocument sunumunuzu videoya dönüştürerek şunları elde edersiniz:
Arttırılmış erişilebilirlik: Tüm cihazlar, platformdan bağımsız olarak, varsayılan olarak video oynatıcılarıyla gelir, bu da kullanıcıların geleneksel sunum uygulamalarına göre videoları açmasını veya oynatmasını kolaylaştırır.
Daha geniş erişim: Videolar, daha geniş bir izleyici kitlesine ulaşmanızı ve bilgiyi daha ilgi çekici bir formatta sunmanızı sağlar. Anketler ve istatistikler, insanların diğer formatlara göre video içeriğini izlemeyi ve tüketmeyi tercih ettiğini gösterir, bu da mesajınızın daha etkili olmasını sağlar.
Aspose.Slides for .NET’te sunumları videoya dönüştürme desteği ekledik.
- Aspose.Slides for .NET’i kullanarak sunum slaytlarından belirli bir kare hızı (FPS) ile çerçeveler oluşturun.
- Ardından, ffmpeg gibi bir üçüncü taraf yardımcı programı kullanarak bu çerçeveleri bir videoya derleyin.
PowerPoint Sunumunu Videoya Dönüştürme
- Projenize Aspose.Slides ve FFMpegCore kütüphanesini eklemek için
dotnet add packagekomutunu kullanın:dotnet add package Aspose.Slides.NET --version 22.11.0çalıştırındotnet add package FFMpegCore --version 4.8.0çalıştırın
- ffmpeg’i buradan indirin.
- FFMpegCore, indirilen ffmpeg’in yolunu belirtmenizi ister (örneğin, “C:\tools\ffmpeg” klasörüne çıkarıldı):
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
- PowerPoint‑to‑video dönüşüm kodunu çalıştırın.
Bu C# kodu, bir şekil ve iki animasyon efekti içeren bir sunumu videoya dönüştürmeyi gösterir:
using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // daha önce C:\tools\ffmpeg'e çıkardığımız FFmpeg ikili dosyalarını kullanacak.
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Bir gülümseme şekli ekleyin ve ardından animasyon ekleyin.
IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
IEffect effectOut = slide.Timeline.MainSequence.AddEffect(
smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
effectIn.Timing.Duration = 2f;
effectOut.PresetClassType = EffectPresetClassType.Exit;
const int Fps = 33;
List<string> frames = new List<string>();
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
using (var player = new PresentationPlayer(animationsGenerator, Fps))
{
player.FrameTick += (sender, args) =>
{
string frame = $"frame_{(sender.FrameIndex):D4}.png";
args.GetFrame().Save(frame);
frames.Add(frame);
};
animationsGenerator.Run(presentation.Slides);
}
// ffmpeg ikili dosyaları klasörünü yapılandırın. Bu sayfaya bakın: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
// Kareleri bir webm videosuna dönüştürün.
FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Video Efektleri
Aspose.Slides for .NET kullanarak bir PowerPoint sunumunu videoya dönüştürürken, çıkışın görsel kalitesini artırmak için çeşitli video efektleri uygulayabilirsiniz. Bu efektler, final videoda slaytların görünümünü pürüzsüz geçişler, animasyonlar ve diğer görsel öğeler ekleyerek kontrol etmenizi sağlar. Bu bölüm, mevcut video efekt seçeneklerini açıklar ve nasıl uygulanacağını gösterir.
Bakınız:
Animasyonlar ve geçişler slayt gösterilerini daha ilgi çekici hâle getirir — videolar için de aynı şey geçerlidir. Önceki sunum koduna bir slayt ve geçiş ekleyelim:
// Bir gülümseme şekli ekleyin ve animasyon uygulayın.
// ...
// Yeni bir slayt ekleyin ve animasyonlu bir geçiş ekleyin.
ISlide newSlide = presentation.Slides.AddEmptySlide(presentation.Slides[0].LayoutSlide);
newSlide.Background.Type = BackgroundType.OwnBackground;
newSlide.Background.FillFormat.FillType = FillType.Solid;
newSlide.Background.FillFormat.SolidFillColor.Color = Color.Indigo;
newSlide.SlideShowTransition.Type = TransitionType.Push;
Aspose.Slides ayrıca metin animasyonlarını da destekler. Bu örnekte, nesneler üzerindeki paragraf ları birbiri ardına, aralarında bir saniyelik gecikme olacak şekilde animasyonluyoruz:
using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Metin ve animasyonlar ekle.
IAutoShape autoShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
Paragraph para1 = new Paragraph();
para1.Portions.Add(new Portion("Aspose Slides for .NET"));
Paragraph para2 = new Paragraph();
para2.Portions.Add(new Portion("Convert a PowerPoint presentation with text to video"));
Paragraph para3 = new Paragraph();
para3.Portions.Add(new Portion("paragraph by paragraph"));
autoShape.TextFrame.Paragraphs.Add(para1);
autoShape.TextFrame.Paragraphs.Add(para2);
autoShape.TextFrame.Paragraphs.Add(para3);
autoShape.TextFrame.Paragraphs.Add(new Paragraph());
IEffect effect1 = slide.Timeline.MainSequence.AddEffect(
para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect2 = slide.Timeline.MainSequence.AddEffect(
para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect3 = slide.Timeline.MainSequence.AddEffect(
para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect4 = slide.Timeline.MainSequence.AddEffect(
para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
effect1.Timing.TriggerDelayTime = 1f;
effect2.Timing.TriggerDelayTime = 1f;
effect3.Timing.TriggerDelayTime = 1f;
effect4.Timing.TriggerDelayTime = 1f;
const int Fps = 33;
List<string> frames = new List<string>();
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
using (var player = new PresentationPlayer(animationsGenerator, Fps))
{
player.FrameTick += (sender, args) =>
{
string frame = $"frame_{(sender.FrameIndex):D4}.png";
args.GetFrame().Save(frame);
frames.Add(frame);
};
animationsGenerator.Run(presentation.Slides);
}
// ffmpeg ikili dosyaları klasörünü yapılandırın. Bu sayfaya bakın: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
// Kareleri bir webm videosuna dönüştürün.
FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Video Dönüştürme Sınıfları
PowerPoint‑to‑video dönüşüm görevlerini etkinleştirmek için Aspose.Slides for .NET, PresentationAnimationsGenerator ve PresentationPlayer sınıflarını sağlar.
PresentationAnimationsGenerator, video için çerçeve boyutunu (daha sonra oluşturulacak) ve saniyedeki kare (FPS) değerini kurucusu aracılığıyla ayarlamanıza olanak tanır. Bir sunum örneği geçirirseniz, Presentation.SlideSize kullanılacak ve bu sınıf, PresentationPlayer tarafından kullanılan animasyonları üretir.
Animasyonlar üretildiğinde, her ardışık animasyon için bir NewAnimation olayı tetiklenir; bu olay bir IPresentationAnimationPlayer parametresi içerir. Bu sınıf, tek bir animasyonun oynatıcısını temsil eder.
IPresentationAnimationPlayer ile çalışırken, tam animasyon süresini veren Duration özelliğini ve SetTimePosition metodunu kullanırsınız. Her animasyon konumu 0 ile duration aralığında ayarlanır ve GetFrame metodu o noktadaki animasyon durumunu gösteren bir Bitmap döndürür.
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Bir gülümseme şekli ekleyin ve animasyon uygulayın.
IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
IEffect effectOut = slide.Timeline.MainSequence.AddEffect(
smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
effectIn.Timing.Duration = 2f;
effectOut.PresetClassType = EffectPresetClassType.Exit;
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
{
animationsGenerator.NewAnimation += animationPlayer =>
{
Console.WriteLine($"Total animation duration: {animationPlayer.Duration}");
animationPlayer.SetTimePosition(0); // Animasyonun ilk durumu.
Bitmap bitmap = animationPlayer.GetFrame(); // Animasyonun ilk durumu bitmap'i.
animationPlayer.SetTimePosition(animationPlayer.Duration); // Animasyonun son durumu.
Bitmap lastBitmap = animationPlayer.GetFrame(); // Animasyonun son karesi.
lastBitmap.Save("last.png");
};
}
}
Tüm animasyonların aynı anda oynatılmasını sağlamak için PresentationPlayer sınıfı kullanılır. Bu sınıf, kurucusunda bir PresentationAnimationsGenerator örneği ve efektler için bir FPS değeri alır, ardından tüm animasyonları oynatmak için FrameTick olayını tetikler:
using (Presentation presentation = new Presentation("animated.pptx"))
{
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
using (var player = new PresentationPlayer(animationsGenerator, 33))
{
player.FrameTick += (sender, args) =>
{
args.GetFrame().Save($"frame_{sender.FrameIndex}.png");
};
animationsGenerator.Run(presentation.Slides);
}
}
Oluşturulan çerçeveler daha sonra birleştirilerek video üretilir. Bununla ilgili ayrıntıyı PowerPoint Sunumunu Videoya Dönüştürme bölümünde bulabilirsiniz.
Desteklenen Animasyonlar ve Efektler
Aspose.Slides for .NET kullanarak bir PowerPoint sunumunu videoya dönüştürürken, çıkışta hangi animasyonların ve efektlerin desteklendiğini anlamak önemlidir. Aspose.Slides, solma, kaydırma, yakınlaştırma ve döndürme gibi yaygın giriş, çıkış ve vurgu efektlerinin geniş bir yelpazesini destekler. Ancak bazı ileri düzey veya özel animasyonlar tam olarak korunmayabilir ya da final videoda farklı görünebilir. Aşağıda desteklenen animasyon ve efektler özetlenmiştir.
Giriş:
| Animasyon Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Görünme | ![]() |
![]() |
| Soldurma | ![]() |
![]() |
| Uçuş İçeri | ![]() |
![]() |
| Yüzme İçeri | ![]() |
![]() |
| Bölünme | ![]() |
![]() |
| Silme | ![]() |
![]() |
| Şekil | ![]() |
![]() |
| Tekerlek | ![]() |
![]() |
| Rastgele Çubuklar | ![]() |
![]() |
| Büyü & Dön | ![]() |
![]() |
| Yakınlaştırma | ![]() |
![]() |
| Dönme | ![]() |
![]() |
| Sıçrama | ![]() |
![]() |
Vurgu:
| Animasyon Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Darbe | ![]() |
![]() |
| Renk Darbesi | ![]() |
![]() |
| Osilasyon | ![]() |
![]() |
| Dönme | ![]() |
![]() |
| Büyü/Küçül | ![]() |
![]() |
| Desaturasyon | ![]() |
![]() |
| Karanlıklaştırma | ![]() |
![]() |
| Aydınlatma | ![]() |
![]() |
| Şeffaflık | ![]() |
![]() |
| Nesne Rengi | ![]() |
![]() |
| Tamamlayıcı Renk | ![]() |
![]() |
| Çizgi Rengi | ![]() |
![]() |
| Dolgu Rengi | ![]() |
![]() |
Çıkış:
| Animasyon Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Kaybolma | ![]() |
![]() |
| Soldurma | ![]() |
![]() |
| Uçuş Dışarı | ![]() |
![]() |
| Yüzme Dışarı | ![]() |
![]() |
| Bölünme | ![]() |
![]() |
| Silme | ![]() |
![]() |
| Şekil | ![]() |
![]() |
| Rastgele Çubuklar | ![]() |
![]() |
| Küçül & Dön | ![]() |
![]() |
| Yakınlaştırma | ![]() |
![]() |
| Dönme | ![]() |
![]() |
| Sıçrama | ![]() |
![]() |
Hareket Yolları:
| Animasyon Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Çizgiler | ![]() |
![]() |
| Kemerler | ![]() |
![]() |
| Dönüşler | ![]() |
![]() |
| Şekiller | ![]() |
![]() |
| Döngüler | ![]() |
![]() |
| Özel Yol | ![]() |
![]() |
Desteklenen Slayt Geçiş Efektleri
Slayt geçiş efektleri, bir videoda slaytlar arasındaki değişiklikleri pürüzsüz ve görsel açıdan çekici hâle getirmede önemli bir rol oynar. Aspose.Slides for .NET, orijinal sunumunuzun akışını ve stilini korumak için çeşitli yaygın geçiş efektlerini destekler. Aşağıda dönüşüm sırasında desteklenen geçiş efektleri listelenmiştir.
İnce:
| Geçiş Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Push | ![]() |
![]() |
| Pull | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Split | ![]() |
![]() |
| Reveal | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Uncover | ![]() |
![]() |
| Cover | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Strips | ![]() |
![]() |
Heyecanlı:
| Geçiş Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Fall Over | ![]() |
![]() |
| Drape | ![]() |
![]() |
| Curtains | ![]() |
![]() |
| Wind | ![]() |
![]() |
| Prestige | ![]() |
![]() |
| Fracture | ![]() |
![]() |
| Crush | ![]() |
![]() |
| Peel Off | ![]() |
![]() |
| Page Curl | ![]() |
![]() |
| Airplane | ![]() |
![]() |
| Origami | ![]() |
![]() |
| Dissolve | ![]() |
![]() |
| Checkerboard | ![]() |
![]() |
| Blinds | ![]() |
![]() |
| Clock | ![]() |
![]() |
| Ripple | ![]() |
![]() |
| Honeycomb | ![]() |
![]() |
| Glitter | ![]() |
![]() |
| Vortex | ![]() |
![]() |
| Shred | ![]() |
![]() |
| Switch | ![]() |
![]() |
| Flip | ![]() |
|
| Gallery | ![]() |
![]() |
| Cube | ![]() |
![]() |
| Doors | ![]() |
![]() |
| Box | ![]() |
![]() |
| Comb | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Random | ![]() |
![]() |
Dinamik İçerik:
| Geçiş Tipi | Aspose.Slides | PowerPoint |
|---|---|---|
| Pan | ![]() |
![]() |
| Ferris Wheel | ![]() |
![]() |
| Conveyor | ![]() |
![]() |
| Rotate | ![]() |
![]() |
| Orbit | ![]() |
![]() |
| Fly Through | ![]() |
![]() |
Sıkça Sorulan Sorular
Şifre korumalı sunumları dönüştürmek mümkün mü?
Evet, Aspose.Slides for .NET şifreyle korunan sunumlarla çalışmaya izin verir. Bu dosyaları işlerken doğru şifreyi sağlamanız gerekir; böylece kütüphane sunumun içeriğine erişebilir.
Aspose.Slides for .NET bulut çözümlerinde kullanılabilir mi?
Evet, Aspose.Slides for .NET bulut uygulamaları ve hizmetlerine entegre edilebilir. Kütüphane, sunucu ortamlarında çalışmak üzere tasarlanmıştır ve toplu dosya işleme için yüksek performans ve ölçeklenebilirlik sunar.
Dönüştürme sırasında sunumların boyutlarıyla ilgili sınırlamalar var mı?
Aspose.Slides for .NET neredeyse herhangi bir boyuttaki sunumu işleyebilir. Ancak çok büyük dosyalarla çalışırken ek sistem kaynaklarına ihtiyaç duyulabilir ve performansı artırmak için sunumu optimize etmek önerilir.

