Convertir PowerPoint en Vidéo

En convertissant votre présentation PowerPoint en vidéo, vous obtenez

  • Augmentation de l’accessibilité : Tous les dispositifs (quelle que soit la plateforme) sont équipés par défaut de lecteurs vidéo par rapport aux applications d’ouverture de présentation, ce qui facilite l’ouverture ou la lecture des vidéos pour les utilisateurs.
  • Plus de portée : Grâce aux vidéos, vous pouvez atteindre un large public et le cibler avec des informations qui pourraient autrement sembler ennuyeuses dans une présentation. La plupart des enquêtes et des statistiques suggèrent que les gens regardent et consomment des vidéos plus que d’autres formes de contenu, et ils préfèrent généralement ce type de contenu.

Conversion de PowerPoint en Vidéo avec Aspose.Slides

Dans Aspose.Slides 22.11, nous avons implémenté la prise en charge de la conversion de présentation en vidéo.

  • Utilisez Aspose.Slides pour générer un ensemble d’images (à partir des diapositives de présentation) correspondant à un certain FPS (images par seconde)
  • Utilisez un utilitaire tiers comme FFMpegCore (ffmpeg) pour créer une vidéo basée sur les images.

Convertir PowerPoint en Vidéo

  1. Utilisez la commande dotnet add package pour ajouter Aspose.Slides et la bibliothèque FFMpegCore à votre projet :
    • exécutez dotnet add package Aspose.Slides.NET --version 22.11.0
    • exécutez dotnet add package FFMpegCore --version 4.8.0
  2. Téléchargez ffmpeg ici.
  3. FFMpegCore nécessite que vous spécifiiez le chemin vers le ffmpeg téléchargé (par exemple, extrait dans “C:\tools\ffmpeg”) : GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin",} );
  4. Exécutez le code de conversion PowerPoint en vidéo.

Ce code C# vous montre comment convertir une présentation (contenant une figure et deux effets d’animation) en vidéo :

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // Utilisera les binaires FFmpeg que nous avons extraits dans "c:\tools\ffmpeg" auparavant
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())

{
    // Ajoute une forme de sourire et l'anime
    IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
    IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
    IEffect effectOut = presentation.Slides[0].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);
    }

    // Configure le dossier des binaires ffmpeg. Voir cette page : https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // Convertit les images en vidéo webm
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

Effets Vidéo

Vous pouvez appliquer des animations aux objets sur les diapositives et utiliser des transitions entre les diapositives.

Les animations et transitions rendent les diaporamas plus engageants et intéressants — et ils font la même chose pour les vidéos. Ajoutons une autre diapositive et une transition au code de la présentation précédente :

// Ajoute une forme de sourire et l'anime

// ...

// Ajoute une nouvelle diapositive et une transition animée

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 prend également en charge l’animation des textes. Donc nous animons des paragraphes sur des objets, qui apparaîtront les uns après les autres (avec un délai fixé à une seconde) :

using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    // Ajoute du texte et des animations
    IAutoShape autoShape = presentation.Slides[0].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("convertir la Présentation PowerPoint avec du texte en vidéo"));

    Paragraph para3 = new Paragraph();
    para3.Portions.Add(new Portion("paragraphe par paragraphe"));
    autoShape.TextFrame.Paragraphs.Add(para1);
    autoShape.TextFrame.Paragraphs.Add(para2);
    autoShape.TextFrame.Paragraphs.Add(para3);
    autoShape.TextFrame.Paragraphs.Add(new Paragraph());

    IEffect effect = presentation.Slides[0].Timeline.MainSequence.AddEffect(para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect2 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect3 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect4 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    effect.Timing.TriggerDelayTime = 1f;
    effect2.Timing.TriggerDelayTime = 1f;
    effect3.Timing.TriggerDelayTime = 1f;
    effect4.Timing.TriggerDelayTime = 1f;

    // Convertit les images en vidéo
    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);
    }
    // Configure le dossier des binaires ffmpeg. Voir cette page : https://github.com/rosenbjerg/FFMpegCore#installation

    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // Convertit les images en vidéo webm
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

Classes de Conversion Vidéo

Pour vous permettre d’effectuer des tâches de conversion de PowerPoint en vidéo, Aspose.Slides fournit les classes PresentationAnimationsGenerator et PresentationPlayer.

PresentationAnimationsGenerator vous permet de définir la taille du cadre pour la vidéo (qui sera créée plus tard) via son constructeur. Si vous passez une instance de la présentation, Presentation.SlideSize sera utilisée et elle génère des animations que PresentationPlayer utilise.

Lorsque les animations sont générées, un événement NewAnimation est généré pour chaque animation suivante, qui a le paramètre IPresentationAnimationPlayer. Ce dernier est une classe qui représente un lecteur pour une animation séparée.

Pour travailler avec IPresentationAnimationPlayer, les propriétés Duration (la durée totale de l’animation) et la méthode SetTimePosition sont utilisées. Chaque position d’animation est définie dans la plage 0 à duration et ensuite la méthode GetFrame retournera un Bitmap correspondant à l’état de l’animation à ce moment-là.

using (Presentation presentation = new Presentation())
{
    // Ajoute une forme de sourire et l'anime
    IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
    IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
    IEffect effectOut = presentation.Slides[0].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($"Durée totale de l'animation : {animationPlayer.Duration}");
            
            animationPlayer.SetTimePosition(0); // état initial de l'animation
            Bitmap bitmap = animationPlayer.GetFrame(); // bitmap de l'état initial de l'animation

            animationPlayer.SetTimePosition(animationPlayer.Duration); // état final de l'animation
            Bitmap lastBitmap = animationPlayer.GetFrame(); // dernière image de l'animation
            lastBitmap.Save("last.png");
        };
    }
}

Pour faire jouer toutes les animations d’une présentation en même temps, la classe PresentationPlayer est utilisée. Cette classe prend une instance de PresentationAnimationsGenerator et le FPS pour les effets dans son constructeur, puis appelle l’événement FrameTick pour toutes les animations afin de les jouer :

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

Puis les images générées peuvent être compilées pour produire une vidéo. Voir la section Convertir PowerPoint en Vidéo.

Animations et Effets Supportés

Entrée:

Type d’Animation Aspose.Slides PowerPoint
Apparaître non supporté supporté
Fondu supporté supporté
Entrée en Vol supporté supporté
Entrée Flottante supporté supporté
Division supporté supporté
Essuyer supporté supporté
Forme supporté supporté
Roue supporté supporté
Barres Aléatoires supporté supporté
Grandir et Tourner non supporté supporté
Zoom supporté supporté
Rotation supporté supporté
Rebond supporté supporté

Accentuation:

Type d’Animation Aspose.Slides PowerPoint
Pulsation non supporté supporté
Pulsation de Couleur non supporté supporté
Balancer supporté supporté
Rotation supporté supporté
Grandir/Rétrécir non supporté supporté
Désaturer non supporté supporté
Assombrir non supporté supporté
Éclaircir non supporté supporté
Transparence non supporté supporté
Couleur de l’Objet non supporté supporté
Couleur Complémentaire non supporté supporté
Couleur de Ligne non supporté supporté
Couleur de Remplissage non supporté supporté

Sortie:

Type d’Animation Aspose.Slides PowerPoint
Disparaître non supporté supporté
Fondu supporté supporté
Sortie en Vol supporté supporté
Sortie Flottante supporté supporté
Division supporté supporté
Essuyer supporté supporté
Forme supporté supporté
Barres Aléatoires supporté supporté
Réduire et Tourner non supporté supporté
Zoom supporté supporté
Rotation supporté supporté
Rebond supporté supporté

Chemins de Mouvement :

Type d’Animation Aspose.Slides PowerPoint
Lignes supporté supporté
Arcs supporté supporté
Virages supporté supporté
Formes supporté supporté
Boucles supporté supporté
Chemin Personnalisé supporté supporté

Effets de Transition de Diapositive Supportés

Subtils:

Type d’Animation Aspose.Slides PowerPoint
Morphose non supporté supporté
Fondu supporté supporté
Pousser supporté supporté
Tirer supporté supporté
Essuyer supporté supporté
Division supporté supporté
Révéler non supporté supporté
Barres Aléatoires supporté supporté
Forme non supporté supporté
Dévoiler non supporté supporté
Couverture supporté supporté
Clignoter supporté supporté
Bandes supporté supporté

Excitant:

Type d’Animation Aspose.Slides PowerPoint
Tomber non supporté supporté
Draper non supporté supporté
Rideaux non supporté supporté
Vent non supporté supporté
Prestige non supporté supporté
Fracture non supporté supporté
Écraser non supporté supporté
Peler non supporté supporté
Pliage de Page non supporté supporté
Avion non supporté supporté
Origami non supporté supporté
Dissoudre supporté supporté
Damier non supporté supporté
Rideaux non supporté supporté
Horloge supporté supporté
Vague non supporté supporté
Rayon de miel non supporté supporté
Paillettes non supporté supporté
Vortex non supporté supporté
Déchirer non supporté supporté
Changer non supporté supporté
Retourner non supporté supporté
Galerie non supporté supporté
Cube non supporté supporté
Portes non supporté supporté
Boîte non supporté supporté
Peigne non supporté supporté
Zoom supporté supporté
Aléatoire non supporté supporté

Contenu Dynamique:

Type d’Animation Aspose.Slides PowerPoint
Panoramique non supporté supporté
Grande Roue supporté supporté
Convoyeur non supporté supporté
Rotation non supporté supporté
Orbite non supporté supporté
Volée à Travers supporté supporté