このサイトでは、回答を改善する方法として、スクリーンキャストのアニメーションGIF画像(下のような)が何度か宣伝されています。
これらを作成するためにどのツールチェーンが使用されていますか?これを自動的に行うプログラムがありますか、それとも人々がスクリーンキャストを撮り、それらを一連の静的フレームに変換してからGIF画像を作成していますか?
画面からGIFを簡単に記録できる新しいアプリケーションです。
とにかく、GIFのカラーパレットは非常に限られているため、GIFを使用することはあまりお勧めできません。
Ubuntu 18.10以降では、Peekを直接インストールできます。
Sudo apt install peek
古いバージョンのUbuntuの場合、 PPA からPeekの最新バージョンをインストールできます。
Sudo add-apt-repository ppa:peek-developers/stable
Sudo apt update
Sudo apt install peek
GitHubリポジトリ で詳細を確認してください。
GIFスクリーンキャストを録画するのに私が見つけた最高のソフトウェアは、Byzanzです。
ByzanzはGIFに直接記録するため、ファイルのサイズを最小限に抑えながら品質とFPSが印象的であるため、素晴らしいです。
Byzanzは現在、ユニバースリポジトリから入手できます。
Sudo apt-get install byzanz
インストールされると、ターミナルで実行できます。
これは私が今やった小さな例です
byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif
最初にこれをインストールします:
Sudo apt-get install imagemagick mplayer gtk-recordmydesktop
これらは、必要なもの、ImageMagick、MPlayer、およびDesktop Recorderです。次に、Desktop Recorderを使用して、スクリーンキャストとして使用する画面/アプリケーションの一部をキャプチャします。デスクトップレコーダーが記録をOGVビデオに保存した後、MPlayerを使用してJPEGスクリーンショットをキャプチャし、「出力」ディレクトリに保存します。
ターミナルで:
mplayer -ao null <video file name> -vo jpeg:outdir=output
ImageMagickを使用して、スクリーンショットをアニメーションGIFに変換します。
convert output/* output.gif
この方法でスクリーンショットを最適化できます。
convert output.gif -fuzz 10% -layers Optimize optimised.gif
この回答には、3つのシェルスクリプトが含まれています。
byzanz-record-window
-記録するウィンドウを選択します。byzanz-record-region
-記録する画面の一部を選択します。byzanz
を紹介してくれたBruno Pereiraに感謝します! GIFアニメーションを作成するのに非常に便利です。場合によっては色が消えることもありますが、ファイルサイズがそれを補います。例: 40秒、3.7Mb 。
$PATH
内のフォルダーに次の2つのスクリプトの1つ/すべてを保存します。最初のスクリプトを使用して特定のウィンドウのスクリーンキャストを作成する例を次に示します。
byzanz-record-window 30 -c output.gif
を実行します$DELAY
にハードコードされます)、ここで記録の準備をします。beep
関数で定義)の後、byzanz
が開始されます。30
の意味)、byzanz
は終了します。ビープ音が再び放送されます。-c
フラグをbyzanz-record-window
に含めて、シェルスクリプトへの引数がbyzanz-record
自体に追加されることを示しました。 -c
フラグは、スクリーンキャストにカーソルも含めるようbyzanz
に指示します。
詳細については、 man byzanz-record
またはbyzanz-record --help
を参照してください。
byzanz-record-window
#!/bin/bash
# Delay before starting
DELAY=10
# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}
# Duration and output file
if [ $# -gt 0 ]; then
D="--duration=$@"
else
echo Default recording duration 10s to /tmp/recorded.gif
D="--duration=10 /tmp/recorded.gif"
fi
XWININFO=$(xwininfo)
read X <<< $(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y <<< $(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W <<< $(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H <<< $(awk -F: '/Height/{print $2}' <<< "$XWININFO")
echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
echo $i
sleep 1
done
beep
byzanz-record --verbose --delay=0 --x=$X --y=$Y --width=$W --height=$H $D
beep
byzanz-record-region
依存関係:xrectsel
from xrectsel リポジトリを複製し、make
を実行して実行可能ファイルを取得します。 (メイクファイルがないと抗議する場合は、 `makeを実行する前に./bootstrap
と./configure
を実行してください)。
#!/bin/bash
# Delay before starting
DELAY=10
# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}
# Duration and output file
if [ $# -gt 0 ]; then
D="--duration=$@"
else
echo Default recording duration 10s to /tmp/recorded.gif
D="--duration=10 /tmp/recorded.gif"
fi
# xrectsel from https://github.com/lolilolicon/xrectsel
ARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1
echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
echo $i
sleep 1
done
beep
byzanz-record --verbose --delay=0 ${ARGUMENTS} $D
beep
byzanz-record-window
のGuiバージョン( MHC によるコメント):シンプルなGUIダイアログでスクリプトを変更する自由を取りました
#!/bin/bash
# AUTHOR: (c) Rob W 2012, modified by MHC (https://askubuntu.com/users/81372/mhc)
# NAME: GIFRecord 0.1
# DESCRIPTION: A script to record GIF screencasts.
# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES: byzanz,gdialog,notify-send (install via Sudo add-apt-repository ppa:fossfreedom/byzanz; Sudo apt-get update && Sudo apt-get install byzanz gdialog notify-osd)
# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")
# Delay before starting
DELAY=10
# Standard screencast folder
FOLDER="$HOME/Pictures"
# Default recording duration
DEFDUR=10
# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}
# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)
# Duration and output file
if [ $USERDUR -gt 0 ]; then
D=$USERDUR
else
D=$DEFDUR
fi
# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")
# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."
#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif"
beep
# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"
私が使用する最良のツールの1つはffmpeg
です。 kazam
などのスクリーンキャストツールからほとんどのビデオを取得し、別の形式に変換できます。
これをsoftware-centerからインストールします-優れたubuntu-restricted-extras
パッケージをインストールすると、自動的にインストールされます。
Kazamはmp4
またはwebm
のビデオ形式で出力できます。一般に、mp4
形式で出力すると、より良い結果が得られます。
ビデオをgifに変換する基本的な構文は次のとおりです。
ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]
変換されたGIF-特に毎秒25/29フレームの標準のものは非常に大きくなる可能性があります。たとえば、25fpsの800Kb webm 15秒ビデオは435Mbに出力できます!
これを減らすには、いくつかの方法があります。
オプション-r [frame-per-second]
を使用します
たとえば、ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif
サイズを435Mbから19Mbに縮小
オプション-fs [filesize]
を使用します
たとえば、ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif
注-これはおおよその出力ファイルサイズであるため、サイズは指定されたサイズよりわずかに大きくなる場合があります。
オプション-s [widthxheight]
を使用します
たとえば、ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif
これにより、サンプルの1366x768ビデオサイズが26Mbに縮小されました。
GIFを永久にループさせたい場合があります。
オプション-loop_output 0
を使用します
ffmpeg -i Untitled_Screencast.webm -loop_output 0 -pix_fmt rgb24 out.gif
imagemagick
convert
を3%〜10%のファズ係数で使用すると、画像サイズを大幅に縮小できます。
convert output.gif -fuzz 3% -layers Optimize finalgif.gif
これらのオプションのいくつかを組み合わせて、Ask Ubuntuで管理可能なものに減らします。
ffmpeg -i Untitled_Screencast.webm -loop_output 0 -r 5 -s 320x200 -pix_fmt rgb24 out.gif
に続く
convert output.gif -fuzz 8% -layers Optimize finalgif.gif
例
Silentcastは、アニメーションの.gif画像を作成するための、GUIベースの優れたツールです。その機能は次のとおりです。
4つの記録モード:
画面全体
内側の窓
装飾が施された窓
カスタム選択
3つの出力形式:
.gif
.mp4
.webm
.png
(フレーム)
.mkv
インストール不要(ポータブル)
カスタム作業ディレクトリ
カスタムfps
通常のインストールが必要で、Ubuntuのサポートされているバージョンを実行している場合、PPAでSilentcastをインストールできます。
Sudo add-apt-repository ppa:sethj/silentcast
Sudo apt-get update
Sudo apt-get install silentcast
サポートされているバージョンのUbuntuを実行していない場合(実際にアップグレードする必要があります!)、最新バージョンをダウンロードする必要があります GitHubページから と手動で依存関係を満たします(yadおよびffmpegを入手できます) here および here )または、13.10などの少し新しいバージョンを実行している場合は、 。debを直接ダウンロード を試すことができます。
Gnomeを使用している場合は、Silentcastを簡単に停止できるように Topicons extension をインストールすることをお勧めします。
デスクトップ環境のGUIからSilentcastを起動するか、ターミナルでsilentcast
コマンドを実行します。設定を選択して、画面の指示に従います。記録が終了すると、特定のフレーム数を削除して最終出力を最適化するためのダイアログが表示されます。
詳細な使用ガイドラインについては、READMEをご覧ください。 オンラインGitHubバージョン またはzlessまたはお気に入りのエディターで/usr/share/doc/silentcast
に保存されているローカルバージョンのいずれかです。
Silentcastはまだ開発段階にあり、非常に安定していますが、いくつかのバグが発生する可能性があります。報告してください プロジェクトのGitHub課題トラッカー上 。 PPAからのインストールに問題があり、サポートされているバージョンのUbuntuを実行している場合は、以下のコメントを残すか、Launchpadで メンテナーに連絡 (私)に連絡してください。
ここには、これを行うためのあらゆる種類の複雑で適切な(おそらく)方法があります。しかし、これまでもそれ以降も、このプロセスを経験したことがありません。そのため、必要に応じて、自分のニーズに合ったオンラインコンバータを使用するだけです。私はこのサイトを使用しました:
それは私のサイトではなく、私は彼らとは何の関係もありません。これらは私のブックマークの1つに過ぎず、さらに多くのブックマークがあります。
record-gif.sh
を作成しました。これは Rob Wのbyzanz-record-region
の改良版です:
byzanz
の不完全なGUI、ユーザーエクスペリエンスの向上(マウス選択可能領域、レコードプログレスバー、再生可能な記録)。
duration
を設定します。save_as
宛先を設定します。$HOME/record.again
を参照)。インストールスクリプトも作成しました
curl --location https://git.io/record-gif.sh | bash -
imagemagick
mplayer
gtk-recordmydesktop
ogv2gif.sh
をダウンロードします./ogv2gif.sh yourscreencast.ogv
100% maniat1k's answer 。に触発された
さらに洗練されたい場合は、HTMl5キャンバススクリーンキャストを使用したアニメーションGIFよりも洗練された方法を使用できます。 x11-canvas-screencast プロジェクトは、html5キャンバスアニメーションスクリーンキャプチャを作成します。
Sublime TextのWebサイトで、この技術の 有名な例 を見たことがあるかもしれません。 x11-canvas-screencast
は、マウスカーソルの追跡を組み込むことにより、このメソッドをさらに一歩進めます。 x11-canvas-screencastが生成するもののデモ
結果は、アニメーションGIFよりも優れています。色の数に制限されず、必要な帯域幅が少ないためです。
さて、マウスのクリックもキャプチャするために、私が見つけたのはkey-mon
( screenkey
のREADMEを介して) ):
Sudo apt-get install key-mon
その後私は:
key-mon
を開始xrectsel
を使用して、byzanz
コマンドに入力された画面座標を取得します。byzanz
コマンドを実行します...それは次のようなものです:
key-mon --visible_click
はマウスクリック時にマウスポインターの周りに円を描くことに注意してください-これは私が好むでしょうが、Ubuntu 14.04.5 LTSでは、この円は正しく壊れるのに十分な速さで現れたり消えたりしないため、これは多少壊れていますクリックを示します(マウスを押して離す)。
マウスクリックまたはキーストロークの可視記録も必要な場合は、screenkeyが最善の策です。 https://github.com/wavexx/screenkey
私は最近、すでにここに投稿されたスクリプトの組み合わせバージョンを作成しました。
基本的に、画面領域を記録できますが、シンプルなGUIを使用します。
Rob W これらのクールなスクリプトを提供してくれてありがとう
コードは次のとおりです(または、必要に応じて Gist )。
#!/bin/bash
#Records selected screen region, with GUI
#This is combined version of GIF recording scripts, that can be found here: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
#Thanks to Rob W, and the other author (unmentioned), for creating this lovely scripts
#I do not own any rights to code I didn't write
# ~Jacajack
DELAY=5 #Delay before starting
DEFDUR=10 #Default recording duration
TIME=$(date +"%Y-%m-%d_%H%M%S") #Timestamp
FOLDER="$HOME/Pictures/Byzanz" #Default output directory
#Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}
#Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)
#Duration and output file
if [ $USERDUR -gt 0 ]; then
D=$USERDUR
else
D=$DEFDUR
fi
#Get coordinates using xrectsel from https://github.com/lolilolicon/xrectsel
REGION=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."
for (( i=$DELAY; i>0; --i )) ; do
sleep 1
done
#Record
beep
byzanz-record --cursor --verbose --delay=0 ${REGION} --duration=$D "$FOLDER/byzanz-record-region-$TIME.gif"
beep
notify-send "GIFRecorder" "Screencast saved to $FOLDER/byzanz-record-region-$TIME.gif"
gtk-recordmydesktop
およびffmpeg
を使用します。
apt-get install gtk-recordmydesktop ffmpeg
RecordMyDesktopを実行して、スクリーンキャストとして使用する画面/アプリケーションの一部をキャプチャします。
gtk-recordmydesktop
次の内容でogv2gif.sh
を作成します。
INPUT_FILE=$1
FPS=15
WIDTH=320
TEMP_FILE_PATH="~/tmp.png"
ffmpeg -i $INPUT_FILE -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen $TEMP_FILE_PATH
ffmpeg -i $INPUT_FILE -i $TEMP_FILE_PATH -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" $INPUT_FILE.gif
rm $TEMP_FILE_PATH
これを使って :
./ogv2gif.sh yourscreencast.ogv
参照:
上記のすべての方法をテストしましたが、最も簡単な方法は次のとおりです。
fpsはオリジナルで、gifサイズはogvファイルより小さいです。