Skip to content

Latest commit

 

History

History
1029 lines (807 loc) · 23.4 KB

File metadata and controls

1029 lines (807 loc) · 23.4 KB

低级别 API

import { core } from "web-video-creator"
// 低级API在core暴露
const { ... } = core;

ResourcePool

资源池

构造函数

new ResourcePool(options: Object)

options 参数

参数 类型 说明
numBrowserMin number 资源池最小浏览器实例数量
numBrowserMax number 资源池最大浏览器实例数量
browserOptions Object 浏览器选项,参考 <Browser 构造函数的options参数
browserOptions.pageOptions Object 浏览器页面选项,参考 Page 构造函数的options参数

成员

ResourcePool.warmup(): Promise

预热资源池,当渲染任务产生时可以快速启动渲染。

ResourcePool.acquirePage(): Promise<Page>

从资源池获取一个页面封装实例,请记得 page 对象使用完毕后调用 page.release() 释放它。

ResourcePool.acquireBrowser(): Promise<Browser>

从资源池获取一个浏览器封装实例,请记得 browser 对象使用完毕后调用 browser.release() 释放它。

ResourcePool.isBusy(): boolean

判断浏览器资源池是否饱和


Browser

浏览器封装

构造函数

new Browser(options: Object)

options 参数

参数 类型 说明
numPageMin number 页面资源最小数量
numPageMax number 页面资源最大数量
executablePath string 浏览器可执行文件路径
useGPU boolean 是否使用GPU加速渲染,建议开启
useAngle boolean 渲染后端是否使用Angle,建议开启
disableDevShm boolean 是否禁用共享内存,当/dev/shm较小时建议开启此选项,默认关闭
args string[] 浏览器flags参数列表
pageOptions Object 页面选项,参考 Page 构造函数的options参数

成员

Browser.init(): Promise

初始化浏览器

Browser.acquirePage(): Promise<Page>

从浏览器封装获取一个页面封装实例,请记得 page 对象使用完毕后调用 page.release() 释放它。

Browser.release(): Promise

释放浏览器封装自身,将被回收到资源池进行下一次分配。

Browser.close(): Promise

关闭浏览器,将通知资源池销毁浏览器资源

Browser.getPageCount(): Promise

获取浏览器已开启的页面数量

Browser.isUninitialized(): boolean

判断浏览器是否未初始化

Browser.isReady(): boolean

判断浏览器是否已就绪

Browser.isUnavailabled(): boolean

判断浏览器是否不可用

Browser.isClosed(): boolean

判断浏览器是否已关闭

Browser.isBusy(): boolean

判断浏览器页面池是否饱和


Page

页面封装

构造函数

new Page(options: Object)

options 参数

参数 类型 说明
width number 页面初始化视窗宽度,可通过setViewport调整
height number 页面初始化视窗高度,可通过setViewport调整
userAgent string 访问页面时的用户UA
beginFrameTimeout number BeginFrame超时时间(毫秒),默认5000毫秒
frameFormat string 帧图格式(jpeg/png),建议使用jpeg提高性能
frameQuality number 帧图质量(0-100),默认80

成员

Page.init(): Promise

初始化页面

Page.setViewport(options: Object): Promise

设置视窗参数

options 参数

与Puppeteer的Viewport保持一致。

Page.goto(url: string, waitForOptions: Object): Promise

导航到待渲染页面。

url 参数

本地 URL 或远端 HTTPS URL,受制于浏览器的安全上下文限制,只能访问 localhost / 127.0.0.1 或者使用 HTTPS 协议且证书有效的域

waitForOptions 参数

与Puppeteer的WaitForOptions保持一致。

Page.setContent(content: string, waitForOptions: Object): Promise

设置待渲染页面内容。

content 参数

可见的HTML内容。

waitForOptions 参数

与Puppeteer的WaitForOptions保持一致。

Page.registerFont(options: Object)

注册字体

options 参数

参考 Font 字体参数。

Page.registerFonts([options: Object, ...])

注册多个字体

options 参数

参考 Font 字体参数。

Page.registerTimeActions(actions: {[key: Number]: Function})

注册动作序列

actions 参数

动作序列对象

Page.waitForFontsLoaded(timeout: number): Promise

等待字体加载完成。

timeout 参数

超时时间(毫秒),默认 30000 毫秒

Page.startScreencast(options: Object): Promise

开始帧图流捕获

options 参数

参数 类型 说明
fps number 渲染帧率
duration number 渲染时长(毫秒)
frameCount number 渲染总帧数
autostart boolean 是否自动启动渲染,默认true
videoDecoderHardwareAcceleration string VideoDecoder硬件加速指示,默认值 prefer-hardware

Page.pauseScreencast(): Promise

暂停帧图流捕获

Page.resumeScreencast(): Promise

恢复帧图流捕获

Page.stopScreencast(): Promise

停止帧图流捕获

Page.getCaptureContextConfig(): Promise

获取页面中全局的 captureCtx.config 配置内容。

Page.reset(): Promise

重置页面封装,重置后可开始新的捕获。

Page.release(): Promise

释放页面封装自身,将被回收到页面池进行下一次分配。

Page.close(): Promise

关闭页面,将通知浏览器封装销毁页面资源

Page.isUninitialized(): boolean

判断页面是否未初始化

Page.isReady(): boolean

判断页面是否已就绪

Page.isUnavailabled(): boolean

判断页面是否不可用

Page.isClosed(): boolean

判断页面是否已关闭


Synthesizer

合成器

构造函数

new Synthesizer(options: Object)

options 参数

参数 类型 说明
outputPath string 导出视频路径
width number 视频宽度
height number 视频高度
duration number 视频时长
fps number 视频合成帧率,默认30
format string 导出视频格式(mp4/webm),默认通过输出文件路径后缀判断
attachCoverPath string 附加到视频首帧的封面路径
coverCapture boolean 是否捕获封面并输出,默认false
coverCaptureTime number 封面捕获时间点(毫秒),默认捕获时间点是视频的20%位置
coverCaptureFormat string 封面捕获格式(jpg/png/bmp),默认jpg
videoEncoder string 视频编码器,编码器选择请参考 视频编码器列表
videoQuality number 视频质量(0-100),默认100
videoBitrate string 视频码率(设置码率将忽略videoQuality)
pixelFormat string 像素格式(yuv420p/yuv444p/rgb24),默认yuv420p
audioEncoder string 音频编码器,默认aac
audioBitrate string 音频码率
volume number 视频音量(0-100),默认100
parallelWriteFrames number 并行写入帧数,默认10
showProgress boolean 是否在命令行展示进度,默认false

Synthesizer.start()

启动合成。

Synthesizer.abort()

终止合成,非特殊情况一般不要中断渲染。

Synthesizer.input(buffer: Buffer)

输入帧数据。

buffer 参数

使用 Buffer 对象存储的帧图二进制数据,输入后将流式传输到 FFmpeg。

Synthesizer.endInput()

结束帧图流的输入,通知 FFmpeg 所有帧已经输入完成等待合成完成。

Synthesizer.addAudio(options: Object)

添加音频。

options 参数

参考 Audio 音频参数。

Synthesizer.addAudios([options: Object, ...])

添加多个音频

options 参数

参考 Audio 音频参数。

Synthesizer.removeOutputFile(): Promise

移除输出文件。

Synthesizer.reset()

重置合成器,重置后可以重新输入帧。

Synthesizer.isReady(): boolean

合成器是否已就绪

Synthesizer.isSynthesizing(): boolean

合成器是否正在合成中

Synthesizer.isCompleted(): boolean

合成器是否已经合成完成


VideoChunk

视频块

构造函数

new VideoChunk(options: Object)

options 参数

参数 类型 说明
width number 视频宽度
height number 视频高度
duration number 视频时长
fps number 视频合成帧率,默认30
outputPath string 导出视频分块路径,默认存储在临时目录,路径必须使用.ts后缀
transition string | Transition 进入下一视频分块的转场
autoremove boolean 分块被合并后是否自动删除分块文件,默认true
videoEncoder string 视频编码器,编码器选择请参考 视频编码器列表
videoQuality number 视频质量(0-100),默认100
videoBitrate string 视频码率(设置码率将忽略videoQuality)
pixelFormat string 像素格式(yuv420p/yuv444p/rgb24),默认yuv420p
parallelWriteFrames number 并行写入帧数,默认10
showProgress boolean 是否在命令行展示进度,默认false

VideoChunk.start()

启动合成。

VideoChunk.abort()

终止合成,非特殊情况一般不要中断渲染。

VideoChunk.input(buffer: Buffer)

输入帧数据。

buffer 参数

使用 Buffer 对象存储的帧图二进制数据,输入后将流式传输到 FFmpeg。

VideoChunk.endInput()

结束帧图流的输入,通知 FFmpeg 所有帧已经输入完成等待合成完成。

VideoChunk.addAudio(options: Object)

添加音频。

options 参数

参考 Audio 音频参数。

VideoChunk.addAudios([options: Object, ...])

添加多个音频

VideoChunk.setTransition(options: Object)

设置转场效果

options 参数

参考 Transition 转场参数。

VideoChunk.reset()

重置视频分块,重置后可以重新输入帧。

VideoChunk.isReady(): boolean

视频分块是否已就绪

VideoChunk.isSynthesizing(): boolean

视频分块是否正在合成中

VideoChunk.isCompleted(): boolean

视频分块是否已经合成完成


ChunkSynthesizer

视频分块合成器

构造函数

new ChunkSynthesizer(options: Object)

options 参数

参数 类型 说明
outputPath string 导出视频路径
width number 视频宽度
height number 视频高度
chunks VideoChunk[] 未渲染或已渲染的VideoChunk列表,可以是VideoChunk实例也可以是普通对象
duration number 视频时长
fps number 视频合成帧率,默认30
attachCoverPath string 附加到视频首帧的封面路径
coverCapture boolean 是否捕获封面并输出,默认false
coverCaptureTime number 封面捕获时间点(毫秒),默认捕获时间点是视频的20%位置
coverCaptureFormat string 封面捕获格式(jpg/png/bmp),默认jpg
videoEncoder string 视频编码器,编码器选择请参考 视频编码器列表
videoQuality number 视频质量(0-100),默认100
videoBitrate string 视频码率(设置码率将忽略videoQuality)
pixelFormat string 像素格式(yuv420p/yuv444p/rgb24),默认yuv420p
audioEncoder string 音频编码器,默认aac
audioBitrate string 音频码率
volume number 视频音量(0-100),默认100
parallelWriteFrames number 并行写入帧数,默认10
showProgress boolean 是否在命令行展示进度,默认false

ChunkSynthesizer.start()

启动合成。

ChunkSynthesizer.abort()

终止合成,非特殊情况一般不要中断渲染。

ChunkSynthesizer.input(chunk: VideoChunk, transition: Transition)

输入视频分块。

chunk 参数

请参考 VideoChunk 。

transition 参数

请参考 Transition 。

ChunkSynthesizer.addAudio(options: Object)

添加音频。

options 参数

参考 Audio 音频参数。

ChunkSynthesizer.addAudios([options: Object, ...])

添加多个音频

ChunkSynthesizer.reset()

重置合成器,重置后可以重新输入视频分块。

ChunkSynthesizer.isReady(): boolean

合成器是否已就绪

ChunkSynthesizer.isSynthesizing(): boolean

合成器是否正在合成中

ChunkSynthesizer.isCompleted(): boolean

合成器是否已经合成完成

Audio

音频参数

参数 类型 说明
url string 音频URL,与path二选一
path string 音频本地路径,与url二选一
startTime number 起始时间点(毫秒)
endTime number 结束时间点(毫秒)
loop boolean 是否循环播放
volume number 音量(0-100)
seekStart number 裁剪起始时间点(毫秒)
seekEnd number 裁剪结束实际点(毫秒)
fadeInDuration number 淡入时长(毫秒)
fadeOutDuration number 淡出时长(毫秒)
retryFetchs number 重试拉取次数
ignoreCache boolean 是否忽略本地缓存

Transition

转场参数,请参考 转场效果 。

参数 类型 说明
id string 转场ID(与滤镜名称一致)
duration string 转场时长(毫秒)

Font

字体参数

参数 类型 说明
url string 字体URL,与path二选一
path string 字体本地路径,与url二选一
family string 字体集名称
style string 字体样式
weight number | string 字体粗细
format string 字体格式
retryFetchs number 重试拉取次数
ignoreCache boolean 是否忽略本地缓存