各种视频格式转换成.flv格式(flv格式转换)

flv格式转换--第一步
不定期更新...
 
首先要安装MediaCoder
安装目录假设为D:\flv\MediaCoder
在D:\flv\MediaCoder\codecs目录下有一些要用到的,如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:\flv\MediaCoder\codecs 
    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
    } 
  } 

    

会在指定目录下D:\test生成b.flv和b.jpg这两个文件.
 
以上为第一步,是最简单的.以后有进展不定期更新...


本文转自chainli 51CTO博客,原文链接:http://blog.51cto.com/lichen/159942,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值