国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java調(diào)用ffmpeg實(shí)現(xiàn)視頻轉(zhuǎn)換的方法

2019-11-26 15:10:06
字體:
供稿:網(wǎng)友

本文實(shí)例講述了java調(diào)用ffmpeg實(shí)現(xiàn)視頻轉(zhuǎn)換的方法。分享給大家供大家參考。具體分析如下:

這里環(huán)境我是在windows平臺(tái)下測試的。。。

需要在e:/下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll共4個(gè)文件。
 
還要在e:/input下放各種文件名為a的以下各種視頻文件;還要e:/output;java程序執(zhí)行后能得到一個(gè)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個(gè)文件是為文件格式(wmv9,rm,rmvb等)轉(zhuǎn)換為avi(ffmpeg能解析的)格式準(zhǔn)備的;

再把轉(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<String> commend=new java.util.ArrayList<String>();    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<String> commend=new java.util.ArrayList<String>();    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;    }  }}

希望本文所述對大家的java程序設(shè)計(jì)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 思茅市| 工布江达县| 普安县| 石渠县| 新沂市| 长海县| 疏勒县| 上栗县| 顺义区| 龙川县| 镇沅| 平顶山市| 白城市| 公安县| 祁阳县| 九龙城区| 武夷山市| 古丈县| 凤凰县| 抚顺县| 沙坪坝区| 镇平县| 博客| 舞钢市| 平顺县| 平乐县| 凤城市| 湖州市| 榆林市| 四子王旗| 万盛区| 临漳县| 静乐县| 苍南县| 丘北县| 中方县| 广河县| 和龙市| 莎车县| 阿巴嘎旗| 滨州市|