引入包

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

检查视频后缀

 public static int checkContentType(String resourcePath) {String type = resourcePath.substring(resourcePath.lastIndexOf(".") + 1,resourcePath.length()).toLowerCase();// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)if (type.equals("avi")) {return 0;} else if (type.equals("mpg")) {return 0;} else if (type.equals("wmv")) {return 0;} else if (type.equals("3gp")) {return 0;} else if (type.equals("mov")) {return 0;} else if (type.equals("mp4")) {return 0;} else if (type.equals("asf")) {return 0;} else if (type.equals("asx")) {return 0;} else if (type.equals("flv")) {return 0;} else if (type.equals("mpeg")) {return 0;} else if (type.equals("mpe")) {return 0;}// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),// 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.else if (type.equals("wmv9")) {return 1;} else if (type.equals("rm")) {return 1;} else if (type.equals("rmvb")) {return 1;}return 9;}

检查文件是否存在

 private static boolean checkfile(String path) {File file = new File(path);if (!file.isFile()) {return false;}return true;}

转换

 // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)@SuppressWarnings("unchecked")private static String processFLV(String resourcePath) {if (!checkfile(resourcePath)) {logger.info(resourcePath + "isnotfile");return null;}List commend = new ArrayList();String saveName = "";String transformPath = "";if (resourcePath.contains("//")) {resourcePath = resourcePath.replaceAll("//", "/");}if (resourcePath.contains("/")) {saveName = resourcePath.substring(resourcePath.lastIndexOf("/") + 1).substring(0,resourcePath.substring(resourcePath.lastIndexOf("/") + 1).indexOf("."));transformPath = resourcePath.substring(0,resourcePath.lastIndexOf("/") + 1);} else {saveName = resourcePath.substring(resourcePath.lastIndexOf("\\") + 1).substring(0,resourcePath.substring(resourcePath.lastIndexOf("\\") + 1).indexOf("."));transformPath = resourcePath.substring(0,resourcePath.lastIndexOf("\\") + 1);}logger.info("读取转换工具路径");String path = "";try {path = new PropertiesUtil("system.properties").readProperty("ffmpegPath");} catch (Exception e2) {// TODO Auto-generated catch blocke2.printStackTrace();logger.info("读取转换工具路径失败");}try {// 路径解码,主要解决空格%20path = URLDecoder.decode(path, "UTF-8");transformPath = URLDecoder.decode(transformPath, "UTF-8");} catch (UnsupportedEncodingException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}logger.info("当前路径为:----------" + path);commend.add(path);commend.add("-i");commend.add(resourcePath);commend.add("-f");commend.add("mp4");commend.add("-acodec");commend.add("aac");/** commend.add("-b"); commend.add("512k"); commend.add("-ab");* commend.add("512k");*/commend.add("-vcodec");commend.add("libx264");commend.add("-profile:v");commend.add("baseline");commend.add(transformPath + saveName + ".mp4");try {ProcessBuilder builder = new ProcessBuilder();builder.command(commend);builder.redirectErrorStream(true);//long start = System.currentTimeMillis(); // 记录起始时间logger.info("视频转码开始...");// builder.start();Process process = builder.start();BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;while ((line = br.readLine()) != null) {//logger.info("视频转换中:" + line);}/** InputStream in = process.getInputStream(); byte[] re = new* byte[1024]; logger.info("正在进行转码,请稍候");  while (in.read(re) != -1)* { System.out.print("."); } System.out.println(""); in.close();*/logger.info("视频转码完成...");
//          long end = System.currentTimeMillis();// 取结束时间
//          logger.info("转码一共运行" + (end - start) + "毫秒");logger.info("转换后视频存放路径transformPath:" + transformPath + saveName+ ".mp4");return saveName + ".mp4";} catch (Exception e) {e.printStackTrace();logger.info("视频转码失败!");return null;}}

删除源文件

  /*** 删除单个文件** @param fileName*            要删除的文件的文件名* @return 单个文件删除成功返回true,否则返回false*/public static boolean deleteFile(String fileName) {File file = new File(fileName);// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除if (file.exists() && file.isFile()) {if (file.delete()) {logger.info("删除单个文件" + fileName + "成功!");return true;} else {logger.info("删除单个文件" + fileName + "失败!");return false;}} else {logger.info("删除单个文件失败:" + fileName + "不存在!");return false;}}

附带ffmpeg 和测试需要使用的各种后缀的视频

ffmpeg程序+测试视频

java程序将asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv,mpeg,mpe,wmv9,rm,rmvb转MP4相关推荐

  1. 编写Java程序,做一个MPG和L/100KM的转换器

    package com.nfsbbs.mpg;import java.util.Scanner;public class main {public static void main(String[] ...

  2. java flv转mp3_用java程序调用ffmpeg执行视频文件格式转换flv

    用java小例题说明更直观:(可以直接编译运行) 环境我在windows平台下测试的... 需要在e:/下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll ...

  3. Ubuntu 编译ijkplayer 支持几乎所有格式(MP4,mov,mkv,avi,wmv,m4v,mpg,webm,ogv,3g2.flv,f4v,swf)和https

    以下都是经过自己测试过的,并集成,已测试MP4,mov,mkv,avi,wmv,m4v,mpg,webm,ogv,3g2.flv,f4v,swf格式可正常播放并有声音 整个编译过程和集成是按下面说的博 ...

  4. 作为一名合格的JAVA程序员需要点亮那些技能树?

    转自:https://zhuanlan.zhihu.com/p/26035486 先看看这些程序员技能树,你掌握或了解哪些?OMG竟然有么多---震精!震精!!! 这是从450家企业的招聘信息中统计而 ...

  5. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  6. java负数右移_收入囊中篇---Java程序基础(二)

    前言: 本篇是接着上一篇更新的,如果没有阅读上一篇的话,可以查阅或回顾一下. 1.收入囊中篇---Java基础必备知识(一) 2.收入囊中篇---Java程序基础(二) Java程序基础目录 1.Ja ...

  7. 2020年Java程序员不得不学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  8. Java程序启动同时复制resources下文件到jar包同级目录

    Java代码调用.exe,包括获取exec()中的日志并打印,可以看我之前的博客 一.Java调用exe打包成jar的调用方式有俩种: Java程序中resources下的exe等文件,是可以同时打包 ...

  9. 用java实现一个计算器程序_1.2第一个java程序——hello world

    第一个java程序--hello world 实现一个java程序,主要有三个步骤:1.编写源代码,2.编译源代码,3.运行.java的源代码必须先编译,然后才能由JVM解析执行.所以我们程序员第一步 ...

  10. Java程序员三年的工作经验,却不如一个新人的工资高???

    文章目录 一.关于程序员的几个阶段 第一阶段:三年 第二阶段:五年 第三阶段:十年 二.关于项目经验 三.关于专业技能 1.基本语法 2.集合 3.设计模式 4.多线程 5.JDK源码 6.框架 7. ...

最新文章

  1. 3大VR虚拟现实产品PK赛:HTC、Oculus、索尼谁是大哥
  2. SQL 全文索引 CONTAINS
  3. 【Java从0到架构师】SSM 整合(XML、纯注解)
  4. kotlin t class.java_尝试Java,从入门到Kotlin(下)
  5. 【转】.Net 架构图
  6. Labview子VI的创建与调用
  7. Android用户界面设计:基本按钮
  8. access html导出,AccessToFile
  9. 微信公众号文章数据分析报表,导出Excel年报统计
  10. vyos in or out 限流量
  11. 双目视觉测距离(三维重建)
  12. 基于C#的机器人仿真平台和机器人运动学算法实现
  13. Mac系统好用快捷键简记
  14. JAVA 调用地图API
  15. 单片机:直流电机(内含ULN2003芯片,硬件原理及解析,软件编程及注释)
  16. 图片批量压缩方法及步骤
  17. 生态保护重要性评价之生态脆弱性评价
  18. win10系统 jdk8 安装闪退 解决方案
  19. 北京课工场教育科技公司喜获第八届中国软件杯企业突出贡献奖
  20. 免费将XPS转成Word的方法

热门文章

  1. linux内核零拷贝技术
  2. 使用博图V15和S7-PLCSIM Advanced V2.0以S7-1500PLC仿真Modbus TCP
  3. 基于RFID定位技术的酒店资产管理--RFID资产管理--新导智能
  4. 微波雷达感应模块技术应用,多普勒雷达,人体存在感应模组
  5. 场景法、流程分析法、错误推断法
  6. python模拟鼠标拖动_python模拟鼠标拖动教程
  7. 中期答辩记录与总结反思
  8. 解除windows10多账户远程桌面连接限制
  9. fences卸载_fences是什么?fences栅栏桌面怎样安装卸载?
  10. 利用envi进行监督分类(支持向量机)