ちょっと話題の記事

[Android4.4 KitKat] 新機能 screenrecordで画面を録画する方法 | アドカレ2013 : SP #19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

アプリ開発者、ゲーマーに嬉しい画面録画機能

アプリケーションを開発していて、ゲームをしていて「あぁ今の動き録画できたらな〜」なんて感じたことはありませんか?
そんな願いを簡単に叶えてくれる機能が「Android4.4」で追加されました!
これまでも画面を録画する方法はありましたが、root化しなくてはいけなかったり、もっさりカクカクしていたりイマイチすっきりしない感じでした。
そこで、今回はscreenrecordを使ってAndroidデバイスの操作を録画する方法を解説したいと思います。

重要なポイント

  • 録画可能最大時間3分
  • 音声は記録されません
  • でも、高画質で録画できます!

使いどころ

アプリケーションのテストでの使用はもちろんのこと、使用方法や機能などの解説をするチュートリアルムービーやプロモーションムービーの制作に役立つこと間違いなし。
言葉だけじゃ信じてもらえない神プレイも高画質で録画。
更に、MP4でサクッとYouTubeにアップロードできちゃう。端末を操作しながらプレゼンする必要はもうありません!

使い方

それでは、本題の画面録画機能の使い方を解説していきます。

必要な環境

Android SDKのインストールとadb(Android Debug Bridge)がコマンドラインから実行出来る環境が前提条件です。
Androidデバイスは開発者オプションからUSBデバッグモードを有効にしておく。
(設定に開発者向けオプションが見当たらないときは設定の端末情報からビルド番号を7回タップしてみてください)

全体の流れ

  1. 準備
  2. デバイス上の操作を録画して動画ファイルを保存する
  3. デバイス上で再生できるか確認する
  4. 保存した動画ファイルをPCに転送する
  5. PCで再生できるか確認する

以上の流れで解説を進めていきたいと思います。

1. 準備

まず始めにデバイスとPCをUSBで接続しておきます。
このとき、接続されるデバイス(エミュレーター含む)が複数ある場合は コマンドラインツールを起動し、"adb devices"と入力して録画に使用したい デバイスのシリアル番号を控えておいてください。
下記のハイライトの行のように接続可能なデバイスのシリアル番号が表示されます。

$ adb devices
List of devices attached 
0123455789abcde	device
emulator-0000	device

2. デバイス上の操作を録画して動画ファイルを保存する

一番単純な方法

コマンドラインで下記のように記述して実行します。

接続可能なデバイスが一つの場合

$ adb shell screenrecord /ファイルの保存場所/ファイル名.mp4

接続可能なデバイスが複数の場合

$ adb devices
List of devices attached 
シリアル番号	device
emulator-0000	device
$ adb -s シリアル番号 shell screenrecord /ファイルの保存場所/ファイル名.mp4

ここでは単純にsdcardディレクトリの直下にhoge.mp4というファイルを保存することにします。

$ adb shell screenrecord /sdcard/hoge.mp4
/** 録画中は何も表示されない */

コマンドを実行し改行したあとは、思いのままにデバイスを操作するだけです。
3分経過すると自動的に録画は終了します。
また、途中で録画を終了したい場合はCtrl+Cで終了することができます。
(Macの場合もcommand+Cではなくcontrol+C です)
録画が終了したら、先に指定しておいた場所に動画が保存されます。 今回の例ではsdcardディレクトリの直下となります。

動画の設定を変更して録画する方法

screenrecordコマンドにはオプションが用意されています。
ここでは、解像度、ビットレート、録画時間の設定方法を解説します。
screenrecordコマンドで利用できるオプションは下記の通りです。

--size 		解像度
--bit-rate 	ビットレート
--time-limit    録画時間
解像度の設定は
screenrecord --size 1080x1920

のように「幅x高さ」で指定します。
このオプションを指定しない場合はデバイスの画面のサイズで録画されます。
ほとんどのケースで画面全体を録画すると思うので利用頻度は低いでしょう。
ちなみに数値の間の記号はエックス(x)です。

ビットレートの設定は
screenrecord --bit-rate 10000000

のように指定します。
このオプションを指定しない場合は4Mbps(4000000bps)となります。
大きな画面に映すような場合はビットレートを高めに指定したほうがいいでしょう。
ちなみにビットレートの指定可能範囲は100000bps〜100000000bpsとなってます。

録画時間の設定は
screenrecord --time-limit 120

のように指定します。
このオプションを指定せず、途中終了しない場合は180秒で自動的に録画が終了します。
録画時間を秒単位で指定することができます。

仮にビットレートを10Mbps、録画時間を30秒で録画したい時は次のようになります。

adb shell screenrecord --bit-rate 10000000 --time-limit 30 /sdcard/hoge.mp4

デバイス上で再生出来るか確認する

録画が完了したらデバイスで再生してみましょう。
ギャラリーに動画が出てこない場合は再起動すると出てくることがあります。
録画した動画を発見して無事再生出来れば成功です。

保存した動画ファイルをPCに転送する

録画した動画をYouTubeにアップロードしたり編集したりするにはPCでの作業が必要になるかと思います。
そこで、デバイスに保存してある動画ファイルをPCに転送してみましょう。
※shellに入っている場合はexitコマンドでshellを抜けておいてください
デバイスのファイルをPCに転送するにはpullコマンドを使用します。
次のように記述します。

adb pull 転送元のファイルのパス 転送先の場所

転送元のファイルのパスは今回の場合だと"/sdcard/hoge.mp4"となります。
転送先の場所は動画を保存したいディレクトリのパスを指定します。
cdコマンドでディレクトリを移動して実行すれば移動先のディレクトリにファイルが転送されます。
また、ディレクトリのパスに続けてファイル名も指定することが出来るのでファイル名の変更の必要があるときはここで変更できます。 実際にコマンドを実行してみましょう。

$ adb pull /sdcard/hoge.mp4 
5117 KB/s (37287067 bytes in 7.115s)

コマンド実行して、しばらくすると転送速度、ファイル容量、かかった時間が表示されてPCにファイルが転送されました。

デバイスからPCへファイル転送完了

PCで再生出来るか確認する

最後にPCで再生してみます

キャプチャ動画

無事に再生することができました。
デバイス上で再生したときよりも格段に高画質でヌルヌル再生できました。

まとめ

複雑な手順を踏まなくても手軽に高画質な録画が可能になったのはとてもありがたいことですね。
3分までしか録画できないのと、音声が記録できないのは結構残念な点ではありますが、録画時間は単純に結合してしまえばいいし、音声はイヤホンジャックから録音して結合すればいいのでやろうとおもえばどうにでもなりそうな範囲です。
ただ、一刻一刻がドラマの連続みたいなゲーム画面を録画するようなケースだと急に使い勝手が悪くなりそうです。

デフォルトの設定だと少し画質が荒い印象を受けるので、用途に応じてビットレートの設定が必要になります。
YouTubeにアップロードする為だけに録画するのであればデフォルトの4Mbps〜8Mbps程度で十分事足りると思いますが、大きな画面等で高画質で再生したい場合は20Mbps〜50Mbpsのビットレートにするといいと思います。
早い動き等がある場合はブロックノイズやコマ落ちが出やすくなるのでビットレートを高めに設定しておきましょう。
ただ、指定できる最高100Mbpsまでいくと通常の画面では実感できません。容量の無駄遣いは極力やめときましょう。

YouTubeにアップロードするとこんな感じになります

[SWF]https://www.youtube.com/watch?v=_HYXwyF6oEs,550,350[/SWF]

動画でプレイしているゲームはこちら

クリスマスに楽しめるサンタの爽快だるま落としゲーム - underscore, Inc

Android版
iOS版