10 Star 151 Fork 22

Vinlic / WebVideoCreator

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
api-reference-low-level.md 23.37 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 是否忽略本地缓存
NodeJS
1
https://gitee.com/vblog/web-video-creator.git
git@gitee.com:vblog/web-video-creator.git
vblog
web-video-creator
WebVideoCreator
master

搜索帮助