媒体
使用 video 和 audio 属性将视频和音频内容嵌入演示文稿。
data 和 poster 字段接受原始字节(Uint8Array、ArrayBuffer、Buffer),也支持 base64 data URL(如 data:image/png;base64,...)。
视频
import { generatePresentation } from "@office-open/pptx";
{
"slides": [
{
"children": [
{
"video": {
"x": "1.3cm",
"y": "1.3cm",
"width": "15.9cm",
"height": "9.3cm",
"data": "data:video/mp4;base64,AAAAHGZ0eXBtcDQy...",
"type": "mp4"
}
}
]
}
]
}
{
children: [
{
video: {
x: "1.3cm",
y: "1.3cm",
width: "15.9cm",
height: "9.3cm",
data: new Uint8Array(fs.readFileSync("video.mp4")),
type: "mp4",
},
},
],
}
带封面图片的视频
封面图片在视频开始播放前显示:
{
"slides": [
{
"children": [
{
"video": {
"x": "1.3cm",
"y": "1.3cm",
"width": "15.9cm",
"height": "9.3cm",
"data": "data:video/mp4;base64,AAAAHGZ0eXBtcDQy...",
"type": "mp4",
"poster": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",
"posterType": "jpg"
}
}
]
}
]
}
{
video: {
x: "1.3cm",
y: "1.3cm",
width: "15.9cm",
height: "9.3cm",
data: new Uint8Array(fs.readFileSync("video.mp4")),
type: "mp4",
poster: new Uint8Array(fs.readFileSync("poster.jpg")),
posterType: "jpg",
},
}
如果未提供 poster,将自动使用一个最小透明占位图。
音频
import { generatePresentation } from "@office-open/pptx";
{
"slides": [
{
"children": [
{
"audio": {
"x": "1.3cm",
"y": "10.1cm",
"width": "5.3cm",
"height": "1.3cm",
"data": "data:audio/mp3;base64,SUQzBAAAAAAAI...",
"type": "mp3"
}
}
]
}
]
}
{
children: [
{
audio: {
x: "1.3cm",
y: "10.1cm",
width: "5.3cm",
height: "1.3cm",
data: new Uint8Array(fs.readFileSync("audio.mp3")),
type: "mp3",
},
},
],
}
支持的格式
视频(type)
| 值 | 格式 |
|---|---|
mp4 | MP4 |
mov | MOV |
wmv | WMV |
avi | AVI |
音频(type)
| 值 | 格式 |
|---|---|
mp3 | MP3 |
wav | WAV |
wma | WMA |
aac | AAC |
选项
VideoFrame
| 属性 | 类型 | 默认值 | 描述 |
| ------------ | ---------------------------------- | ----------------- | ------------ | -------------------------- |
| x | number | UniversalMeasure | 0 | 左侧位置(EMU 或通用度量) |
| y | number | UniversalMeasure | 0 | 顶部位置(EMU 或通用度量) |
| width | number | UniversalMeasure | 0 | 宽度(EMU 或通用度量) |
| height | number | UniversalMeasure | 0 | 高度(EMU 或通用度量) |
| data | Uint8Array | - | 视频文件数据 |
| type | "mp4" \| "mov" \| "wmv" \| "avi" | - | 视频格式 |
| name | string | auto | 显示名称 |
| poster | Uint8Array | auto | 封面图片数据 |
| posterType | "png" \| "jpg" | "png" | 封面图片格式 |
| animation | AnimationOptions | - | 播放动画 |
AudioFrame
| 属性 | 类型 | 默认值 | 描述 |
| ----------- | ---------------------------------- | ----------------- | ------------ | -------------------------- |
| x | number | UniversalMeasure | 0 | 左侧位置(EMU 或通用度量) |
| y | number | UniversalMeasure | 0 | 顶部位置(EMU 或通用度量) |
| width | number | UniversalMeasure | 0 | 宽度(EMU 或通用度量) |
| height | number | UniversalMeasure | 0 | 高度(EMU 或通用度量) |
| data | Uint8Array | - | 音频文件数据 |
| type | "mp3" \| "wav" \| "wma" \| "aac" | - | 音频格式 |
| name | string | auto | 显示名称 |
| animation | AnimationOptions | - | 播放动画 |
提示
- 为视频提供封面图片,以确保在播放前显示视觉预览。
- 音频框架通常较小,放置在幻灯片底部。
- 媒体文件会直接嵌入到
.pptx文件中 — 为保证性能,请控制文件大小。 - 支持的播放取决于演示文稿查看器(PowerPoint、Keynote、Google Slides 等)。