@Override
	public boolean processVideo() {
		boolean isConvertationSuccess = true;
		// Make input file list
		LOGGER.info(MAKING_INPUT_FOLDER_LIST);
		List<File> inputFoldersList = fileService.getInputFolderList(properties
				.getPropertyValue(ApplicationSetting.INPUT_FOLDERS));
		Map<File, File> inputFilePairs = null;
		for (File inputFolder : inputFoldersList) {
			try {
				inputFilePairs = fileService
						.getVideoWithSubtitlesPairs(inputFolder);
				if (inputFilePairs.size() > 0) {
					StringBuffer outputFolderNameToCreateSB;
					String outputFolderName;
					File outputFolder;
					outputFolderNameToCreateSB = new StringBuffer();
					outputFolderNameToCreateSB
							.append(properties
									.getPropertyValue(ApplicationSetting.OUTPUT_FOLDER));
					outputFolderNameToCreateSB.append(File.separator);
					outputFolderNameToCreateSB.append(inputFolder.getName());
					outputFolderName = outputFolderNameToCreateSB.toString();
					// Create output folder
					LOGGER.info(CREATING_OUTPUT_FOLDER, outputFolderName);
					outputFolder = new File(outputFolderName);
					if (outputFolder.exists()) {
						throw new OutputFolderExistsException(
								outputFolder.getName());
					}
					if (!outputFolder.mkdirs()) {
						throw new CantCreateOutputFolderException(
								outputFolder.getName());
					}
					isConvertationSuccess = processFilePairs(inputFilePairs,
							outputFolder);
				} else {
					LOGGER.info(NOFILE_TO_MERGE);
				}
			} catch (NotFolderException e) {
				isConvertationSuccess = false;
				LOGGER.debug(NOT_FOLDER_EXCEPTION, e.getMessage());
			} catch (IllegalArgumentException e) {
				isConvertationSuccess = false;
				LOGGER.debug(ILLEGALE_ARGUMENTS_EXCEPTION);
			} catch (OutputFolderExistsException e) {
				isConvertationSuccess = false;
				LOGGER.debug(OUTPUT_FOLDER_ALREADY_EXISTS, e.getMessage());
			} catch (CantCreateOutputFolderException e) {
				isConvertationSuccess = false;
				LOGGER.debug(CANT_CREATE_FOLDER, e.getMessage());
			}
		}
		return isConvertationSuccess;
	}