日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

java調(diào)用ffmpeg執(zhí)行視頻轉(zhuǎn)換-轉(zhuǎn)載

 韭菜一碟 2010-04-05
java調(diào)用ffmpeg執(zhí)行視頻轉(zhuǎn)換
2007-10-26 23:02
用java小例題說明更直觀:(可以直接編譯運行)
環(huán)境我在windows平臺下測試的。。。
需要在e:\下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll共4個文件。
還要在e:\input下放各種文件名為a的以下各種視頻文件;還要e:\output;java程序執(zhí)行后能得到一個a.flv的已轉(zhuǎn)換的文件。
ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
對ffmpeg.exe無法解析的文件格式(wmv9,rm,rmvb等),
可以先用別的工具(mencoder)轉(zhuǎn)換為avi(ffmpeg能解析的)格式;
mencoder.exe;drv43260.dll;pncrt.dll這3個文件是為文件格式(wmv9,rm,rmvb等)
轉(zhuǎn)換為avi(ffmpeg能解析的)格式準備的;再把轉(zhuǎn)換好的avi文件再用ffmpeg.exe轉(zhuǎn)換成flv格式的視頻文件。。。
java文件的內(nèi)容如下:
import java.io.File;
import java.util.List;
public class ConvertVideo {

private final static String PATH = "c:\\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);// 直接將文件轉(zhuǎn)為flv文件           
         } else if (type==1) {
             String avifilepath = processAVI(type);
             if (avifilepath == null)
                 return false;// avi文件沒有得到
             status = processFLV(avifilepath);// 將avi轉(zhuǎn)為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)轉(zhuǎn)換為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)轉(zhuǎn)換為avi(ffmpeg能解析的)格式.
     private static String processAVI(int type) {
         List commend=new java.util.ArrayList();
         commend.add("e:\\mencoder");
         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("c:\\home\\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 commend=new java.util.ArrayList();
         commend.add("e:\\ffmpeg");
         commend.add("-i");
         commend.add(oldfilepath);
         commend.add("-ab");
         commend.add("64");
         commend.add("-acodec");
         commend.add("mp3");
         commend.add("-ac");
         commend.add("2");
         commend.add("-ar");
         commend.add("22050");
         commend.add("-b");
         commend.add("230");
         commend.add("-r");
         commend.add("24");
         commend.add("-y");
         commend.add("c:\\home\\a.flv");
         try {
             ProcessBuilder builder = new ProcessBuilder();
             builder.command(commend);
             builder.start();
             return true;
         } catch (Exception e) {
             e.printStackTrace();
             return false;
         }
     }

}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多