直接进入正题吧。
ps:利用ffmpeg 来进行格式转换。
一 建立 java项目。
二 在所建立的java项目中 建立一个ffmpeg文件夹,这个文件夹下放ffmpeg所需的文件。
三 在建立一个 input文件,这个文件是用来存放视频文件,例如xxx.rmvb.
四 在建立一个output文件,这个文件时用来存放你想转换后的视频文件。(例如你想把xxx.rmvb转换成xxx.mp4)
五 之后就是写 java代码。

package com;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class ConvertVideo {private static String inputPath = "";private static String outputPath = "";private static String ffmpegPath = "";public static void main(String args[]) throws IOException {getPath();if (!checkfile(inputPath)) {System.out.println(inputPath + " is not file");return;}if (process()) {System.out.println("ok");}}public static void getPath() { // 先获取当前项目路径,在获得源文件、目标文件、转换器的路径File diretory = new File("");try {String currPath = diretory.getAbsolutePath();inputPath = "E:\\1.mp4";outputPath = "D:\\vod\\oss\\";ffmpegPath = "E:\\ffmpeg1\\";System.out.println(currPath);}catch (Exception e) {System.out.println("getPath出错");}}public static boolean process() {int type = checkContentType();boolean status = false;System.out.println("直接转成mp4格式");status = processMp4(inputPath);// 直接转成mp4格式return status;}private static int checkContentType() {String type = inputPath.substring(inputPath.lastIndexOf(".") + 1, inputPath.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;}// 对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无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.private static String processAVI(int type) {List<String> commend = new ArrayList<String>();commend.add(ffmpegPath + "mencoder");commend.add(inputPath);commend.add("-oac");commend.add("lavc");commend.add("-lavcopts");commend.add("acodec=mp3:abitrate=64");commend.add("-ovc");commend.add("xvid");commend.add("-xvidencopts");commend.add("bitrate=600");commend.add("-of");commend.add("mp4");commend.add("-o");commend.add(outputPath + "a.AVI");try {ProcessBuilder builder = new ProcessBuilder();Process process = builder.command(commend).redirectErrorStream(true).start();new PrintStream(process.getInputStream());new PrintStream(process.getErrorStream());process.waitFor();return outputPath + "a.AVI";} catch (Exception e) {e.printStackTrace();return null;}}// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)private static boolean processFlv(String oldfilepath) {if (!checkfile(inputPath)) {System.out.println(oldfilepath + " is not file");return false;}List<String> command = new ArrayList<String>();command.add(ffmpegPath + "ffmpeg");command.add("-i");command.add(oldfilepath);command.add("-ab");command.add("56");command.add("-ar");command.add("22050");command.add("-qscale");command.add("8");command.add("-r");command.add("15");command.add("-s");command.add("600x500");command.add(outputPath + "a.flv");try {// 方案1
//            Process videoProcess = Runtime.getRuntime().exec(ffmpegPath + "ffmpeg -i " + oldfilepath
//                    + " -ab 56 -ar 22050 -qscale 8 -r 15 -s 600x500 "
//                    + outputPath + "a.flv");// 方案2Process videoProcess = new ProcessBuilder(command).redirectErrorStream(true).start();new PrintStream(videoProcess.getErrorStream()).start();new PrintStream(videoProcess.getInputStream()).start();videoProcess.waitFor();return true;} catch (Exception e) {e.printStackTrace();return false;}}
private static boolean processMp4(String oldfilepath) {if (!checkfile(inputPath)) {System.out.println(oldfilepath + " is not file");return false;}List<String> command = new ArrayList<String>();command.add(ffmpegPath + "ffmpeg");command.add("-i");command.add(oldfilepath);command.add("-c:v");command.add("libx264");command.add("-mbd");command.add("0");command.add("-c:a");command.add("aac");command.add("-strict");command.add("-2");command.add("-pix_fmt");command.add("yuv420p");command.add("-movflags");command.add("faststart");command.add(outputPath + "a.mp4");try {// 方案1
//        Process videoProcess = Runtime.getRuntime().exec(ffmpegPath + "ffmpeg -i " + oldfilepath
//                + " -ab 56 -ar 22050 -qscale 8 -r 15 -s 600x500 "
//                + outputPath + "a.flv");// 方案2Process videoProcess = new ProcessBuilder(command).redirectErrorStream(true).start();new PrintStream(videoProcess.getErrorStream()).start();new PrintStream(videoProcess.getInputStream()).start();videoProcess.waitFor();return true;} catch (Exception e) {e.printStackTrace();return false;}
}
}
class PrintStream extends Thread
{java.io.InputStream __is = null;public PrintStream(java.io.InputStream is) {__is = is;} public void run() {try {while(this != null) {int _ch = __is.read();if(_ch != -1) System.out.print((char)_ch); else break;}} catch (Exception e) {e.printStackTrace();} }
}

六 运行这段代码就好啦。

ps:FFmpeg 所需的文件链接
https://pan.baidu.com/s/1c2IvaQs
解压后 将 bin 目录下中的ffmpeg.exe 放到ffmpeg目录。
ps: 我的ffmpeg.exe 在E盘.

不过,想真正的学习 视频转换 这方面的还是得去这位大神的博客去学习。
http://blog.csdn.net/leixiaohua1020/article/details/15811977

java 实现 视频格式转换。相关推荐

  1. 【JAVA】JAVA使用ffmpeg进行视频格式转换以及截图

    JAVA 处理视频文件,需要用到 ffmpeg  这个工具.不需要依赖jar包.无论是在windows服务器还是linux服务器,想要使用 ffmpeg 都需要先安装. 附上Linux下  *.tar ...

  2. Java使用ffmpeg进行视频格式转换、音视频合并、播放、截图

    封装类: ffplay.ffmpeg.ffprobe是安装的ffmpeg路径. import java.io.BufferedReader; import java.io.File; import j ...

  3. Java视频格式转换---avi转MP4(h264编码格式)

    Java视频格式转换---avi转MP4(h264编码格式的MP4视频在网页播放兼容性更好--试过其它的编码格式,没找到能在网页上直接播放的) 资源借鉴处 需要添加到pom.xml的包 java代码 ...

  4. Java实现视频格式转化

    转载:https://blog.csdn.net/l1028386804/article/details/44889781 核心是利用ffmpeg进行视频转换,我们自己并不写转换视频的代码,只是调用f ...

  5. android录音app 视频,月入 2 万案例分享:Android 音视频格式转换 App

    音视频格式转换 月收入¥2w 2013年开始 1个创始人, 1个员工 新加坡 音视频格式转换,只有安卓 请问你的背景是什么?最近在忙什么? 我叫 Sherry Yang, 是新加坡一名极客女生,在读大 ...

  6. ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式

    ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式 命令如下: ffmpeg -y -i Titanic.mkv -s 640*480 out.h264 运行效果: 一般的 使用 ffmpe ...

  7. php视频格式转换---------ffmpeg-php扩展与ffmpeg.exe安装与使用

    HP转换视频格式这个问题, 找了一下午的ffmpeg-php扩展的安装与使用方法,都是千篇一律转载的. 下面是我整理的步骤,希望能帮助大家这个问题. 1.下载ffmpeg-php扩展包和ffmpeg. ...

  8. 【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 [FFmpeg]FFmpeg 相关术语简介 二 [FFmpe ...

  9. pcm 采样率转换_Cool Audio Video Converter(音视频格式转换工具)V2.18 最新版 - 绿色先锋下载 -...

    Cool Audio Video Converter(音视频格式转换工具)是一款十分优秀好用的音频格式转换助手.如果你需要一款好用的格式转换工具,小编带来的这款Cool Audio Video Con ...

最新文章

  1. win7-64系统安装oracle 11G客户端
  2. java调用matlab 数组_JAVA调用matlab程序 输入输出数据转换
  3. F - 数据结构实验之查找六:顺序查找
  4. FileStream实现多线程断点续传(已封装)
  5. Android开发学习:在Eclipse中导入Android项目方法
  6. 石头剪刀布php源码,php实现的网页版剪刀石头布游戏示例
  7. 服务器系统巡检记录表,服务器月度巡检记录
  8. mysql 判断等于空字符串_mysql 判断null 和 空字符串
  9. C++推荐书籍从入门到进阶带你走上大牛之路(珍藏版)
  10. 纪念BLives 1.0版本发布
  11. 帆软报表设计器菜单栏介绍之二文件菜单
  12. VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 线段树 or 树状数组+二分
  13. 一种可以穿透还原卡和还原软件的代码(转)
  14. 智慧城市智能化建设发展现状及展望
  15. GUI 图片显示(SDL 多媒体开发库)——基于 rt-smart 微内核操作系统
  16. cpu的核数和进程_多线程,多进程,多核总结
  17. 禅意茶艺茶道茶文化PPT模板
  18. adb bugreport :查看设备所有信息(获取错误报告)
  19. C语言描述算法的常用方法是,认识C语言 -算法描述的5种方法
  20. 防止计算机病毒和木马的方法,防止电脑中病毒、木马的方法(windows清理助手)...

热门文章

  1. 第八章 win10+gsoap+onvif+ffmpeg
  2. 用 Flutter 实现 PageView 指示器
  3. 易风神通代理服务器 v2.5 绿色
  4. Trister‘s Lend告诉你如何选对借贷平台
  5. 2021年高考成绩查询湖北状元,2020年湖北高考状元名单资料,湖北高考状元分数学校名单介绍...
  6. java入门编程(一)
  7. 用js计算12个月的社保缴纳总额-企业信息公示
  8. 金链盟中国区块链应用大赛正式启动,200万奖金将花落谁家?
  9. “大狼来了”全球最大量化基金落户中国
  10. 中台详解(下)——怎么搭建中台