在 ElectronJS 中以高质量和最小尺寸录制屏幕 (Windows)
record screen with high quality and minimum size in ElectronJS (Windows)
正如我在标题中所说,我需要从电子应用程序中录制我的屏幕。
我的需求是:
- 高质量(720p 或 1080p)
- 最小尺寸
- 录制音频+屏幕+麦克风
- 录制时对 PC 硬件的影响较小
- 录音机停止后无需等待
by minimum size I mean about 400MB on 720p and 700MB on 1080p for a 3 to 4 hours recording. we already could achieve this by bandicam and obs and it's possible
我已经试过了:
- 简单的 MediaStreamRecorder API 使用 RecordRTC.Js;产生巨大的文件大小,例如 720p 视频每小时 1GB。
- 使用FFmpeg压缩输出视频;录制 3 小时最多可能需要 1 小时
- 使用 'ondataavailable' 事件保存每个块,紧接着 运行 FFmpeg 并转换和减小大小并附加所有压缩文件(也通过 FFmpeg);有两个问题。 1,由于不同的 PTS 但可以通过调整压缩命令参数来修复。 2,主要问题是音频数据 headers 仅在第一个块中可用,这种方法导致前几秒只有音频的视频
- 用FFmpeg本身录制视频; end-users 需要手动更改一些东西(立体声混音),配置太复杂,导致整个 PC 在录制时工作速度变慢(例如 fps 下降;即使我将 -threads 设置为 1),在某些情况下录制完成后需要多次打包的情况
- 通过互联网搜索以查找可以从命令行使用的应用程序;我找不到太多,像 bandicam 和 obs 这样的著名应用程序有命令行参数,但是没有太多的参数可以玩,我不能设置很多导致其他问题的选项
我不知道我还能做什么,如果您知道可以通过 CLI 实现此目的的方法或简单工具,请告诉我并指导我完成此操作
我最终使用 high-level 3d 方应用程序的便携模式,如 obs-studio,并将它们添加到我们的最终包中。我还创建了一个 js 文件来使用 CLI
控制应用程序
这样我就可以 pre-set 我的选项(例如 crf 值等),现在我们的 3:30 1080p 分辨率小时值的平均输出大小约为 700MB,这令人印象深刻
正如我在标题中所说,我需要从电子应用程序中录制我的屏幕。
我的需求是:
- 高质量(720p 或 1080p)
- 最小尺寸
- 录制音频+屏幕+麦克风
- 录制时对 PC 硬件的影响较小
- 录音机停止后无需等待
by minimum size I mean about 400MB on 720p and 700MB on 1080p for a 3 to 4 hours recording. we already could achieve this by bandicam and obs and it's possible
我已经试过了:
- 简单的 MediaStreamRecorder API 使用 RecordRTC.Js;产生巨大的文件大小,例如 720p 视频每小时 1GB。
- 使用FFmpeg压缩输出视频;录制 3 小时最多可能需要 1 小时
- 使用 'ondataavailable' 事件保存每个块,紧接着 运行 FFmpeg 并转换和减小大小并附加所有压缩文件(也通过 FFmpeg);有两个问题。 1,由于不同的 PTS 但可以通过调整压缩命令参数来修复。 2,主要问题是音频数据 headers 仅在第一个块中可用,这种方法导致前几秒只有音频的视频
- 用FFmpeg本身录制视频; end-users 需要手动更改一些东西(立体声混音),配置太复杂,导致整个 PC 在录制时工作速度变慢(例如 fps 下降;即使我将 -threads 设置为 1),在某些情况下录制完成后需要多次打包的情况
- 通过互联网搜索以查找可以从命令行使用的应用程序;我找不到太多,像 bandicam 和 obs 这样的著名应用程序有命令行参数,但是没有太多的参数可以玩,我不能设置很多导致其他问题的选项
我不知道我还能做什么,如果您知道可以通过 CLI 实现此目的的方法或简单工具,请告诉我并指导我完成此操作
我最终使用 high-level 3d 方应用程序的便携模式,如 obs-studio,并将它们添加到我们的最终包中。我还创建了一个 js 文件来使用 CLI
控制应用程序这样我就可以 pre-set 我的选项(例如 crf 值等),现在我们的 3:30 1080p 分辨率小时值的平均输出大小约为 700MB,这令人印象深刻