Mengonversi Presentasi PowerPoint ke Video di .NET

Pendahuluan

Dengan mengonversi presentasi PowerPoint atau OpenDocument Anda ke video, Anda mendapatkan:

Aksesibilitas yang meningkat: Semua perangkat, tanpa memandang platform, dilengkapi dengan pemutar video secara bawaan, sehingga memudahkan pengguna untuk membuka atau memutar video dibandingkan dengan aplikasi presentasi tradisional.

Jangkauan yang lebih luas: Video memungkinkan Anda menjangkau audiens yang lebih besar dan menyajikan informasi dalam format yang lebih menarik. Survei dan statistik menunjukkan bahwa orang lebih suka menonton dan mengonsumsi konten video dibandingkan bentuk lain, sehingga pesan Anda menjadi lebih berdampak.

Di Aspose.Slides untuk .NET, kami telah menambahkan dukungan untuk mengonversi presentasi ke video.

  • Gunakan Aspose.Slides untuk .NET untuk menghasilkan frame dari slide presentasi dengan laju frame tertentu (FPS).
  • Kemudian, gunakan utilitas pihak ketiga seperti ffmpeg untuk mengompilasi frame-frame tersebut menjadi video.

Mengonversi Presentasi PowerPoint ke Video

  1. Gunakan perintah dotnet add package untuk menambahkan Aspose.Slides dan pustaka FFMpegCore ke proyek Anda:
    • jalankan dotnet add package Aspose.Slides.NET --version 22.11.0
    • jalankan dotnet add package FFMpegCore --version 4.8.0
  2. Unduh ffmpeg dari sini.
  3. FFMpegCore mengharuskan Anda menentukan path ke ffmpeg yang diunduh (misalnya, diekstrak ke “C:\tools\ffmpeg”):
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
  1. Jalankan kode konversi PowerPoint-ke-video.

Kode C# ini menunjukkan cara mengonversi presentasi (yang berisi sebuah shape dan dua efek animasi) menjadi video:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // akan menggunakan binary FFmpeg yang telah kami ekstrak ke C:\tools\ffmpeg sebelumnya.
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Tambahkan bentuk smile dan kemudian animasikan.
    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);
    }

    // Konfigurasikan folder binary ffmpeg. Lihat halaman ini: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // Konversi frame menjadi video webm.
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

Efek Video

Ketika mengonversi presentasi PowerPoint ke video menggunakan Aspose.Slides untuk .NET, Anda dapat menerapkan berbagai efek video untuk meningkatkan kualitas visual output. Efek-efek ini memungkinkan Anda mengontrol tampilan slide dalam video akhir dengan menambahkan transisi halus, animasi, dan elemen visual lainnya. Bagian ini menjelaskan opsi efek video yang tersedia dan menunjukkan cara menerapkannya.

Animasi dan transisi membuat slideshow lebih menarik dan menarik — dan hal yang sama berlaku untuk video. Mari tambahkan slide lain dan transisi ke kode untuk presentasi sebelumnya:

// Tambahkan bentuk smile dan animasikan.
// ...

// Tambahkan slide baru dan transisi animasi.
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 juga mendukung animasi teks. Dalam contoh ini, kami menganimasikan paragraf pada objek sehingga mereka muncul satu per satu, dengan jeda satu detik di antara mereka:

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];

    // Tambahkan teks dan animasi.
    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);
    }

    // Konfigurasikan folder binary ffmpeg. Lihat halaman ini: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // Konversi frame menjadi video webm.
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

Kelas Konversi Video

Untuk memungkinkan tugas konversi PowerPoint ke video, Aspose.Slides untuk .NET menyediakan kelas PresentationAnimationsGenerator dan PresentationPlayer.

PresentationAnimationsGenerator memungkinkan Anda mengatur ukuran frame untuk video (yang akan dibuat nanti) dan nilai FPS (frame per detik) melalui konstruktornya. Jika Anda memberikan instance presentasi, Presentation.SlideSize‑nya akan digunakan dan ia menghasilkan animasi yang digunakan oleh PresentationPlayer.

Ketika animasi dihasilkan, peristiwa NewAnimation dipicu untuk setiap animasi berikutnya, yang menyertakan parameter IPresentationAnimationPlayer. Kelas ini mewakili pemutar untuk satu animasi.

Untuk bekerja dengan IPresentationAnimationPlayer, Anda menggunakan properti Duration (yang memberikan durasi penuh animasi) dan metode SetTimePosition. Setiap posisi animasi diatur dalam rentang 0 sampai duration, dan metode GetFrame kemudian mengembalikan Bitmap yang mewakili keadaan animasi pada titik waktu tersebut.

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Tambahkan bentuk smile dan animasikan.
    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);          // Keadaan animasi awal.
            Bitmap bitmap = animationPlayer.GetFrame();  // Bitmap keadaan animasi awal.

            animationPlayer.SetTimePosition(animationPlayer.Duration);  // Keadaan akhir animasi.
            Bitmap lastBitmap = animationPlayer.GetFrame();             // Frame terakhir animasi.
            lastBitmap.Save("last.png");
        };
    }
}

Untuk membuat semua animasi dalam sebuah presentasi diputar sekaligus, kelas PresentationPlayer digunakan. Kelas ini menerima instance PresentationAnimationsGenerator dan nilai FPS untuk efek dalam konstruktornya, lalu memanggil peristiwa FrameTick untuk semua animasi agar diputar:

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);
    }
}

Kemudian frame yang dihasilkan dapat dikompilasi menjadi video. Lihat bagian Convert a PowerPoint Presentation to Video.

Animasi dan Efek yang Didukung

Ketika mengonversi presentasi PowerPoint ke video menggunakan Aspose.Slides untuk .NET, penting untuk memahami animasi dan efek mana yang didukung dalam output. Aspose.Slides mendukung berbagai efek masuk, keluar, dan penekanan umum seperti fade, fly in, zoom, dan spin. Namun, beberapa animasi lanjutan atau kustom mungkin tidak sepenuhnya dipertahankan atau muncul berbeda dalam video akhir. Bagian ini merangkum animasi dan efek yang didukung.

Entrance:

Jenis Animasi Aspose.Slides PowerPoint
Appear not supported supported
Fade supported supported
Fly In supported supported
Float In supported supported
Split supported supported
Wipe supported supported
Shape supported supported
Wheel supported supported
Random Bars supported supported
Grow & Turn not supported supported
Zoom supported supported
Swivel supported supported
Bounce supported supported

Emphasis:

Jenis Animasi Aspose.Slides PowerPoint
Pulse not supported supported
Color Pulse not supported supported
Teeter supported supported
Spin supported supported
Grow/Shrink not supported supported
Desaturate not supported supported
Darken not supported supported
Lighten not supported supported
Transparency not supported supported
Object Color not supported supported
Complementary Color not supported supported
Line Color not supported supported
Fill Color not supported supported

Exit:

Jenis Animasi Aspose.Slides PowerPoint
Disappear not supported supported
Fade supported supported
Fly Out supported supported
Float Out supported supported
Split supported supported
Wipe supported supported
Shape supported supported
Random Bars supported supported
Shrink & Turn not supported supported
Zoom supported supported
Swivel supported supported
Bounce supported supported

Motion Paths:

Jenis Animasi Aspose.Slides PowerPoint
Lines supported supported
Arcs supported supported
Turns supported supported
Shapes supported supported
Loops supported supported
Custom Path supported supported

Efek Transisi Slide yang Didukung

Efek transisi slide berperan penting dalam menciptakan perubahan yang halus dan menarik secara visual antara slide dalam video. Aspose.Slides untuk .NET mendukung berbagai efek transisi yang umum digunakan untuk membantu mempertahankan alur dan gaya presentasi asli Anda. Bagian ini menyoroti efek transisi mana yang didukung selama proses konversi.

Halus:

Jenis Animasi Aspose.Slides PowerPoint
Morph not supported supported
Fade supported supported
Push supported supported
Pull supported supported
Wipe supported supported
Split supported supported
Reveal not supported supported
Random Bars supported supported
Shape not supported supported
Uncover not supported supported
Cover supported supported
Flash supported supported
Strips supported supported

Menarik:

Jenis Animasi Aspose.Slides PowerPoint
Fall Over not supported supported
Drape not supported supported
Curtains not supported supported
Wind not supported supported
Prestige not supported supported
Fracture not supported supported
Crush not supported supported
Peel Off not supported supported
Page Curl not supported supported
Airplane not supported supported
Origami not supported supported
Dissolve supported supported
Checkerboard not supported supported
Blinds not supported supported
Clock supported supported
Ripple not supported supported
Honeycomb not supported supported
Glitter not supported supported
Vortex not supported supported
Shred not supported supported
Switch not supported supported
Flip not supported supported
Gallery not supported supported
Cube not supported supported
Doors not supported supported
Box not supported supported
Comb not supported supported
Zoom supported supported
Random not supported supported

Konten Dinamis:

Jenis Animasi Aspose.Slides PowerPoint
Pan not supported supported
Ferris Wheel supported supported
Conveyor not supported supported
Rotate not supported supported
Orbit not supported supported
Fly Through supported supported

FAQ

Apakah memungkinkan mengonversi presentasi yang dilindungi kata sandi?

Ya, Aspose.Slides untuk .NET memungkinkan bekerja dengan presentasi yang dilindungi kata sandi. Saat memproses file semacam itu, Anda perlu menyediakan kata sandi yang benar agar perpustakaan dapat mengakses konten presentasi.

Apakah Aspose.Slides untuk .NET mendukung penggunaan dalam solusi cloud?

Ya, Aspose.Slides untuk .NET dapat diintegrasikan ke dalam aplikasi dan layanan cloud. Perpustakaan ini dirancang untuk bekerja di lingkungan server, memastikan kinerja tinggi dan skalabilitas untuk pemrosesan batch file.

Apakah ada batasan ukuran untuk presentasi selama konversi?

Aspose.Slides untuk .NET mampu menangani presentasi dengan ukuran apa pun secara praktis. Namun, saat bekerja dengan file yang sangat besar, sumber daya sistem tambahan mungkin diperlukan, dan seringkali disarankan untuk mengoptimalkan presentasi guna meningkatkan kinerja.