PythonでPowerPointプレゼンテーションを動画に変換する
概要
PowerPoint または OpenDocument プレゼンテーションを動画に変換することで、次のメリットがあります:
アクセシビリティの向上: すべてのデバイスはプラットフォームに関係なくデフォルトで動画プレーヤーを備えているため、従来のプレゼンテーションアプリケーションよりも動画の再生や閲覧が容易です。
リーチの拡大: 動画は、より多くの視聴者にリーチし、情報を魅力的な形式で提示できます。調査や統計によれば、人々は他の形式よりも動画コンテンツを見る・消費することを好むため、メッセージのインパクトが高まります。
Aspose.Slides for Python 24.4 では、プレゼンテーションを動画に変換する機能を実装しました。
- Aspose.Slides for Python を使用して、指定したフレームレート(FPS)でプレゼンテーションのスライドからフレームを生成します。
- その後、ffmpeg などのサードパーティユーティリティを使用して、これらのフレームを動画にまとめます。
PowerPoint プレゼンテーションを動画に変換する
- pip install コマンドを使用して、Aspose.Slides for Python をプロジェクトに追加します:
pip install aspose-slides==24.4.0 - ffmpeg をここからダウンロードするか、パッケージマネージャーでインストールします。
- ffmpeg が
PATHに含まれていることを確認してください。含まれていない場合は、フルパスで ffmpeg を起動します(例: Windows のC:\ffmpeg\ffmpeg.exe、Linux の/opt/ffmpeg/ffmpeg)。 - PowerPoint から動画への変換コードを実行します。
この Python コードは、シェイプと 2 つのアニメーション効果を含むプレゼンテーションを動画に変換する方法を示しています:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
smile_shape = slide.shapes.add_auto_shape(slides.ShapeType.SMILEY_FACE, 110, 20, 500, 500)
effect_in = slide.timeline.main_sequence.add_effect(
smile_shape,
slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.TOP_LEFT,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect_out = slide.timeline.main_sequence.add_effect(
smile_shape,
slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.BOTTOM_RIGHT,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect_in.timing.duration = 2
effect_out.preset_class_type = slides.animation.EffectPresetClassType.EXIT
fps = 33
with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
for frame_args in frames_stream.enumerate_frames(presentation.slides):
frame = "frame_{:04d}.png".format(frame_args.frames_generator.frame_index)
frame_args.get_frame().save(frame)
cmd_line = ["ffmpeg", "-r", str(fps), "-i", "frame_%04d.png", "-y", "-s", "720x540", "-pix_fmt", "yuv420p",
"smile.webm"]
subprocess.call(cmd_line)
動画エフェクト
Aspose.Slides for Python を使用して PowerPoint プレゼンテーションを動画に変換する際に、出力の視覚品質を向上させるさまざまな動画エフェクトを適用できます。これらのエフェクトにより、スムーズなトランジションやアニメーション、その他の視覚要素を追加して、最終動画内のスライドの外観を制御できます。本セクションでは利用可能な動画エフェクトオプションを説明し、適用方法を示します。
アニメーションとトランジションはスライドショーをより魅力的にし、動画でも同様の効果をもたらします。前のプレゼンテーションのコードにもう 1 枚のスライドとトランジションを追加してみましょう:
import aspose.pydrawing as drawing
# スマイルシェイプを追加してアニメーションを付けます。
# ...
# 新しいスライドとアニメーション付きのトランジションを追加します。
new_slide = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide)
new_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
new_slide.background.fill_format.fill_type = slides.FillType.SOLID
new_slide.background.fill_format.solid_fill_color.color = drawing.Color.indigo
new_slide.slide_show_transition.type = slides.TransitionType.PUSH
Aspose.Slides for Python はテキストアニメーションもサポートしています。次の例では、オブジェクト上の段落を順次表示し、各段落の間に 1 秒の遅延を設定しています:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# テキストとアニメーションを追加します。
auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 210, 120, 300, 300)
para1 = slides.Paragraph()
para1.portions.add(slides.Portion("Aspose.Slides for Python"))
para2 = slides.Paragraph()
para2.portions.add(slides.Portion("Convert a PowerPoint presentation with text to video"))
para3 = slides.Paragraph()
para3.portions.add(slides.Portion("paragraph by paragraph"))
auto_shape.text_frame.paragraphs.add(para1)
auto_shape.text_frame.paragraphs.add(para2)
auto_shape.text_frame.paragraphs.add(para3)
auto_shape.text_frame.paragraphs.add(slides.Paragraph())
effect = slide.timeline.main_sequence.add_effect(
para1,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect2 = slide.timeline.main_sequence.add_effect(
para2,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect3 = slide.timeline.main_sequence.add_effect(
para3,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect4 = slide.timeline.main_sequence.add_effect(
para3,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect.timing.trigger_delay_time = 1
effect2.timing.trigger_delay_time = 1
effect3.timing.trigger_delay_time = 1
effect4.timing.trigger_delay_time = 1
# フレームを動画に変換します。
fps = 33
with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
for frame_args in frames_stream.enumerate_frames(presentation.slides):
frame = "frame_{:04d}.png".format(frame_args.frames_generator.frame_index)
frame_args.get_frame().save(frame)
cmd_line = ["ffmpeg", "-r", str(fps), "-i", "frame_%04d.png", "-y", "-s", "720x540", "-pix_fmt", "yuv420p", "text_animation.webm"]
subprocess.call(cmd_line)
動画変換クラス
PowerPoint から動画への変換タスクを有効にするために、Aspose.Slides for Python は PresentationEnumerableAnimationsGenerator を提供します。
PresentationEnumerableAnimationsGenerator は、後で作成される動画のフレームサイズと FPS(フレーム/秒)値をコンストラクタで設定できるようにします。プレゼンテーションのインスタンスを渡すと、その Presentation.SlideSize が使用されます。
プレゼンテーション内のすべてのアニメーションを同時に再生させるには、PresentationEnumerableAnimationsGenerator.enumerate_frames メソッドを使用します。このメソッドはスライドのコレクションを受け取り、順次 EnumerableFrameArgs を返します。その後、EnumerableFrameArgs.get_frame() を使用して各動画フレームを取得します。
import aspose.slides as slides
with slides.Presentation("animated.pptx") as presentation:
fps = 33
with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
for frame_args in frames_stream.enumerate_frames(presentation.slides):
frame_args.get_frame().save(f"frame_{frame_args.frames_generator.frame_index:04d}.png")
生成されたフレームは動画にコンパイルできます。詳細については、Convert PowerPoint to Video セクションをご覧ください。
サポートされているアニメーションとエフェクト
Aspose.Slides for Python で PowerPoint プレゼンテーションを動画に変換する際に、出力でサポートされるアニメーションとエフェクトを理解することが重要です。Aspose.Slides はフェード、フライイン、ズーム、スピンなどの一般的な入口、終了、強調エフェクトを幅広くサポートしています。ただし、一部の高度なカスタムアニメーションは完全に保持されないか、最終動画で異なる表示になる可能性があります。本セクションではサポート対象のアニメーションとエフェクトを概説します。
入口:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Appear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly In | ![]() |
![]() |
| Float In | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Wheel | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Grow & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
強調:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulse | ![]() |
![]() |
| Color Pulse | ![]() |
![]() |
| Teeter | ![]() |
![]() |
| Spin | ![]() |
![]() |
| Grow/Shrink | ![]() |
![]() |
| Desaturate | ![]() |
![]() |
| Darken | ![]() |
![]() |
| Lighten | ![]() |
![]() |
| Transparency | ![]() |
![]() |
| Object Color | ![]() |
![]() |
| Complementary Color | ![]() |
![]() |
| Line Color | ![]() |
![]() |
| Fill Color | ![]() |
![]() |
終了:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Disappear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly Out | ![]() |
![]() |
| Float Out | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shrink & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
モーション パス:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Lines | ![]() |
![]() |
| Arcs | ![]() |
![]() |
| Turns | ![]() |
![]() |
| Shapes | ![]() |
![]() |
| Loops | ![]() |
![]() |
| Custom Path | ![]() |
![]() |
サポートされているスライド トランジション エフェクト
スライド トランジション エフェクトは、動画内でスライド間のスムーズで視覚的に魅力的な切り替えを実現する重要な要素です。Aspose.Slides for Python は、元のプレゼンテーションの流れとスタイルを保持するために、一般的に使用されるさまざまなトランジション エフェクトをサポートしています。本セクションでは、変換プロセス中にサポートされるトランジション エフェクトをまとめています。
サブティル:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Push | ![]() |
![]() |
| Pull | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Split | ![]() |
![]() |
| Reveal | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Uncover | ![]() |
![]() |
| Cover | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Strips | ![]() |
![]() |
エキサイティング:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Fall Over | ![]() |
![]() |
| Drape | ![]() |
![]() |
| Curtains | ![]() |
![]() |
| Wind | ![]() |
![]() |
| Prestige | ![]() |
![]() |
| Fracture | ![]() |
![]() |
| Crush | ![]() |
![]() |
| Peel Off | ![]() |
![]() |
| Page Curl | ![]() |
![]() |
| Airplane | ![]() |
![]() |
| Origami | ![]() |
![]() |
| Dissolve | ![]() |
![]() |
| Checkerboard | ![]() |
![]() |
| Blinds | ![]() |
![]() |
| Clock | ![]() |
![]() |
| Ripple | ![]() |
![]() |
| Honeycomb | ![]() |
![]() |
| Glitter | ![]() |
![]() |
| Vortex | ![]() |
![]() |
| Shred | ![]() |
![]() |
| Switch | ![]() |
![]() |
| Flip | ![]() |
![]() |
| Gallery | ![]() |
![]() |
| Cube | ![]() |
![]() |
| Doors | ![]() |
![]() |
| Box | ![]() |
![]() |
| Comb | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Random | ![]() |
![]() |
ダイナミック コンテンツ:
| アニメーション タイプ | Aspose.Slides | PowerPoint |
|---|---|---|
| Pan | ![]() |
![]() |
| Ferris Wheel | ![]() |
![]() |
| Conveyor | ![]() |
![]() |
| Rotate | ![]() |
![]() |
| Orbit | ![]() |
![]() |
| Fly Through | ![]() |
![]() |
FAQ
パスワードで保護されたプレゼンテーションを変換できますか?
はい、Aspose.Slides for Python はパスワード保護されたプレゼンテーションの操作をサポートしています。これらのファイルを処理する際は、正しいパスワードを提供してライブラリがプレゼンテーションの内容にアクセスできるようにしてください。
Aspose.Slides for Python はクラウド ソリューションでの使用をサポートしていますか?
はい、Aspose.Slides for Python はクラウド アプリケーションやサービスに統合できます。このライブラリはサーバー環境での動作を前提に設計されており、ファイルのバッチ処理において高いパフォーマンスとスケーラビリティを提供します。
変換時にプレゼンテーションのサイズ制限はありますか?
Aspose.Slides for Python は実質的に任意のサイズのプレゼンテーションを処理可能です。ただし、非常に大きなファイルを扱う場合は追加のシステムリソースが必要になることがあり、パフォーマンス向上のためにプレゼンテーションを最適化することが推奨される場合があります。

