Skip to content

Commit

Permalink
Merge pull request #13 from devsapp/headless-ffmpeg
Browse files Browse the repository at this point in the history
add detail theory in reade about headless ffmpeg
  • Loading branch information
rsonghuster authored Aug 16, 2022
2 parents 00689e4 + 3e0de9f commit e3c9294
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 74 deletions.
2 changes: 1 addition & 1 deletion headless-ffmpeg/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Type: Application
Name: headless-ffmpeg
Provider:
- 阿里云
Version: 0.1.11
Version: 0.1.12
Description: 快速部署一个全景录制的应用到阿里云函数计算
HomePage: https://github.com/devsapp/start-ffmpeg/tree/master/headless-ffmpeg
Tags:
Expand Down
73 changes: 0 additions & 73 deletions headless-ffmpeg/readme.md

This file was deleted.

1 change: 1 addition & 0 deletions headless-ffmpeg/readme.md
16 changes: 16 additions & 0 deletions headless-ffmpeg/src/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,22 @@ $ s invoke -e '{"record_time":"35","video_url":"http://devsapp.functioncompute.c

调用成功后, 会在对应的 bucket 下, 产生 record/test.mp4 这个 35 秒的全景录制视频。

# 原理

Chrome 渲染到虚拟 X-server,并通过 FFmpeg 抓取系统桌⾯,通过启动 xvfb 启动虚拟 X-server,Chrome 进⾏全屏显示渲染到到虚拟 X-server 上,并通过 FFmpeg 抓取系统屏幕以及采集系统声⾳并进⾏编码写⽂件。这种⽅式的适配性⾮常好, 不仅可以录制 Chrome,理论上也可以录制其他的应⽤。缺点是占⽤的内存和 CPU 较多。

**agent.sh**

custom container 启动脚本

**server.js**

custom container http server 逻辑

**record.sh**

核心录屏逻辑, 启动 xvfb, 在虚拟 X-server 中使用 `record.js` 中的 puppeteer 启动浏览器, 最后 FFmpeg 完成 X-server 屏幕的视频和音频抓取工作, 生成全屏录制后的视频

</appdetail>

<devgroup>
Expand Down

0 comments on commit e3c9294

Please sign in to comment.