Add script to ensure virtual webcam is running.
This script will check that a webcam is running and start it if it's not currently running. It's tailored to the way our buildbots are currently configured. TEST=local execution on Windows, Mac and Linux. BUG=none R=phoglund@webrtc.org Review URL: https://webrtc-codereview.appspot.com/1406005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3981 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
f6d67ae21f
commit
73a4d5ab12
73
webrtc/test/buildbot/ensure_webcam_is_running.py
Executable file
73
webrtc/test/buildbot/ensure_webcam_is_running.py
Executable file
@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2013 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.
|
||||
|
||||
"""Checks if a virtual webcam is running and starts it if not.
|
||||
|
||||
Returns a non-zero return code if the webcam could not be started.
|
||||
|
||||
Prerequisites:
|
||||
* Python must have the psutil package installed.
|
||||
* Windows: a scheduled task named 'ManyCam' must exist and be configured to
|
||||
launch ManyCam preconfigured to auto-play the test clip.
|
||||
* Mac: ManyCam must be installed in the default location and be preconfigured
|
||||
to auto-play the test clip.
|
||||
* Linux: The v4l2loopback must be loaded to the kernel already (with the
|
||||
devices=2 argument) and the v4l2_file_player application must be compiled and
|
||||
put in the location specified below.
|
||||
"""
|
||||
|
||||
import psutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
WEBCAM_WIN = ['schtasks', '/run', '/tn', 'ManyCam']
|
||||
WEBCAM_MAC = ['open', '/Applications/ManyCam/ManyCam.app']
|
||||
WEBCAM_LINUX = (
|
||||
'$HOME/fake-webcam-driver/linux/v4l2_file_player/v4l2_file_player '
|
||||
'$HOME/webrtc_video_quality/reference_video.yuv 640 480 /dev/video1 &')
|
||||
|
||||
|
||||
def IsWebCamRunning():
|
||||
if sys.platform == 'win32':
|
||||
process_name = 'ManyCam.exe'
|
||||
elif sys.platform.startswith('darwin'):
|
||||
process_name = 'ManyCam'
|
||||
elif sys.platform.startswith('linux'):
|
||||
process_name = 'v4l2_file_player'
|
||||
else:
|
||||
raise Exception('Unsupported platform: %s' % sys.platform)
|
||||
for p in psutil.get_process_list():
|
||||
if process_name == p.name:
|
||||
print 'Found a running virtual webcam (%s with PID %s)' % (p.name, p.pid)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def Main():
|
||||
if IsWebCamRunning():
|
||||
return 0
|
||||
|
||||
try:
|
||||
if sys.platform == 'win32':
|
||||
subprocess.check_call(WEBCAM_WIN)
|
||||
elif sys.platform.startswith('darwin'):
|
||||
subprocess.check_call(WEBCAM_MAC)
|
||||
elif sys.platform.startswith('linux'):
|
||||
subprocess.check_call(WEBCAM_LINUX, shell=True)
|
||||
|
||||
print 'Successfully launched virtual webcam.'
|
||||
return 0
|
||||
|
||||
except Exception as e:
|
||||
print 'Failed to launch virtual webcam: %s' % e
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(Main())
|
Loading…
Reference in New Issue
Block a user