追加投資なしでAndroidの画面をなんとかパソコンに表示する方法がないか調べた。
候補1
Android Screen Monitor
http://www.adakoda.com/adakoda/android/asm/
かなり昔からあり、adbドライバさえ設定されていれば画面共有がおこなえる。
しかし、ほぼ静止画なのである。
windowsでもmacでもjavaとadbが入っていれば動作する。
候補2
adb screenrecord
こちらはAndroid4.4以降に搭載されたadbコマンドの一つでスクリーンキャプチャが取れる。
※候補2はwindowsではうまくいっていません。
公式のドキュメントを見に行くと
http://developer.android.com/intl/ja/tools/help/shell.html
そのようなコマンドが確かにある。
普通の使い方としては、Android単体でキャプチャをとって、内蔵メモリかSDカードへ出力する。ゲームの画面をとってアップしたい人なんかにはこの使い方で問題ない。
adb shell screenrecord /storage/sdcard1/test.mp4
この場合、sdcard1として認識されているメモリにtest.mp4というファイルが作成される。
adb shell screenrecordの結果をファイルではなく、これをパイプでつないで、動画プレイヤー上に表示させるというもの。
adb screenrecordには非公開のオプションがあるらしく、その辺を指定する?
要は標準出力へ出力できればいいのであるが、細かい事は必要ないので調べていない。
ソースコードには確かに非公開オプションがある
http://tools.oesf.biz/android-6.0.0_r1.0/xref/frameworks/av/cmds/screenrecord/screenrecord.cpp#954
コマンドラインで使える動画プレイヤーとしてffmpegのffplayを使う。
ffplayはffmpegの圧縮ファイルの中のbinに入っている
(windows用)
https://ffmpeg.zeranoe.com/builds/win32/static/
(Mac用)
https://evermeet.cx/ffmpeg/
Macの場合
ターミナルでは以下のようにadbにパスを通し、ffplayがカレントフォルダにある状況で以下のように実行した
adb shell screenrecord --output-format=h264 - | ./ffplay -
$ adb shell screenrecord --output-format=h264 - | ./ffplay -
ffplay version 3.0-tessus Copyright (c) 2003-2016 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --enable-librtmp --enable-ffplay --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 55. 17.103 / 55. 17.103
libavcodec 57. 24.102 / 57. 24.102
libavformat 57. 25.100 / 57. 25.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 31.100 / 6. 31.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
|
激安スマホを使っているのがバレるスクリーンショット |
画面がでるまでに少々時間がかかるのと、操作しないとキャプチャデータが増えないのか、画面がでない点に注意。
Windowsの場合
コマンドプロンプトではこのように指定するが表示がめちゃめちゃ
adb shell screenrecord --output-format:h264 - | ffplay -
[h264 @ 0000000000126220]ってところがエラー
C:\Users\user>adb shell screenrecord --output-format h264 - | ffplay -
ffplay version N-79143-g8ff0f6a Copyright (c) 2003-2016 the FFmpeg developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l
ibilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopenc
ore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --ena
ble-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enabl
e-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-l
ibvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-li
bwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enab
le-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 30.100 / 57. 30.100
libavformat 57. 29.101 / 57. 29.101
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 40.102 / 6. 40.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[h264 @ 0000000000126220] negative number of zero coeffs at 1 0/0
[h264 @ 0000000000126220] error while decoding MB 1 0
[h264 @ 0000000000126220] top block unavailable for requested intra mode at 1 17
[h264 @ 0000000000126220] error while decoding MB 1 17
[h264 @ 0000000000126220] top block unavailable for requested intra mode at 21 3
3
[h264 @ 0000000000126220] error while decoding MB 21 33
[h264 @ 0000000000126220] concealing 1500 DC, 1500 AC, 1500 MV errors in I frame
Windowsでも画面は出るにはでるが、まともな画像はでない。
原因を調べるだけの余裕がない。