Pythonでプレゼンテーションにビデオを追加

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

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

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

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

埋め込みビデオフレームの作成

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

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

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

import aspose.slides as slides

with slides.Presentation(path + "pres.pptx") as pres:
    with open("Wildlife.mp4", "br") as fileStream:
        video = pres.videos.add_video(fileStream, slides.LoadingStreamBehavior.KEEP_LOCKED)

        # 最初のスライドを取得し、ビデオフレームを追加します
        pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)

        # プレゼンテーションをディスクに保存します
        pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)

または、add_video_frame(x, y, width, height, fname) メソッドにファイル パスを直接渡すことでビデオを追加できます。

import aspose.slides as slides

with slides.Presentation() as pres:
    sld = pres.slides[0]
    vf = sld.shapes.add_video_frame(50, 150, 300, 150, "video1.avi")

Web ソースからのビデオを使用したビデオフレームの作成

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

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

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

import aspose.slides as slides
from urllib.request import urlopen

def add_video_from_youyube(pres, videoId):
    # ビデオフレームを追加します
    videoFrame = pres.slides[0].shapes.add_video_frame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId)
    videoFrame.play_mode = slides.VideoPlayModePreset.AUTO

    # サムネイルを読み込みます
    thumbnail_uri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg"
    f = urlopen(thumbnail_uri)
    videoFrame.picture_format.picture.image = pres.images.add_image(f.read())


with slides.Presentation() as pres:
    add_video_from_youyube(pres, "s5JbfQZ5Cc0")
    pres.save("AddVideoFrameFromWebSource_out.pptx", slides.export.SaveFormat.PPTX)

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

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

  1. ビデオを含むプレゼンテーションを読み込むために Presentation クラスのインスタンスを作成します。
  2. すべての Slide オブジェクトを反復処理します。
  3. すべての Shape オブジェクトを反復処理し、VideoFrame を検索します。
  4. ビデオをディスクに保存します。

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

import aspose.slides as slides

# プレゼンテーションファイルを表す Presentation オブジェクトをインスタンス化します
with slides.Presentation(path + "Video.pptx") as presentation:
    for shape in presentation.slides[0].shapes:
        if type(shape) is slides.VideoFrame:
            type = shape.embedded_video.content_type
            buffer = shape.embedded_video.binary_data
            with open("NewVideo_out." + type[type.rfind('/') + 1:len(type)], "wb") as stream:
                stream.write(buffer)

よくある質問

VideoFrame の再生パラメーターで変更できる項目は何ですか?

再生モード(自動またはクリック時)と looping を制御できます。これらのオプションは VideoFrame オブジェクトのプロパティを通じて利用可能です。

ビデオを追加すると PPTX ファイルのサイズに影響がありますか?

はい。ローカル ビデオを埋め込むと、バイナリ データがドキュメントに含まれるため、プレゼンテーションのサイズはファイル サイズに比例して増加します。オンライン ビデオを追加すると、リンクとサムネイルが埋め込まれるだけなので、サイズ増加は小さくなります。

既存の VideoFrame のビデオを、位置やサイズを変更せずに差し替えることはできますか?

はい。フレーム内の video content を入れ替えてもシェイプの形状は維持されます。これは既存のレイアウトでメディアを更新する一般的なシナリオです。

埋め込みビデオのコンテンツタイプ(MIME)を取得できますか?

はい。埋め込みビデオには content type があり、例えばディスクに保存する際などに読み取って使用できます。