Recterm – 在 Linux 終端上錄製帶音頻的視頻

我們一般用錄像機錄製終端,但輸出的視頻普遍模糊,質量不高。 ASCIINEMA 是一種輕量級工具,可記錄和共享具有高質量視頻的終端會話。 asciinema 的缺點是視頻不包含音頻。 recterm是一個可以將終端錄製成mp4文件的工具。 它不需要像 vlc、mplayer 這樣的任何視頻播放器來錄製帶有音頻的 mp4。 本文介紹了安裝 Recterm 以使用 asciinema、asciinema2gif 和 ffmpeg 將終端錄製為帶音頻的 mp4。

安裝 asciinema

ASCIINEMA 是一個記錄終端活動的輕量級工具。 終端錄製完成後,它會提供一個 URL 來共享錄製的會話。 觀眾可以簡單地暫停視頻,突出顯示命令並將其複制/粘貼到他們的終端中。 安裝 海鞘, 從終端執行以下命令。

 # sudo curl -sL https://asciinema.org/install | sh
 Downloading asciinema v1.2.0 for linux-amd64...
 ########################################100.0%
 Installing to /usr/local/bin/asciinema...
 Success.

安裝 linuxbrew

Linuxbrew 是 Mac OS 包管理器 Homebrew 的一個分支。 它可以安裝在主目錄中,不需要 root 訪問權限。 Linuxbrew 幾乎沒有我們將首先安裝的依賴項。 我們需要 linuxbrew 來安裝 asciinema2gif。

 # sudo apt-get install build-essential curl git python-setuptools ruby

現在安裝 linuxbrew

 # ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"

==> This script will install:
 /home/ubuntu/.linuxbrew/bin/brew
 /home/ubuntu/.linuxbrew/Library/...
 /home/ubuntu/.linuxbrew/share/doc/homebrew
 /home/ubuntu/.linuxbrew/share/man/man1/brew.1
 /home/ubuntu/.linuxbrew/share/zsh/site-functions/_brew
 /home/ubuntu/.linuxbrew/etc/bash_completion.d/brew
 /home/ubuntu/.cache/Homebrew/
 .................................................
 .................................................

將 linuxbrew 二進制路徑添加到 PATH,將手冊頁添加到 MANPATH,並將信息路徑添加到 ~/.bash_profile 中的 INFOPATH 環境變量。

 # echo 'export PATH="/home/ubuntu/.linuxbrew/bin:$PATH"' >>~/.bash_profile
 # echo 'export MANPATH="/home/ubuntu/.linuxbrew/share/man:$MANPATH"' >>~/.bash_profile
 # echo 'export INFOPATH="/home/ubuntu/.linuxbrew/share/info:$INFOPATH"' >>~/.bash_profile

加載新環境。

 # source ~/.bash_profile

Linuxbrew 建議安裝 gcc。 我們需要它,因為在安裝 asciinema2gif 時,brew 將為它編譯依賴項。

 # brew install gcc

通過從終端執行以下命令來檢查 brew 的安裝。

 # brew install hello

安裝 asciinema2gif

使用 linuxbrew 安裝 asciinema2gif。 在安裝 asciinema2gif 時,brew 還將安裝所有依賴項,包括 gifsicle、xz、pkg-config、libtool、bzip2、jpeg、zlib、libpng、libtiff、freetype、imagemagick、gpatch、openssl、icu4c、libxml2、phantomjs。

 #  brew install asciinema2gif
 ==> Tapping homebrew/dupes
 Cloning into '/home/ubuntu/.linuxbrew/Library/Taps/homebrew/homebrew-dupes'...
 remote: Counting objects: 42, done.
 remote: Compressing objects: 100% (42/42), done.
 remote: Total 42 (delta 0), reused 3 (delta 0), pack-reused 0
 Unpacking objects: 100% (42/42), done.
 .....................................................
 .....................................................

安裝 ffmpeg/sox

當我們開始錄製終端時,需要SOX單獨開始錄音。 FFMPEG 需要用於將所有 gif 轉換為 mp4 文件並將音頻 (WAV) 與最終的 MP4 文件結合起來。 安裝 bc 是一種任意精度的數字處理語言。 這是重新調整 mp4 大小和正確組合 mp4 和 wav 所必需的。

 # sudo apt-get install sox ffmpeg bc

安裝 recterm

要安裝 recterm,只需克隆 github 存儲庫並更改腳本的權限。

 # git clone https://github.com/rascoro1/recterm.git
 # cd recterm/
 # chmod +x recterm.sh 
 # chmod +x to_gif.sh

現在在 vi 編輯器中打開 asciinema2gif 腳本並編輯第 116 行。您可以在終端中使用“which asciinema2gif”找到它的位置。 這是必需的,因為 asciinema2gif 在第 14 行配置的臨時目錄中創建 gif/png 文件,即

 readonly tempdir="$(mktemp -d -t asciinema2gif.XXXX)"

編輯以下文件並更改 png/gif 文件的位置。 如果您使用不同版本的 asciinema2gif,文件路徑可能會有所不同。

 # vim /home/ubuntu/.linuxbrew/Cellar/asciinema2gif/0.5/libexec/bin/asciinema2gif

因此,要通過 convert 命令在適當的目錄中找到 gif/png 文件,請將 gif/png 文件的目錄位置更改為 /tmp/asciinema2gif*/幀/*.png gif 使最後一行看起來像這樣-

 convert -delay 5 -loop 0 /tmp/asciinema2gif*/frames/*.png gif:- | gifsicle --colors=256 --delay=6 --optimize=3 --output="asciicast.gif"

在 asciinema2gif 腳本的末尾,添加以下行以刪除臨時目錄。

 rm -rf /tmp/asciinema2gif*/

在轉換為 mp4 時,如果輸出包含“gifsicle:: empty files”,這意味著轉換命令無法找到 png/gif 文件,或者沒有足夠的內存將 png/gif 轉換為 mp4。 如果您嘗試錄製大文件,則必須至少有 2GB RAM,否則轉換命令將以“已終止”狀態退出。

現在切換到 recterm 目錄並執行它。

 # ./recterm.sh new_term
 ~ Asciicast recording started.
 ~ Hit Ctrl-D or type "exit" to finish.

將有一個名為 new_term 的文件夾,從那裡執行了 recterm 腳本,並且可以在此處找到最終的 mp4 文件。

結論

recterm 是一個輕量級的終端錄音工具以及音頻。 它利用 asciinema、asciinema2gif 和 ffmpeg 來執行任務。 如果您有安裝問題,請在 直腸問題 github 中的部分。 感謝您閱讀文章。