Chromium Code Reviews| Index: build/android/adb_record_screen.py |
| diff --git a/build/android/adb_record_screen.py b/build/android/adb_record_screen.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..0298a8c80e9bc5766fbc8db6b55a3805878d3793 |
| --- /dev/null |
| +++ b/build/android/adb_record_screen.py |
| @@ -0,0 +1,66 @@ |
| +#!/usr/bin/env python |
| +# |
| +# Copyright 2013 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +import logging |
| +import optparse |
| +import os |
| +import signal |
| +import sys |
| +import time |
| + |
| +from pylib import android_commands |
| +from pylib import cmd_helper |
| + |
| + |
| +def _GetTimestamp(): |
| + return time.strftime('%Y-%m-%d-%H%M%S', time.localtime()) |
| + |
| + |
| +def _PrintMessage(heading, eol='\n'): |
| + sys.stdout.write('%s%s' % (heading, eol)) |
| + sys.stdout.flush() |
| + |
| + |
| +def _CaptureAndPullVideo(adb, output): |
| + video_file = '/sdcard/screen-recording.mp4' |
| + host_file = output or 'screen-recording-%s.mp4' % _GetTimestamp() |
| + host_file = os.path.join(os.path.curdir, host_file) |
| + |
| + recorder = cmd_helper.Popen(['adb', 'shell', 'screenrecord', video_file]) |
|
bulach
2013/11/04 16:59:44
-s serial?
Sami
2013/11/07 16:08:03
Done. (I went with -d/--device to match telemetry.
|
| + |
| + _PrintMessage('Recording. Press Enter to stop...', eol='') |
| + raw_input() |
| + |
| + recorder.send_signal(signal.SIGINT) |
|
bulach
2013/11/04 16:59:44
iirc, this does not do what I thought it would ;)
Sami
2013/11/07 16:08:03
Thanks for pointing this out. Now I know why my vi
|
| + recorder.wait() |
| + |
| + _PrintMessage('Downloading...', eol='') |
| + adb.RunShellCommand('sync') |
| + adb.PullFileFromDevice(video_file, host_file) |
| + adb.RunShellCommand('rm -f "%s"' % video_file) |
| + _PrintMessage('done') |
| + _PrintMessage('Video written to %s' % os.path.abspath(host_file)) |
| + |
| + |
| +def main(): |
| + parser = optparse.OptionParser(description='Record screen capture videos on ' |
|
bulach
2013/11/04 16:59:44
there's a "screenshot.py" already.. perhaps add a
Sami
2013/11/07 16:08:03
Great idea, I didn't know about screenshot.py. I'v
|
| + 'Android (KitKat+) devices.') |
| + |
| + parser.add_option('-o', '--output', help='Save video to file.') |
| + parser.add_option('-v', '--verbose', help='Verbose logging.', |
| + action='store_true') |
| + options, args = parser.parse_args() |
| + |
| + if options.verbose: |
| + logging.getLogger().setLevel(logging.DEBUG) |
| + |
| + adb = android_commands.AndroidCommands() |
| + _CaptureAndPullVideo(adb, options.output) |
| + return 0 |
| + |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main()) |