Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Waiting to run
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Waiting to run
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Waiting to run
Publish SDK (npm) / publish (@officecli/sdk) (push) Waiting to run
Publish SDK (npm) / publish (officecli-sdk) (push) Waiting to run
SDK smoke / smoke (windows-latest) (push) Waiting to run
SDK smoke / smoke (macos-latest) (push) Waiting to run
SDK smoke / smoke (ubuntu-latest) (push) Waiting to run
Skill parity / diff (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

6.0 KiB
Raw Permalink Blame History

Embedded Video (media)

This demo consists of three files that work together:

  • video.py — Python build script that generates a synthetic MP4 video using imageio, then builds a 4-slide PPTX with the video embedded. Each officecli call is logged to stdout.
  • video.pptx — The generated 4-slide deck: title, embedded video, video stats with a chart, and loop/trim demo.
  • video.md — This file. Maps each slide to the video-embedding features it demonstrates.

Regenerate

cd examples/ppt
pip install imageio imageio-ffmpeg numpy
python3 video.py
# → video.pptx

The script generates a 3-second 640×360 MP4 (animated gradient + moving circle), extracts its first frame as a cover PNG, embeds them into the PPTX, then removes the temp files.

Slides

Slide 1 — Title Slide

Radial gradient background applied to a layout=title slide with title and subtitle placeholders.

officecli add video.pptx / --type slide --prop layout=title
officecli set video.pptx /slide[1] --prop background=radial:1B2838-4472C4-bl
officecli set video.pptx /slide[1]/placeholder[ctrTitle] \
  --prop text="Video Demo" --prop color=FFFFFF --prop size=44
officecli set video.pptx /slide[1]/placeholder[subTitle] \
  --prop text="Embedded video with officecli" --prop color=B4C7E7 --prop size=20

Features: layout=title, background=radial:color1-color2-corner, placeholder[ctrTitle]/[subTitle], color=, size=

Slide 2 — Embedded Video with autoplay and volume

The primary video demo. The MP4 is embedded with a cover image (poster), positioned to fill most of the slide, with autoplay enabled.

officecli add video.pptx / --type slide --prop title="Animated Video"
officecli set video.pptx /slide[2] --prop background=0D1B2A
officecli set video.pptx /slide[2]/shape[1] --prop color=FFFFFF

officecli add video.pptx /slide[2] --type video \
  --prop src="/path/to/demo.mp4" \
  --prop poster="/path/to/cover.png" \
  --prop x=2cm --prop y=4cm --prop width=22cm --prop height=12.5cm \
  --prop volume=80 \
  --prop autoplay=true

src= embeds the MP4 into the PPTX package. poster= sets the static cover image shown before playback. volume= accepts 0100. autoplay=true starts the video as soon as the slide is displayed.

Features: --type video, src= (file path to embed), poster= (cover image path), x=/y=/width=/height= in cm, volume= (0100), autoplay= (true/false)

Slide 3 — Video Stats with Chart

Demonstrates a text info box and a bar chart on the same slide as the embedded video.

officecli add video.pptx / --type slide --prop title="Video Properties"
officecli set video.pptx /slide[3] --prop background=1B2838
officecli set video.pptx /slide[3]/shape[1] --prop color=FFFFFF

# Info box: multi-line text with code-like font
officecli add video.pptx /slide[3] --type shape \
  --prop text="Resolution: 640x360\nFPS: 30\nDuration: 3s\nFormat: MP4" \
  --prop font=Consolas --prop size=16 --prop color=B4C7E7 \
  --prop x=1cm --prop y=4cm --prop width=10cm --prop height=6cm \
  --prop fill=0D1B2A --prop line=4472C4 --prop linewidth=1pt

# Bar chart — frame color analysis
officecli add video.pptx /slide[3] --type chart \
  --prop chartType=bar \
  --prop title="Frame Colors" \
  --prop categories="Red,Green,Blue" \
  --prop "series1=Start:20,30,200" \
  --prop "series2=End:80,30,80" \
  --prop colors=E74C3C,27AE60 \
  --prop x=13cm --prop y=4cm --prop width=12cm --prop height=8cm

Features: --type shape multi-line text (\n), font=Consolas, line= / linewidth= shape border, --type chart with chartType=bar, series1=Name:v1,v2,…, categories=, colors= on the same slide as a video element

Slide 4 — loop / trimStart / trimEnd

Demonstrates playback control: the video loops continuously over a sub-range of the source (02 seconds out of a 3-second video).

officecli add video.pptx / --type slide --prop title="loop / trimStart / trimEnd"
officecli set video.pptx /slide[4] --prop background=0D1B2A
officecli set video.pptx /slide[4]/shape[1] --prop color=FFFFFF

officecli add video.pptx /slide[4] --type video \
  --prop src="/path/to/demo.mp4" \
  --prop poster="/path/to/cover.png" \
  --prop x=2cm --prop y=4cm --prop width=22cm --prop height=12.5cm \
  --prop volume=60 \
  --prop autoplay=true \
  --prop loop=true \
  --prop trimStart=0 \
  --prop trimEnd=2

# Annotation label
officecli add video.pptx /slide[4] --type shape \
  --prop text="loop=true  trimStart=0  trimEnd=2\nVideo loops continuously; playback is clipped to the 02s range." \
  --prop size=14 --prop color=B4C7E7 \
  --prop x=1cm --prop y=17cm --prop width=24cm --prop height=2cm
Property Type Effect
loop=true bool video restarts after it reaches the end
trimStart=N number (seconds) playback starts at N seconds
trimEnd=N number (seconds) playback stops at N seconds

trimStart/trimEnd are clamped to the actual video duration. Both combine with loop=true to create a looping sub-clip.

Features: loop= (true/false), trimStart= (seconds), trimEnd= (seconds), combining trim + loop

Complete Feature Coverage

Feature Slide
layout=title placeholder-based slide 1
background=radial: gradient 1
background= solid hex 2, 3, 4
placeholder[ctrTitle] / [subTitle] 1
--type video element 2, 4
src= embed MP4 into package 2, 4
poster= cover image 2, 4
volume= (0100) 2, 4
autoplay= 2, 4
loop= 4
trimStart= / trimEnd= (seconds) 4
x=/y=/width=/height= in cm 2, 3, 4
--type shape with multi-line text (\n) 3, 4
font=Consolas monospace label 3
line= / linewidth= shape border 3
--type chart bar chart on video slide 3
series1=Name:v1,v2, colors= 3

Inspect the Generated File

officecli query video.pptx slide
officecli get video.pptx /slide[2]
officecli get video.pptx "/slide[2]/video[1]"
officecli get video.pptx "/slide[4]/video[1]"