PowerPointをビデオに変換

PowerPointプレゼンテーションをビデオに変換することで、次の利点があります。

  • アクセシビリティの向上: プレゼンテーションを開くアプリケーションと比較すると、すべてのデバイス(プラットフォームに関係なく)はデフォルトでビデオプレーヤーを備えているため、ユーザーはビデオを開くまたは再生するのが簡単です。
  • 到達範囲の拡大: ビデオを通じて、広範なオーディエンスにリーチし、プレゼンテーションでは退屈に思えるかもしれない情報をターゲットにすることができます。ほとんどの調査や統計によると、人々は他の形態のコンテンツよりもビデオを視聴し、消費することが多く、一般的にそのようなコンテンツを好みます。

Aspose.SlidesにおけるPowerPointからビデオへの変換

Aspose.Slides 22.11で、プレゼンテーションからビデオへの変換をサポートしました。

  • Aspose.Slidesを使用して、特定のFPS(フレーム毎秒)に対応する一連のフレーム(プレゼンテーションスライドから)を生成します。
  • FFMpegCore(ffmpeg)などのサードパーティユーティリティを使用して、フレームに基づいてビデオを作成します。

PowerPointをビデオに変換

  1. dotnet add packageコマンドを使用して、Aspose.SlidesおよびFFMpegCoreライブラリをプロジェクトに追加します:
    • dotnet add package Aspose.Slides.NET --version 22.11.0を実行します。
    • dotnet add package FFMpegCore --version 4.8.0を実行します。
  2. ここからffmpegをダウンロードします。ここ
  3. FFMpegCoreは、ダウンロードしたffmpegへのパスを指定する必要があります(例: “C:\tools\ffmpeg"に解凍した場合): GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin",} );
  4. PowerPointをビデオに変換するコードを実行します。

このC#コードは、プレゼンテーション(図と2つのアニメーション効果を含む)をビデオに変換する方法を示しています:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // "c:\tools\ffmpeg"に解凍したFFmpegバイナリを使用します
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())

{
    // 笑顔の形を追加し、アニメーションを加えます
    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);
    }

    // ffmpegバイナリフォルダーを設定します。このページを参照してください: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // フレームをwebmビデオに変換します
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

ビデオ効果

スライド上のオブジェクトにアニメーションを適用し、スライド間の遷移を使用できます。

アニメーションと遷移はスライドショーをより魅力的で面白くし、ビデオに対しても同じことを行います。前のプレゼンテーションのコードに別のスライドと遷移を追加しましょう:

// 笑顔の形を追加し、アニメーションを加えます

// ...

// 新しいスライドとアニメーション遷移を追加します

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では、テキストのアニメーションもサポートされています。したがって、オブジェクト上の段落にアニメーションを適用し、1秒の遅延で順に表示されるようにします:

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

using (Presentation presentation = new Presentation())
{
    // テキストとアニメーションを追加します
    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("テキストを含むPowerPointプレゼンテーションをビデオに変換"));

    Paragraph para3 = new Paragraph();
    para3.Portions.Add(new Portion("段落ごとに"));
    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;

    // フレームをビデオに変換します
    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バイナリフォルダーを設定します。このページを参照してください: https://github.com/rosenbjerg/FFMpegCore#installation

    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // フレームをwebmビデオに変換します
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

ビデオ変換クラス

PowerPointからビデオへの変換タスクを実行できるように、Aspose.SlidesはPresentationAnimationsGeneratorおよびPresentationPlayerクラスを提供します。

PresentationAnimationsGeneratorを使用すると、後で作成されるビデオのフレームサイズをコンストラクタを通じて設定できます。プレゼンテーションのインスタンスを渡すと、Presentation.SlideSizeが使用され、PresentationPlayerが使用するアニメーションを生成します。

アニメーションが生成されると、各後続アニメーションについてNewAnimationイベントが生成され、IPresentationAnimationPlayerパラメータがあります。後者は、個別のアニメーション用のプレーヤーを表すクラスです。

IPresentationAnimationPlayerと連携するために、Duration(アニメーションの総持続時間)プロパティとSetTimePositionメソッドが使用されます。各アニメーション位置は0からdurationの範囲内で設定され、次にGetFrameメソッドは、その時点でのアニメーション状態に対応するBitmapを返します。

using (Presentation presentation = new Presentation())
{
    // 笑顔の形を追加し、アニメーションを加えます
    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($"アニメーションの総持続時間: {animationPlayer.Duration}");
            
            animationPlayer.SetTimePosition(0); // 初期アニメーション状態
            Bitmap bitmap = animationPlayer.GetFrame(); // 初期アニメーション状態のビットマップ

            animationPlayer.SetTimePosition(animationPlayer.Duration); // アニメーションの最終状態
            Bitmap lastBitmap = animationPlayer.GetFrame(); // アニメーションの最終フレーム
            lastBitmap.Save("last.png");
        };
    }
}

プレゼンテーション内のすべてのアニメーションを一度に再生する場合は、PresentationPlayerクラスを使用します。このクラスは、PresentationAnimationsGeneratorインスタンスと、効果のFPSをコンストラクタに取り込み、すべてのアニメーションを再生するためにFrameTickイベントを呼び出します:

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

生成されたフレームは、ビデオを作成するためにコンパイルできます。PowerPointをビデオに変換セクションを参照してください。

サポートされているアニメーションと効果

入口:

アニメーションの種類 Aspose.Slides PowerPoint
出現 サポートされていません サポートされています
フェード サポートされています サポートされています
フライイン サポートされています サポートされています
フロートイン サポートされています サポートされています
スプリット サポートされています サポートされています
ワイプ サポートされています サポートされています
シェイプ サポートされています サポートされています
ホイール サポートされています サポートされています
ランダムバー サポートされています サポートされています
グロウ&ターン サポートされていません サポートされています
ズーム サポートされています サポートされています
スイベル サポートされています サポートされています
バウンス サポートされています サポートされています

強調:

アニメーションの種類 Aspose.Slides PowerPoint
パルス サポートされていません サポートされています
カラー パルス サポートされていません サポートされています
ティーター サポートされています サポートされています
スピン サポートされています サポートされています
成長/縮小 サポートされていません サポートされています
デサチュレート サポートされていません サポートされています
暗くする サポートされていません サポートされています
明るくする サポートされていません サポートされています
透明度 サポートされていません サポートされています
オブジェクトカラー サポートされていません サポートされています
補色 サポートされていません サポートされています
ラインカラー サポートされていません サポートされています
塗りつぶしカラー サポートされていません サポートされています

退出:

アニメーションの種類 Aspose.Slides PowerPoint
消失 サポートされていません サポートされています
フェード サポートされています サポートされています
フライアウト サポートされています サポートされています
フロートアウト サポートされています サポートされています
スプリット サポートされています サポートされています
ワイプ サポートされています サポートされています
シェイプ サポートされています サポートされています
ランダムバー サポートされています サポートされています
縮小&ターン サポートされていません サポートされています
ズーム サポートされています サポートされています
スイベル サポートされています サポートされています
バウンス サポートされています サポートされています

モーションパス:

アニメーションの種類 Aspose.Slides PowerPoint
ライン サポートされています サポートされています
アーク サポートされています サポートされています
ターン サポートされています サポートされています
形状 サポートされています サポートされています
ループ サポートされています サポートされています
カスタムパス サポートされています サポートされています

サポートされているスライド遷移効果

微妙:

アニメーションの種類 Aspose.Slides PowerPoint
モーフ サポートされていません サポートされています
フェード サポートされています サポートされています
プッシュ サポートされています サポートされています
プル サポートされています サポートされています
ワイプ サポートされています サポートされています
スプリット サポートされています サポートされています
リビール サポートされていません サポートされています
ランダムバー サポートされています サポートされています
シェイプ サポートされていません サポートされています
アンカバー サポートされていません サポートされています
カバー サポートされています サポートされています
フラッシュ サポートされています サポートされています
ストリップ サポートされています サポートされています

エキサイティング:

アニメーションの種類 Aspose.Slides PowerPoint
フォールオーバー サポートされていません サポートされています
ドレープ サポートされていません サポートされています
カーテン サポートされていません サポートされています
サポートされていません サポートされています
プレステージ サポートされていません サポートされています
フラクチャー サポートされていません サポートされています
クラッシュ サポートされていません サポートされています
剥がす サポートされていません サポートされています
ページカール サポートされていません サポートされています
飛行機 サポートされていません サポートされています
折り紙 サポートされていません サポートされています
溶解 サポートされています サポートされています
チェッカーボード サポートされていません サポートされています
ブラインド サポートされていません サポートされています
時計 サポートされています サポートされています
波紋 サポートされていません サポートされています
ハニカム サポートされていません サポートされています
グリッター サポートされていません サポートされています
サポートされていません サポートされています
シュレッド サポートされていません サポートされています
スイッチ サポートされていません サポートされています
フリップ サポートされていません サポートされています
ギャラリー サポートされていません サポートされています
キューブ サポートされていません サポートされています
ドア サポートされていません サポートされています
ボックス サポートされていません サポートされています
コーム サポートされていません サポートされています
ズーム サポートされています サポートされています
ランダム サポートされていません サポートされています

動的コンテンツ:

アニメーションの種類 Aspose.Slides PowerPoint
パン サポートされていません サポートされています
観覧車 サポートされています サポートされています
コンベヤ サポートされていません サポートされています
回転 サポートされていません サポートされています
軌道 サポートされていません サポートされています
飛行を通過する サポートされています サポートされています