public void splitMultiRange(String sourceVideoFile, final String destVideoFile, final int... time)
	{
		final IStatusListener oldListener = listener;
		final int countOfTime = time.length;
		mulitRangeIndex = 0;
		if (countOfTime < 2) {
			return;
		}
		
		listener = new IStatusListener() {
			List<String> filenames = new ArrayList<String>();
			private boolean startJoin = false;
			private int index = 0;
			@Override
			public void start() {
				if (!startJoin)
					if (oldListener != null)
						oldListener.start();
			}
			
			@Override
			public void finished() {
				if (startJoin) {
					for (String file : filenames) {
						File f = new File(file);
						if (f.exists())
							f.delete();
						f = null;
					}
					if (oldListener != null)
						oldListener.finished();
					return;
				}
				
				///split
				filenames.add(extractFilename);
				if (mulitRangeIndex + 1 >= countOfTime) {
					Join join = new Join();
					startJoin = true;
					Split.this.setListener(oldListener);
					index ++;
					join.setListener(this);
					join.join(destVideoFile, filenames.toArray(new String[1]));
					
					return;
				}
				startSecond = time[mulitRangeIndex++];
				endSecond = time[mulitRangeIndex++];
				index ++;
				start();
			}
			
			@Override
			public void currentProgress(float progress) {
				float unitProgress = 1.0f / (float)(countOfTime / 2 + 1);
				float tmpProgress = unitProgress * index + unitProgress * progress;
//				System.out.println(index + ":  " + progress + " SplitX: " + tmpProgress + "%");
				if (oldListener != null)
					oldListener.currentProgress(tmpProgress);
			}

			@Override
			public void failed()
			{
				// TODO Auto-generated method stub
				
			}

			@Override
			public void paused()
			{
				// TODO Auto-generated method stub
				
			}
		};
		this.workMoive = sourceVideoFile;
		this.startSecond = time[mulitRangeIndex++];
		this.endSecond = time[mulitRangeIndex++];
		
		start();
	}