M3U8.java 2.9 KB
package com.topdraw.sohu.utils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class M3U8 {
	private String strBasePath;
	private List<Ts> listTs = new ArrayList<>();
	private long lStartTime;// 开始时间
	private long lEndTime;// 结束时间
	private long lStartDownloadTime;// 开始下载时间
	private long lEndDownloadTime;// 结束下载时间

	public String getStrBasePath() {
		return strBasePath;
	}

	public void setStrBasePath(String strBasePath) {
		this.strBasePath = strBasePath;
	}

	public List<Ts> getListTs() {
		return listTs;
	}

	public void setListTs(List<Ts> listTs) {
		this.listTs = listTs;
	}

	public void addTs(Ts ts) {
		this.listTs.add(ts);
	}

	public long getLStartDownloadTime() {
		return lStartDownloadTime;
	}

	public void setLStartDownloadTime(long lStartDownloadTime) {
		this.lStartDownloadTime = lStartDownloadTime;
	}

	public long getLEndDownloadTime() {
		return lEndDownloadTime;
	}

	public void setLEndDownloadTime(long lEndDownloadTime) {
		this.lEndDownloadTime = lEndDownloadTime;
	}

	/**
	 * 获取开始时间
	 *
	 * @return
	 */
	public long getLStartTime() {
		if (listTs.size() > 0) {
			Collections.sort(listTs);
			lStartTime = listTs.get(0).getLongDate();
			return lStartTime;
		}
		return 0;
	}

	/**
	 * 获取结束时间(加上了最后一段时间的持续时间)
	 *
	 * @return
	 */
	public long getLEndTime() {
		if (listTs.size() > 0) {
			Ts tsM3U8 = listTs.get(listTs.size() - 1);
			lEndTime = tsM3U8.getLongDate() + (long) (tsM3U8.getFSeconds() * 1000);
			return lEndTime;
		}
		return 0;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("strBasePath: " + strBasePath);
		for (Ts ts : listTs) {
			sb.append("\nts_file_name = " + ts);
		}
		sb.append("\n\nlStartTime = " + lStartTime);
		sb.append("\n\nlEndTime = " + lEndTime);
		sb.append("\n\nlStartDownloadTime = " + lStartDownloadTime);
		sb.append("\n\nlEndDownloadTime = " + lEndDownloadTime);
		return sb.toString();
	}

	public static class Ts implements Comparable<Ts> {
		private String strFilePath;
		private float fSeconds;

		public Ts(String strFilePath, float fSeconds) {
			this.strFilePath = strFilePath;
			this.fSeconds = fSeconds;
		}

		public String getStrFilePath() {
			return strFilePath;
		}

		public void setStrFilePath(String strFilePath) {
			this.strFilePath = strFilePath;
		}

		public float getFSeconds() {
			return fSeconds;
		}

		public void setFSeconds(float fSeconds) {
			this.fSeconds = fSeconds;
		}

		@Override
		public String toString() {
			return strFilePath + " (" + fSeconds + "sec)";
		}

		/**
		 * 获取时间
		 */
		public long getLongDate() {
			try {
				return Long.parseLong(strFilePath.substring(0, strFilePath.lastIndexOf(".")));
			} catch (Exception e) {
				return 0;
			}
		}

		@Override
		public int compareTo(Ts o) {
			return strFilePath.compareTo(o.strFilePath);
		}
	}
}