ビデオフレーム

プレゼンテーションにおいて適切に配置されたビデオは、メッセージをより説得力のあるものにし、聴衆とのエンゲージメントレベルを高めることができます。

PowerPointでは、プレゼンテーションのスライドにビデオを追加する方法が2つあります:

  • ローカルビデオを追加または埋め込む(自分のマシンに保存されているビデオ)
  • オンラインビデオを追加する(YouTubeなどのウェブソースから)。

プレゼンテーションにビデオ(ビデオオブジェクト)を追加できるように、Aspose.SlidesはIVideoインターフェース、IVideoFrameインターフェース、およびその他の関連タイプを提供しています。

埋め込まれたビデオフレームを作成する

スライドに追加したいビデオファイルがローカルに保存されている場合、プレゼンテーションにビデオを埋め込むためのビデオフレームを作成できます。

  1. Presentationクラスのインスタンスを作成します。
  2. インデックスを通じてスライドの参照を取得します。
  3. IVideoオブジェクトを追加し、プレゼンテーションにビデオを埋め込むためのビデオファイルパスを渡します。
  4. ビデオのフレームを作成するためにIVideoFrameオブジェクトを追加します。
  5. 修正されたプレゼンテーションを保存します。

このC#コードは、ローカルに保存されたビデオをプレゼンテーションに追加する方法を示しています:

// プレゼンテーションクラスのインスタンスを作成
using (Presentation pres = new Presentation("pres.pptx"))
{
    // ビデオをロード
    using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
    {
        IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
        
        // 最初のスライドを取得し、ビデオフレームを追加
        pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
        
        // プレゼンテーションをディスクに保存
        pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
    }
}

また、AddVideoFrameメソッドにビデオのファイルパスを直接渡すことで、ビデオを追加することもできます:

using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];
    IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}

ウェブソースからのビデオでビデオフレームを作成する

Microsoft PowerPoint 2013以降では、プレゼンテーションでYouTubeビデオをサポートしています。使用したいビデオがオンラインで利用可能な場合(例えばYouTube上)、そのウェブリンクを通じてプレゼンテーションに追加できます。

  1. Presentationクラスのインスタンスを作成します。
  2. インデックスを通じてスライドの参照を取得します。
  3. IVideoオブジェクトを追加し、ビデオへのリンクを渡します。
  4. ビデオフレームのサムネイルを設定します。
  5. プレゼンテーションを保存します。

このC#コードは、PowerPointプレゼンテーション内のスライドにウェブからビデオを追加する方法を示しています:

public static void Run()
{
    // プレゼンテーションファイルを表すPresentationオブジェクトをインスタンス化
    using (Presentation pres = new Presentation())
    {
        AddVideoFromYouTube(pres, "Tj75Arhq5ho");
        pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
    }
}

private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
    // ビデオフレームを追加
    IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
    videoFrame.PlayMode = VideoPlayModePreset.Auto;

    // サムネイルをロード
    using (WebClient client = new WebClient())
    {
        string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
        videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
    }
}

スライドからビデオを抽出する

スライドにビデオを追加することに加えて、Aspose.Slidesはプレゼンテーションに埋め込まれたビデオを抽出することも可能です。

  1. ビデオを含むプレゼンテーションをロードするためにPresentationクラスのインスタンスを作成します。
  2. すべてのISlideオブジェクトを反復処理します。
  3. すべてのIShapeオブジェクトを反復処理し、VideoFrameを見つけます。
  4. ビデオをディスクに保存します。

このC#コードは、プレゼンテーションスライドからビデオを抽出する方法を示しています:

// プレゼンテーションファイルを表すPresentationオブジェクトをインスタンス化
Presentation presentation = new Presentation("Video.pptx");

// スライドを反復
foreach (ISlide slide in presentation.Slides)
{
    // シェイプを反復
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // ビデオを含むVideoFrameが見つかった場合、ディスクにビデオを保存
        if (shape is VideoFrame)
        {
            IVideoFrame vf = shape as IVideoFrame;
            String type = vf.EmbeddedVideo.ContentType;
            int ss = type.LastIndexOf('/');
            type = type.Remove(0, type.LastIndexOf('/') + 1);
            Byte[] buffer = vf.EmbeddedVideo.BinaryData;
            using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
            {                                                     
                stream.Write(buffer, 0, buffer.Length);
            }
        }
    }
}