Konwertowanie prezentacji PowerPoint na wideo w .NET

Wprowadzenie

Konwertując swoją prezentację PowerPoint lub OpenDocument do wideo, uzyskujesz:

Zwiększona dostępność: Wszystkie urządzenia, niezależnie od platformy, są domyślnie wyposażone w odtwarzacze wideo, co ułatwia użytkownikom otwieranie lub odtwarzanie wideo w porównaniu z tradycyjnymi aplikacjami do prezentacji.

Szerszy zasięg: Wideo umożliwia dotarcie do większej grupy odbiorców i przedstawienie informacji w bardziej angażującym formacie. Badania i statystyki wskazują, że ludzie wolą oglądać i konsumować treści wideo niż inne formy, co czyni Twoje przesłanie bardziej wpływowym.

W Aspose.Slides for .NET wprowadziliśmy obsługę konwertowania prezentacji na wideo.

  • Użyj Aspose.Slides for .NET do generowania klatek z slajdów prezentacji ze wskazaną liczbą klatek na sekundę (FPS).
  • Następnie użyj narzędzia zewnętrznego, takiego jak ffmpeg, aby złożyć te klatki w wideo.

Konwertuj prezentację PowerPoint na wideo

  1. Użyj polecenia dotnet add package, aby dodać Aspose.Slides oraz bibliotekę FFMpegCore do swojego projektu:
    • uruchom dotnet add package Aspose.Slides.NET --version 22.11.0
    • uruchom dotnet add package FFMpegCore --version 4.8.0
  2. Pobierz ffmpeg z tutaj.
  3. FFMpegCore wymaga podania ścieżki do pobranego ffmpeg (np. wypakowanego do „C:\tools\ffmpeg”):
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
  1. Uruchom kod konwertujący PowerPoint na wideo.

Ten kod C# demonstruje, jak przekonwertować prezentację (zawierającą kształt i dwa efekty animacji) na wideo:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // będzie używać binarek FFmpeg, które wcześniej wyodrębniliśmy do C:\tools\ffmpeg.
using Aspose.Slides.Animation;

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

    // Dodaj kształt uśmiechu, a następnie go animuj.
    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);
    }

    // Skonfiguruj folder z binarkami ffmpeg. Zobacz tę stronę: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // Konwertuj klatki na wideo webm.
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

Efekty wideo

Podczas konwertowania prezentacji PowerPoint na wideo przy użyciu Aspose.Slides for .NET możesz zastosować różne efekty wideo, aby podnieść jakość wizualną rezultatu. Efekty te pozwalają kontrolować wygląd slajdów w końcowym wideo poprzez dodanie płynnych przejść, animacji i innych elementów wizualnych. Niniejsza sekcja opisuje dostępne opcje efektów wideo i pokazuje, jak je zastosować.

Animacje i przejścia sprawiają, że pokazy slajdów są bardziej angażujące i interesujące — i to samo dotyczy wideo. Dodajmy kolejny slajd i przejście do kodu poprzedniej prezentacji:

    // Dodaj kształt uśmiechu i animuj go.
    // ...

    // Dodaj nowy slajd i animowane przejście.
    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 obsługuje także animacje tekstu. W tym przykładzie animujemy akapity na obiektach tak, aby pojawiały się kolejno, z sekundowym opóźnieniem między nimi:

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

    // Dodaj tekst i animacje.
    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);
    }

    // Skonfiguruj folder z binarkami ffmpeg. Zobacz tę stronę: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // Konwertuj klatki na wideo webm.
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

Klasy konwersji wideo

Aby umożliwić zadania konwersji PowerPoint na wideo, Aspose.Slides for .NET udostępnia klasy PresentationAnimationsGenerator i PresentationPlayer.

PresentationAnimationsGenerator pozwala ustawić rozmiar klatki wideo (które zostanie utworzone później) oraz wartość FPS (klatki na sekundę) poprzez konstruktor. Jeśli przekażesz instancję prezentacji, jej Presentation.SlideSize zostanie użyta i generuje animacje, które wykorzystuje PresentationPlayer.

Podczas generowania animacji wyzwalane jest zdarzenie NewAnimation dla każdej kolejnej animacji, które zawiera parametr IPresentationAnimationPlayer. Klasa ta reprezentuje odtwarzacz pojedynczej animacji.

Aby pracować z IPresentationAnimationPlayer, używasz właściwości Duration (dającej pełny czas trwania animacji) oraz metody SetTimePosition. Każda pozycja animacji jest ustawiana w przedziale 0 do duration, a metoda GetFrame zwraca bitmapę przedstawiającą stan animacji w danym momencie.

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

    // Dodaj kształt uśmiechu i animuj go.
    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);          // Początkowy stan animacji.
            Bitmap bitmap = animationPlayer.GetFrame();  // Bitmapa początkowego stanu animacji.

            animationPlayer.SetTimePosition(animationPlayer.Duration);  // Końcowy stan animacji.
            Bitmap lastBitmap = animationPlayer.GetFrame();             // Ostatnia klatka animacji.
            lastBitmap.Save("last.png");
        };
    }
}

Aby wszystkie animacje w prezentacji odtwarzały się jednocześnie, używa się klasy PresentationPlayer. Klasa ta przyjmuje instancję PresentationAnimationsGenerator oraz wartość FPS dla efektów w konstruktorze, a następnie wywołuje zdarzenie FrameTick dla wszystkich animacji, aby je odtworzyć:

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

Następnie wygenerowane klatki mogą zostać skompilowane w wideo. Zobacz sekcję Konwertuj prezentację PowerPoint na wideo.

Obsługiwane animacje i efekty

Podczas konwertowania prezentacji PowerPoint na wideo przy użyciu Aspose.Slides for .NET ważne jest zrozumienie, które animacje i efekty są obsługiwane w wynikowym pliku. Aspose.Slides obsługuje szeroką gamę typowych efektów wejścia, wyjścia i podkreślenia, takich jak zanikanie, przelot, przybliżenie i obrót. Niektóre zaawansowane lub niestandardowe animacje mogą nie być w pełni zachowane lub mogą wyglądać inaczej w końcowym wideo. Poniżej przedstawiono obsługiwane animacje i efekty.

Wejście:

Typ animacji Aspose.Slides PowerPoint
Appear nieobsługiwane obsługiwane
Fade obsługiwane obsługiwane
Fly In obsługiwane obsługiwane
Float In obsługiwane obsługiwane
Split obsługiwane obsługiwane
Wipe obsługiwane obsługiwane
Shape obsługiwane obsługiwane
Wheel obsługiwane obsługiwane
Random Bars obsługiwane obsługiwane
Grow & Turn nieobsługiwane obsługiwane
Zoom obsługiwane obsługiwane
Swivel obsługiwane obsługiwane
Bounce obsługiwane obsługiwane

Podkreślenie:

Typ animacji Aspose.Slides PowerPoint
Pulse nieobsługiwane obsługiwane
Color Pulse nieobsługiwane obsługiwane
Teeter obsługiwane obsługiwane
Spin obsługiwane obsługiwane
Grow/Shrink nieobsługiwane obsługiwane
Desaturate nieobsługiwane obsługiwane
Darken nieobsługiwane obsługiwane
Lighten nieobsługiwane obsługiwane
Transparency nieobsługiwane obsługiwane
Object Color nieobsługiwane obsługiwane
Complementary Color nieobsługiwane obsługiwane
Line Color nieobsługiwane obsługiwane
Fill Color nieobsługiwane obsługiwane

Wyjście:

Typ animacji Aspose.Slides PowerPoint
Disappear nieobsługiwane obsługiwane
Fade obsługiwane obsługiwane
Fly Out obsługiwane obsługiwane
Float Out obsługiwane obsługiwane
Split obsługiwane obsługiwane
Wipe obsługiwane obsługiwane
Shape obsługiwane obsługiwane
Random Bars obsługiwane obsługiwane
Shrink & Turn nieobsługiwane obsługiwane
Zoom obsługiwane obsługiwane
Swivel obsługiwane obsługiwane
Bounce obsługiwane obsługiwane

Ścieżki ruchu:

Typ animacji Aspose.Slides PowerPoint
Lines obsługiwane obsługiwane
Arcs obsługiwane obsługiwane
Turns obsługiwane obsługiwane
Shapes obsługiwane obsługiwane
Loops obsługiwane obsługiwane
Custom Path obsługiwane obsługiwane

Obsługiwane efekty przejścia slajdów

Efekty przejścia slajdów odgrywają istotną rolę w tworzeniu płynnych i atrakcyjnych wizualnie zmian między slajdami w wideo. Aspose.Slides for .NET obsługuje różnorodne popularne efekty przejścia, pomagając zachować przepływ i styl oryginalnej prezentacji. Poniżej przedstawiono, które efekty przejścia są obsługiwane podczas procesu konwersji.

Subtelne:

Typ animacji Aspose.Slides PowerPoint
Morph nieobsługiwane obsługiwane
Fade obsługiwane obsługiwane
Push obsługiwane obsługiwane
Pull obsługiwane obsługiwane
Wipe obsługiwane obsługiwane
Split obsługiwane obsługiwane
Reveal nieobsługiwane obsługiwane
Random Bars obsługiwane obsługiwane
Shape nieobsługiwane obsługiwane
Uncover nieobsługiwane obsługiwane
Cover obsługiwane obsługiwane
Flash obsługiwane obsługiwane
Strips obsługiwane obsługiwane

Ekscytujące:

Typ animacji Aspose.Slides PowerPoint
Fall Over nieobsługiwane obsługiwane
Drape nieobsługiwane obsługiwane
Curtains nieobsługiwane obsługiwane
Wind nieobsługiwane obsługiwane
Prestige nieobsługiwane obsługiwane
Fracture nieobsługiwane obsługiwane
Crush nieobsługiwane obsługiwane
Peel Off nieobsługiwane obsługiwane
Page Curl nieobsługiwane obsługiwane
Airplane nieobsługiwane obsługiwane
Origami nieobsługiwane obsługiwane
Dissolve obsługiwane obsługiwane
Checkerboard nieobsługiwane obsługiwane
Blinds nieobsługiwane obsługiwane
Clock obsługiwane obsługiwane
Ripple nieobsługiwane obsługiwane
Honeycomb nieobsługiwane obsługiwane
Glitter nieobsługiwane obsługiwane
Vortex nieobsługiwane obsługiwane
Shred nieobsługiwane obsługiwane
Switch nieobsługiwane obsługiwane
Flip nieobsługiwane obsługiwane
Gallery nieobsługiwane obsługiwane
Cube nieobsługiwane obsługiwane
Doors nieobsługiwane obsługiwane
Box nieobsługiwane obsługiwane
Comb nieobsługiwane obsługiwane
Zoom obsługiwane obsługiwane
Random nieobsługiwane obsługiwane

Dynamiczna zawartość:

Typ animacji Aspose.Slides PowerPoint
Pan nieobsługiwane obsługiwane
Ferris Wheel obsługiwane obsługiwane
Conveyor nieobsługiwane obsługiwane
Rotate nieobsługiwane obsługiwane
Orbit nieobsługiwane obsługiwane
Fly Through obsługiwane obsługiwane

Najczęściej zadawane pytania

Czy możliwe jest konwertowanie prezentacji chronionych hasłem?

Tak, Aspose.Slides for .NET umożliwia pracę z prezentacjami zabezpieczonymi hasłem. Podczas przetwarzania takich plików należy podać prawidłowe hasło, aby biblioteka mogła uzyskać dostęp do zawartości prezentacji.

Czy Aspose.Slides for .NET wspiera użycie w rozwiązaniach chmurowych?

Tak, Aspose.Slides for .NET może być zintegrowany z aplikacjami i usługami w chmurze. Biblioteka jest zaprojektowana do pracy w środowiskach serwerowych, zapewniając wysoką wydajność i skalowalność przy przetwarzaniu wsadowym plików.

Czy istnieją ograniczenia rozmiaru prezentacji podczas konwersji?

Aspose.Slides for .NET jest w stanie obsłużyć prezentacje praktycznie każdego rozmiaru. Jednak przy pracy z bardzo dużymi plikami mogą być wymagane dodatkowe zasoby systemowe i czasami zaleca się optymalizację prezentacji w celu poprawy wydajności.