资源文件信息工具类--ResourceInfoCalculator
2015-11-16 15:22
309 查看
包含获取amr播放时长,视频播放时长,以及图片的长宽
视频播放这个方法,要引入一个jar包(jave-1.0.2.jar)
具体下载地址:
http://www.sauronsoftware.it/projects/jave/download.php
上传不了,超过2M了,这个包挺大的,5M多
工具类源代码:
视频播放这个方法,要引入一个jar包(jave-1.0.2.jar)
具体下载地址:
http://www.sauronsoftware.it/projects/jave/download.php
上传不了,超过2M了,这个包挺大的,5M多
工具类源代码:
import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.RandomAccessFile; import javax.imageio.ImageIO; import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.MultimediaInfo; /** * 获取amr播放时长,视频播放时长,以及图片的长宽 * @author dhh * 2015-11-16 * */ public class ResourceInfoCalculator { /** * 得到amr文件的语音长度 单位:s(秒) * * @param file * @return * @throws Exception */ public static long getAmrDuration(File file) throws Exception { long duration = -1; int[] packedSize = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0 }; RandomAccessFile randomAccessFile = null; try { randomAccessFile = new RandomAccessFile(file, "rw"); long length = file.length();// 文件的长度 int pos = 6;// 设置初始位置 int frameCount = 0;// 初始帧数 int packedPos = -1; // /////////////////////////////////////////////////// byte[] datas = new byte[1];// 初始数据值 while (pos <= length) { randomAccessFile.seek(pos); if (randomAccessFile.read(datas, 0, 1) != 1) { duration = length > 0 ? ((length - 6) / 650) : 0; break; } packedPos = (datas[0] >> 3) & 0x0F; pos += packedSize[packedPos] + 1; frameCount++; } // /////////////////////////////////////////////////// duration += frameCount * 20;// 帧数*20 } finally { if (randomAccessFile != null) { randomAccessFile.close(); } } return duration; } /** * 得到视频文件的播放时长(单位:s) * * @param file * @return */ public static long getVedioduration(File file) { long duration = -1; Encoder encoder = new Encoder(); try { MultimediaInfo m = encoder.getInfo(file); long ls = m.getDuration(); duration = ls/1000; } catch (Exception e) { return duration; } return duration; } /** * 得到图片的宽高 * * @param file * @return * @throws Exception */ public static Integer[] getImageWH(File file) throws Exception { InputStream is = null; try { is = new FileInputStream(file);// 通过文件名称读取 BufferedImage buff = ImageIO.read(is); Integer width = buff.getWidth(); // 得到图片的宽度 Integer height = buff.getHeight(); // 得到图片的高度 return new Integer[] { width, height }; } catch (Exception e) { e.printStackTrace(); } finally { is.close(); // 关闭Stream } return null; } }
相关文章推荐
- iOS开发:获取一个视频、音频文件的播放时长
- Java使用JAVE获取MP4播放时长
- layui上传视频并获得视频时长的方法
- jave获取视频时长
- Java获取视频时长
- iOS 设置Button的 初始选中状态
- win7、8、10(64)操作系统安装oracle11g(64)后,在登录时,database显示为空。
- css3太极图效果+自动旋转
- TreeSet中自定义Comparator实现降序
- maven(6)各个生命周期阶段以及与配置文件关系
- Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
- Entity Framework code first 手动修改数据库的问题
- python url解码
- Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
- Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
- Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
- BAT解密:互联网技术发展之路(1) - 技术发展的驱动力
- android定位:获取当前位置的经纬度
- Resume InlineHookSSDT
- 每天一篇javascript学习小结(Function对象)