| | |
| | | package cc.mrbird.febs.common.utils; |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsConstant; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import com.google.common.base.Preconditions; |
| | | import com.google.common.collect.ImmutableList; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.io.FilenameUtils; |
| | | import org.apache.commons.lang3.ArrayUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import ws.schild.jave.EncoderException; |
| | | import ws.schild.jave.MultimediaInfo; |
| | | import ws.schild.jave.MultimediaObject; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | |
| | | public class FileUtil { |
| | | |
| | | private static final int BUFFER = 1024 * 8; |
| | | private static ImmutableList<String> videoSuffixList = ImmutableList.of("mp4", "mov", "avi", "mkv", "m4v", "wmv", |
| | | "asf", "asx", "rm", "rmvb", "3gp", "dat", "flv", "vob"); |
| | | |
| | | /** |
| | | * 压缩文件或目录 |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static boolean isVideo(File file) { |
| | | return videoSuffixList.contains(FilenameUtils.getExtension(file.getName())); |
| | | } |
| | | |
| | | /** |
| | | * 获取视频时长(秒) |
| | | * |
| | | * @param file |
| | | * @return |
| | | */ |
| | | public static Integer getVideoTimeSecond(File file) { |
| | | if (!isVideo(file)){ |
| | | throw new FebsException("不是视频"); |
| | | } |
| | | |
| | | MultimediaObject multimediaObject = new MultimediaObject(file); |
| | | MultimediaInfo info = null; |
| | | try { |
| | | info = multimediaObject.getInfo(); |
| | | } catch (EncoderException e) { |
| | | log.error("视频异常:", e); |
| | | throw new FebsException("视频处理异常"); |
| | | } |
| | | return (int) Math.ceil((double) info.getDuration() / 1000); |
| | | } |
| | | } |