1 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 from autotest_lib.client.cros.video import method_logger 6 7 8 class VideoScreenShotCollector(object): 9 """ 10 Captures and collects screenshots of a video at specified time points. 11 12 """ 13 14 15 @method_logger.log 16 def __init__(self, player, screenshot_namer, screenshot_capturer): 17 self.player = player 18 self.screnshot_namer = screenshot_namer 19 self.screnshot_capturer = screenshot_capturer 20 21 22 @method_logger.log 23 def collect_screenshot(self, timestamp): 24 """ 25 Get a screenshot of video at a particular time. 26 27 Navigates player to a given time value, captures and saves a 28 screenshot at that time value. 29 30 @param timestamp: time_delta, the time value to capture screenshot for. 31 32 @returns a complete path to the screenshot captured. 33 34 """ 35 filename = self.screnshot_namer.get_filename(timestamp) 36 37 self.player.seek_to(timestamp) 38 self.player.wait_for_video_to_seek() 39 40 return self.screnshot_capturer.capture(filename) 41 42 43 @method_logger.log 44 def ensure_player_is_ready(self): 45 """ 46 Loads video and waits for player to be ready. 47 48 @raises whatever load_video() raises. 49 50 """ 51 self.player.load_video() 52 53 54 @method_logger.log 55 def collect_multiple_screenshots(self, timestamps): 56 """ 57 Collects screenshots for each timevalue in a list. 58 59 @param timestamps: time_delta list, time values to collect 60 screenshots for. 61 62 @returns a list of complete paths for screenshot captured. 63 64 """ 65 self.ensure_player_is_ready() 66 67 with self.screnshot_capturer: 68 return [self.collect_screenshot(t) for t in timestamps]