各种视频格式转换成.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,如需转载请自行联系原作者
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页