code: def _compute_video_hash(videofile):
          
          seek_positions = [None] * 4
          hash_result = []
          with open(videofile, 'rb') as fp:
              total_size = os.fstat(fp.fileno()).st_size
              if total_size < 8192 + 4096:
                  raise exceptions.InvalidFileError(
                      'the video[{}] is too small'.format(os.path.basename(videofile)))
  
              seek_positions[0] = 4096
              seek_positions[1] = total_size // 3 * 2
              seek_positions[2] = total_size // 3
              seek_positions[3] = total_size - 8192
              for pos in seek_positions:
                  fp.seek(pos, 0)
                  data = fp.read(4096)
                  m = hashlib.md5(data)
                  hash_result.append(m.hexdigest())
          return ';'.join(hash_result)
docs: compute videofile's hash
          reference: https://docs.google.com/document/d/1w5MCBO61rKQ6hI5m9laJLWse__yTYdRugpVyz4RzrmM/preview