http://blog.sina.com.cn/s/blog_96b60b0c01013mi5.html

flv格式转换--第一步
不定期更新...
首先要安装MediaCoder
安装目录假设为D:flvMediaCoder
在D:flvMediaCodercodecs目录下有一些要用到的,如ffmpeg.exe , mencoder.exe还有一些dll
ConvertVideo.java
package com.lichen.test;

import java.io.File;
import java.util.List;

public class ConvertVideo {

private final static String PATH = "d:\test\a.mpg";

public static void main(String[] args) {
    if (!checkfile(PATH)) {
       System.out.println(PATH + " is not file");
      return;
     }
    if (process()) {
       System.out.println("ok");
     }
   }

private static boolean process() {
    int type = checkContentType();
    boolean status = false;
    if (type == 0) {
//       status = processFLV(PATH);// 直接将文件转为flv文件
       status=processImg();
         processFLV(PATH);
     } else if (type == 1) {
       String avifilepath = processAVI(type);
      if (avifilepath == null)
        return false;// avi文件没有得到
       status = processFLV(avifilepath);// 将avi转为flv
     }
    return status;
   }

private static int checkContentType() {
     String type = PATH.substring(PATH.lastIndexOf(".") + 1, PATH.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 java.util.ArrayList<String>();
//     commend.add("e:\mencoder");         //     D:flvMediaCodercodecs
     commend.add("d:\flv\MediaCoder\codecs");    
     commend.add(PATH);
     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("avi");
     commend.add("-o");
     commend.add("d:\test\a.avi");
    try {
       ProcessBuilder builder = new ProcessBuilder();
       builder.command(commend);
       builder.start();
      return "c:\home\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(PATH)) {
       System.out.println(oldfilepath + " is not file");
      return false;
     }
     List<String> commend = new java.util.ArrayList<String>();
     commend.add("d:\flv\MediaCoder\codecs\ffmpeg.exe");    
     commend.add("-i");
     commend.add(oldfilepath);
     commend.add("-ab");
     commend.add("64");
//     commend.add(" -acodec ");
//     commend.add("codec");
     commend.add("-ac");
     commend.add("2");
     commend.add("-ar");
     commend.add("22050");
     commend.add("-b");
     commend.add("230");
//     commend.add("-s");
//     commend.add("350x240");
     commend.add("-r");
     commend.add("29.97");
     commend.add("-y");
     commend.add("d:\test\b.flv");
     System.out.println(commend);
    try {
       ProcessBuilder builder = new ProcessBuilder();
       builder.command(commend);
       builder.start();
      return true;
     } catch (Exception e) {
       e.printStackTrace();
      return false;
     }
   }

// 生成图片 参数String newfilename, String newimg
  public static boolean processImg() {
//     System.out.println(newfilename + "->" + newimg);
     List<String> commend = new java.util.ArrayList<String>();
     commend.add("d:\flv\MediaCoder\codecs\ffmpeg.exe");
     commend.add("-i");
     commend.add("d:\test\a.mpg");
     commend.add("-y");
     commend.add("-f");
     commend.add("image2");
     commend.add("-ss");
     commend.add("38");
     commend.add("-t");
     commend.add("0.001");
     commend.add("-s");
     commend.add("320x240");
     commend.add("d:\test\b.jpg");
    try {
       ProcessBuilder builder = new ProcessBuilder();
       builder.command(commend);
       builder.start();
      return true;
     } catch (Exception e) {
       e.printStackTrace();
      return false;
     }
   }

}

java程序实现视频格式的转换的更多相关文章

  1. 如何使用java代码进行视频格式的转换(FLV)

    如何使用java代码进行视频格式的转换(FLV) 一,前言 在给网页添加视频播放功能后,发现上传的视频有各种格式,那么就需要将他么转换成FLV,以很好的支持在线视频播放. 公司一直在使用中,配合使用, ...

  2. Flv视频格式如何转换成MP4格式

    如何将flv视频格式转换成MP4格式呢?随着现在视频格式的不断多样化,视频格式转换的问题也成了现在生活中常见的问题,那么我们应该怎样将flv视频格式转换成MP4格式呢?下面我们就一起来看一下吧. 操作 ...

  3. asp.net实现调用ffmpeg实现视频格式的转换

    视频格式转换的函数 //视频转换 public void VideoConvertFlv(string FromName, string ExportName) { string ffmpeg = H ...

  4. ffmpeg转换参数和对几种视频格式的转换分析

    我们在将多种格式的视频转换成flv格式的时候,我们关注的就是转换后的flv视频的品质和大小.下面就自己的实践所得来和大家分享一下,主要针对avi.3gp.mp4和wmv四种格式来进行分析.通常在使用f ...

  5. java视频格式转换代码

    http://blog.163.com/zzf_fly/blog/static/20958915820127217443816/ package com.gkzx.online.action; imp ...

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

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

  7. java视频格式转换

    项目中需要对各种视频格式转码为mp4格式,试了好多办法,最后使用ffmpeg 工具完美转码,ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 链接 ...

  8. 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具

        Java学习路线图引言:        黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...

  9. C#使用FFmpeg 将视频格式转换成Gif图片示例

    根据EFmpeg封装的视频转换gif工具:https://my.oschina.net/tianma3798/blog/825317 一.本次使用参数说明 /* * 参数说明: * -i 源文件位置 ...

随机推荐

  1. python爬虫之路——初识基本页面构造原理

    通过chrome浏览器的使用简单介绍网页构成 360浏览器使用右键审查元素,Chrome浏览器使用右键检查,都可查看网页代码. 网页代码有两部分:HTML文件和CSS样式.其中有<script& ...

  2. Beta冲刺(周四)

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ...

  3. javaweb基础(24)_jsp一般的标签开发

    一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...

  4. oracle中的树状查询

    oracle中的树状查询 工作中经常会遇到将数据库中的数据以树的形式展现的需求.以下我们来看一下该需求在Oracle中如何实现. 首先我们需要有一个树形的表结构(当然有时候会出现表结构不是典型的树形结 ...

  5. ES6学习总结 (二)

    一:ES6为函数做了哪些扩展 参数的默认值 传统写法: function person(n,a){ var name =n || "zhangsan"; var age = a | ...

  6. 【dp】石子归并

    玄学NPC 题目描述 有一堆石头质量分别为W1,W2,…,Wn.(Wi≤10000),将石头合并为两堆,使两堆质量的差最小. 输入 输入第一行只有一个整数n(1≤n≤50),表示有n堆石子.接下去的n ...

  7. 【NOIP提高A组模拟2018.8.14】 区间

    区间加:差分数组修改 O(n)扫描,负数位置单调不减 #include<iostream> #include<cstring> #include<cstdio> # ...

  8. [LUOGU] P2634 [国家集训队]聪聪可可

    点分治裸题,甚至不需要栈回撤. 尝试用容斥写了一波,就是把所有子树混一块计算,最后减去子树内路径条数. #include<iostream> #include<cstring> ...

  9. 解决mysql出现的问题#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this i

    最近在学flask, 在访问主页时,一直出现1055错误,在网上找的解决方法是删除ONLY_FULL_GROUP_BY,当时是删除了,但是退出在进行select @@sql_mode时,仍出现ONLY ...

  10. NodeJS基础API-path相关的问题basename,extname,dirname,parse,format,sep,delimiter,win32,posix

    path 参考文档:http://nodejs.cn/api/path.html const {normalize} = require('path'); // ES6语法 // 相当于 const ...