@Override
    public boolean startVideoCutting(List<VideoSection> videoSections, File inputVideo) {
        // Add "_out" to the output file name before extension
        String inputFilePath = inputVideo.getAbsolutePath();
        String outputFilePath =
            inputFilePath.substring(0, inputFilePath.lastIndexOf("."))
            + "_out"
            + inputFilePath.substring(inputFilePath.lastIndexOf("."), inputFilePath.length());

        final File outputVideo = new File(outputFilePath);

        // Create output file
        if (outputVideo.exists())
            outputVideo.delete();

        try {
            outputVideo.createNewFile();
        } catch (IOException e) {
            mediator.reportActionFailed("Failed to create output file.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        }

        // Filter only section to be cut
        final List<VideoSection> sectionToSilence = new LinkedList<VideoSection>();
        for(VideoSection section : videoSections) {
            if (section.getCut())
                sectionToSilence.add(section);
        }

        (processThread = createProcessingThread(inputVideo, outputVideo, mediator, sectionToSilence)).start();
        return  true;

    }