Index: webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py |
diff --git a/webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py b/webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9427ccf90e1fd4215a2772f9e06f70deed88104d |
--- /dev/null |
+++ b/webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py |
@@ -0,0 +1,123 @@ |
+# Copyright 2016 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.Popen(['adb', '-s', devname, 'shell', 'rm', |
+ 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.Popen(['adb', '-s', devname, 'pull', |
+ videoout, videooutsave]) |
+ |
+if __name__ == '__main__': |
+ main() |
+ |