9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidの画面キャプチャを高速化するための試行錯誤

Last updated at Posted at 2017-06-07

目的

  • Android端末の画面キャプチャを高速で行いたい.
    • 昨今スマホゲームの1ジャンルである音ゲーの自動テストを行うため

問題点

  • 従来手法:adbコマンドからscreencapコマンドを使用
    • 画面のFullHD化に伴い,キャプチャーから転送までに非常に時間がかかるようになってしまった.
    • 下手するとキャプチャから画像を引っ張ってくるのに2秒ぐらいかかる.これでは音ゲーのテストが出来ない.

試行錯誤

Android Screen Monitor
  • adakoda様が制作されたものですが,開発が4年前で止まっていること,また当初想定された画面サイズから現在かなり肥大化したためキャプチャが追い付かないことなどから断念.
HDMI Capture Deviceの利用
  • JaSST'17のCygames様の発表を拝見させていただき,MHL経由でのHDMI Captureによる画像取得に思い至る.しかしながら, 筆者がC#書けないヘタレであること HDMI Capture Device自体が高価であること,また複数台接続に不安があることから,本手法を断念.

解決案

  • CyberAgent様が以前発表されたSmartphone Test Farm (OpenSTF) の技術として,minicapというのがあるらしいのでこれをどうにかして使えないだろうか,と考える.
  • 筆者はJavaScript書けないヘタレであるため ゆくゆくはOpenCVとの連携も視野に入れるため,Pythonでの実装を考えることにする.

んで.

実装

  • stream.py がminicapプロセスからのデータを取得する部分で,データの解析部分になる.
    • データの説明については本家が一番であるため割愛
  • 画像データ取得後,処理を行っているのはsample project の minicap.py で,取得した画像データをOpenCV形式に変換している.

感想

  • 画面キャプチャが速くなったのはいいが,画面をタップしたりフリックしたりする動作がadb経由で遅いままなのでそっちを改善しないといけなくなった.

参考

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?