| # Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| # |
| # Use of this source code is governed by a BSD-style license |
| # that can be found in the LICENSE file in the root of the source |
| # tree. An additional intellectual property rights grant can be found |
| # in the file PATENTS. All contributing project authors may |
| # be found in the AUTHORS file in the root of the source tree. |
| |
| from optparse import OptionParser |
| import random |
| import string |
| import subprocess |
| import sys |
| import time |
| |
| from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice |
| |
| |
| def main(): |
| parser = OptionParser() |
| |
| parser.add_option('--devname', dest='devname', help='The device id') |
| |
| parser.add_option( |
| '--videooutsave', |
| dest='videooutsave', |
| help='The path where to save the video out file on local computer') |
| |
| parser.add_option('--videoout', |
| dest='videoout', |
| help='The path where to put the video out file') |
| |
| parser.add_option('--videoout_width', |
| dest='videoout_width', |
| type='int', |
| help='The width for the video out file') |
| |
| parser.add_option('--videoout_height', |
| dest='videoout_height', |
| type='int', |
| help='The height for the video out file') |
| |
| parser.add_option( |
| '--videoin', |
| dest='videoin', |
| help='The path where to read input file instead of camera') |
| |
| parser.add_option('--call_length', |
| dest='call_length', |
| type='int', |
| help='The length of the call') |
| |
| (options, args) = parser.parse_args() |
| |
| print(options, args) |
| |
| devname = options.devname |
| |
| videoin = options.videoin |
| |
| videoout = options.videoout |
| videoout_width = options.videoout_width |
| videoout_height = options.videoout_height |
| |
| videooutsave = options.videooutsave |
| |
| call_length = options.call_length or 10 |
| |
| room = ''.join( |
| random.choice(string.ascii_letters + string.digits) for _ in range(8)) |
| |
| # Delete output video file. |
| if videoout: |
| subprocess.check_call( |
| ['adb', '-s', devname, 'shell', 'rm', '-f', videoout]) |
| |
| device = MonkeyRunner.waitForConnection(2, devname) |
| |
| extras = { |
| 'org.appspot.apprtc.USE_VALUES_FROM_INTENT': True, |
| 'org.appspot.apprtc.AUDIOCODEC': 'OPUS', |
| 'org.appspot.apprtc.LOOPBACK': True, |
| 'org.appspot.apprtc.VIDEOCODEC': 'VP8', |
| 'org.appspot.apprtc.CAPTURETOTEXTURE': False, |
| 'org.appspot.apprtc.CAMERA2': False, |
| 'org.appspot.apprtc.ROOMID': room |
| } |
| |
| if videoin: |
| extras.update({'org.appspot.apprtc.VIDEO_FILE_AS_CAMERA': videoin}) |
| |
| if videoout: |
| extras.update({ |
| 'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE': |
| videoout, |
| 'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_WIDTH': |
| videoout_width, |
| 'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT': |
| videoout_height |
| }) |
| |
| print extras |
| |
| device.startActivity(data='https://appr.tc', |
| action='android.intent.action.VIEW', |
| component='org.appspot.apprtc/.ConnectActivity', |
| extras=extras) |
| |
| print 'Running a call for %d seconds' % call_length |
| for _ in xrange(call_length): |
| sys.stdout.write('.') |
| sys.stdout.flush() |
| time.sleep(1) |
| print '\nEnding call.' |
| |
| # Press back to end the call. Will end on both sides. |
| device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP) |
| |
| if videooutsave: |
| time.sleep(2) |
| |
| subprocess.check_call( |
| ['adb', '-s', devname, 'pull', videoout, videooutsave]) |
| |
| |
| if __name__ == '__main__': |
| main() |