このサイトでは、回答を改善する方法として、スクリーンキャストのアニメーションGIFイメージ(下のような)が数回宣伝されています。
これらを作成するためにどのツールチェーンが使用されていますか?これを自動的に行うプログラムがありますか、それとも人々がスクリーンキャストを取り、それらを一連の静的なフレームに変換してからGIFイメージを作成しますか?
このサイトでは、回答を改善する方法として、スクリーンキャストのアニメーション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
xwininfo
して、ウィンドウのプロパティを取得できます。
最初にこれをインストールします:
sudo apt-get install imagemagick mplayer gtk-recordmydesktop
これらは、必要なもの、ImageMagick、MPlayer、および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
gifsicle -O in.gif -o out.gif
です。ファイルサイズを100倍削減しようとしました。
convert
ステップを1 つにまとめることをお勧めしますconvert output/* -layers Optimize output.gif
。私にとっては、これにより処理時間が短縮され、出力ファイルが小さくなりました。これらの手順を個別に行う理由はありません。(私は-fuzz 10%
引数を試していない。)
convert
ステートメントは恐ろしいものを超えました。ドキュメント(imagemagick.org/script/command-line-options.php#layers)によると、optimize
実装は時間とともに変化する可能性があります。しかし、フラグconvert
を使用してわずかに調整されたステートメントは-coalesce
状況を改善しましたが、それでも受け入れられるほどではありませんでした。-layers optimize-transparency
最良の結果を得るには、この設定を使用する必要がありましたconvert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif
この回答には3つのシェルスクリプトが含まれています。
byzanz-record-window
-記録するウィンドウを選択します。byzanz-record-region
-録画する画面の一部を選択します。ブルーノ・ペレイラを紹介してくれてbyzanz
ありがとう!GIFアニメーションを作成するのに非常に便利です。場合によっては色が消えることもありますが、ファイルサイズがそれを補います。例:40秒、3.7MB。
次の2つのスクリプトの1つ/すべてを、内のフォルダーに保存します$PATH
。最初のスクリプトを使用して特定のウィンドウのスクリーンキャストを作成する例を次に示します。
byzanz-record-window 30 -c output.gif
$DELAY
録音の準備をする10秒間(でハードコード化)待機します。beep
関数で定義)の後、byzanz
開始します。30
ステップ1の意味)、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
依存関係:xrectselxrectsel
から。リポジトリのクローンを作成して実行し、実行可能ファイルを取得します。(makefileがないことに抗議する場合は、実行してから `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
(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"
notify-send
サウンドがオフの場合にも使用したいです。
私が使用する最高のツールの1つはffmpeg
です。などのスクリーンキャストツールからほとんどのビデオを取得kazam
し、別の形式に変換できます。
これをソフトウェアセンターからインストールしubuntu-restricted-extras
ます。優れたパッケージをインストールすると、自動的にインストールされます。
Kazamは、ビデオ形式mp4
またはで出力できますwebm
。一般的に、より良い結果をmp4
フォーマットで出力できます。
ビデオをgifに変換する基本的な構文は次のとおりです。
ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]
変換されたGIF-特に標準の25/29フレーム/秒のGIFは非常に大きくなる可能性があります。たとえば、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
例
demo.mkv
場合は、次のコマンドを実行できます。docker run --rm -v $(pwd):/tmp/video/ jrottenberg/ffmpeg -i /tmp/video/demo.mkv -framerate 1/2 -pix_fmt rgb24 -loop 0 /tmp/video/demo.gif
、sudo chown $USER:$USER demo.gif
ubuntu-restricted-extras
優れていると思いますか?
-loop
。だからそうだろう-loop 0
。Ubuntu 16.04.01で動作するコマンドを次に示しffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif
ます。+500,500
100x100の長方形を開始するX、Y位置です。xgrab
入力として画面を受け取ります。
Silentcastは、アニメーションの.gif画像を作成するためのもう1つの優れた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を入手できます)または、 13.10などの少し新しいバージョンを実行している場合は、.debを直接ダウンロードしてみてください。
Gnomeを使用している場合は、Topicons拡張機能をインストールして、Silentcastを簡単に停止できます。
デスクトップ環境のGUIからSilentcastを起動するかsilentcast
、ターミナルでコマンドを実行します。設定を選択して、画面の指示に従います。記録が終了すると、特定の数のフレームを削除して最終出力を最適化するためのダイアログが表示されます。
詳細な使用ガイドラインについては、README をご覧ください。オンラインGitHubバージョンまたは/usr/share/doc/silentcast
zlessまたはお気に入りのエディターで保存されているローカルバージョンのいずれかです。
Silentcastはまだ開発段階にあり、非常に安定していますが、いくつかのバグが発生する可能性があります。その場合は、プロジェクトのGitHub課題トラッカーで報告してください。PPAからのインストールに問題があり、Ubuntuのサポートされているバージョンを実行している場合は、以下のコメントを残すか、Launchpadのメンテナー(me)に連絡してください。
ここには、これを行うためのあらゆる種類の複雑でうまく機能する(おそらく)方法があります。しかし、これまでもそれ以降も、このプロセスを経験したことがありません。そのため、必要に応じて、自分のニーズに合ったオンラインコンバーターを使用するだけです。私はこのサイトを使用しました:
それは私のサイトではなく、私は彼らとは何の関係もありません。これらは私のブックマークの1つに過ぎず、さらに多くのブックマークがあります。
Rob Wのrecord-gif.sh
改良版を作成しました:byzanz-record-region
の不完全なGUI
byzanz
により、ユーザーエクスペリエンスが向上しました(マウスで選択可能な領域、進行状況バーの記録、再生可能な記録)。
duration
ます。save_as
宛先を設定します。$HOME/record.again
)。インストールスクリプトも作成しました
curl --location https://git.io/record-gif.sh | bash -
sudo apt install autoconf byzanz
このスクリプトを実行する前に行う必要があります。ubuntuにはデフォルトでインストールされません
autoconf
とをインストールしましたbyzanz
。試してもらえますか?
imagemagick
mplayer
gtk-recordmydesktop
ogv2gif.sh
からダウンロード./ogv2gif.sh yourscreencast.ogv
maniat1kの回答からインスピレーションを受けた100%。
さらに洗練されたい場合は、HTMl5キャンバススクリーンキャストを使用したアニメーションGIFよりも洗練された方法を使用できます。X11-キャンバス-スクリーンキャストのプロジェクトは、画面キャプチャアニメーションHTML5のキャンバスを作成します。
Sublime TextのWebサイトで、この技術の有名な例を見たことがあるかもしれません。x11-canvas-screencast
マウスカーソルの追跡を組み込むことにより、このメソッドをさらに一歩進めます。ここだX11-キャンバス-スクリーンキャストが生成するもののデモは、
結果は、アニメーションGIFよりも優れています。色の数に制限されず、必要な帯域幅が少ないためです。
それでは、マウスクリックもキャプチャするために、私が見つけたのはkey-mon
(のREADME経由でscreenkey
)
sudo apt-get install key-mon
その後私は:
key-mon
xrectsel
された画面座標を取得するために使用しますbyzanz
byzanz
コマンドを実行する...それは次のようなものです:
key-mon --visible_click
マウスクリック時にマウスポインタの周りに円を描くことに注意してください-これは私が好むでしょうが、Ubuntu 14.04.5 LTSでは、クリックを正しく示すためにこの円が十分に速く現れたり消えたりしないため、これは多少壊れていますマウスを押して離す)。
私は最近、すでにここに投稿されたスクリプトの組み合わせバージョンを作成しました。
基本的に、画面領域を記録できますが、シンプルなGUIを使用します。
これらのクールなスクリプトを提供してくれたRob Wに感謝します
コードは次のとおりです(または、必要に応じて要旨)。
#!/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ファイルより小さいです。