Android

コマンド一発でAndroidの画面を録画してGIFを作成する

More than 3 years have passed since last update.

デザイナーやチームの他のメンバーの人と、

どんな動きをするのか等 UI/UXのやり取りをする際に

GIFを作成してslack等に送りたい時が多々あるのですが、

録画して...変換して...とやっていると中々手間だったりします。

コマンド一発で接続している端末の録画をし、

とりあえずデスクトップに動画とGIFを保存するスクリプトを書きました。

YOUR_PATHの箇所を変更すれば、好きな場所に保存されます。

スクリーンショット バージョンはこちら


環境


  • 今回はOSXでbash使ってます

  • adbのpathが通っている前提

  • GIF変換までする方はffmpegをインストールしておいて下さい mac(brew) -> brew install ffmpeg

  • Androidの端末バージョンは4.4以上


Script

以下のスクリプトを作成します


adb-screen-record.sh

#!/bin/sh

DATE=`date '+%y%m%d%H%M%S'`
FILE_NAME=record-${DATE}
YOUR_PATH=~/Desktop

adb shell screenrecord /sdcard/${FILE_NAME}.mp4 &
pid=`ps x | grep -v grep | grep "adb shell screenrecord" | awk '{ print $1 }'`

if [ -z "$pid" ]; then
printf "Not running a screenrecord."
exit 1
fi

printf "Recording, finish? [y]"
while read isFinished; do
case
"$isFinished" in
"y" | "Y") break ;;
*) printf "Incorrect value." ;;
esac
done

kill -9 $pid # Finished the process of adb screenrecord
while :
do
alive=`adb shell ps | grep screenrecord | grep -v grep | awk '{ print $9 }'`
if [ -z "$alive" ]; then
break
fi
done

printf "Finished the recording process : $pid\nSending to $YOUR_PATH...\n"
adb pull /sdcard/${FILE_NAME}.mp4 $YOUR_PATH
adb shell rm /sdcard/${FILE_NAME}.mp4

echo "Converts to GIF? [y]"
read convertGif
case $convertGif in
"y" | "Y") ffmpeg -i ${YOUR_PATH}/${FILE_NAME}.mp4 -an -r 15 -pix_fmt rgb24 -f gif ${YOUR_PATH}/${FILE_NAME}.gif ;; # creating gif
*) ;;
esac


録画はyを入力すると終了します。

その後、yを押すとGIFへ変換されます。

他のボタンを押すと終了します。

このスクリプトを任意の場所に保存し、

.bash_profile等にpathを書いておけば

任意の場所から adb-screen-record.shのコマンド一発で

デスクトップに変換・保存されます。

adb screenrecordの制約で録画時間は3分までになっています。

今回はデフォルトの値を利用してますが、録画サイズなどを指定したい場合はこちらを見てパラメーターを設定して下さい。

GIF変換のオプションを変更する場合はこちらを見て下さい。

screenrecordを終了してすぐに送信するとエラーが起きるので

sleep 3としましたが、他に何か良い方法がありましたら教えて下さい。

-> @aremokoremoさんに教えていただいた方法を追記しています