最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年06月01日 10:14:20   作者:飛天小豬豬  
這篇文章主要介紹了java調(diào)用ffmpeg實(shí)現(xiàn)視頻轉(zhuǎn)換的方法,較為詳細(xì)分析了java視頻格式轉(zhuǎn)換所需要的步驟及具體實(shí)現(xiàn)技巧,需要的朋友可以參考下

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

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

需要在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等)

對(duì)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;
    }
    //對(duì)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;
  }
 //對(duì)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;
    }
  }
}

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

相關(guān)文章

  • Java Speech API實(shí)現(xiàn)語音識(shí)別

    Java Speech API實(shí)現(xiàn)語音識(shí)別

    Java語音識(shí)別是一項(xiàng)非常有用的功能,它可以將語音轉(zhuǎn)換為文本,從而實(shí)現(xiàn)語音輸入和語音控制功能,在當(dāng)今數(shù)字化時(shí)代,語音識(shí)別技術(shù)逐漸成為人機(jī)交互的重要方式之一,語音識(shí)別技術(shù)可以幫助我們將語音數(shù)據(jù)轉(zhuǎn)化為文字,進(jìn)而進(jìn)行后續(xù)的處理和分析
    2023-10-10
  • java排序算法之_選擇排序(實(shí)例講解)

    java排序算法之_選擇排序(實(shí)例講解)

    下面小編就為大家?guī)硪黄猨ava排序算法之_選擇排序(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java中加鎖的方式代碼示例

    Java中加鎖的方式代碼示例

    這篇文章主要給大家介紹了關(guān)于Java中加鎖方式的相關(guān)資料,我們平時(shí)開發(fā)的過程中難免遇到多線程操作共享資源的時(shí)候,這時(shí)候一般可以通過加鎖的方式保證操作的安全性,需要的朋友可以參考下
    2023-09-09
  • springboot+vue實(shí)現(xiàn)驗(yàn)證碼功能

    springboot+vue實(shí)現(xiàn)驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了springboot+vue實(shí)現(xiàn)驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java實(shí)現(xiàn)PDF轉(zhuǎn)圖片的方法

    java實(shí)現(xiàn)PDF轉(zhuǎn)圖片的方法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)PDF轉(zhuǎn)圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 一文梳理Java超大型文件讀取的18種方法和性能

    一文梳理Java超大型文件讀取的18種方法和性能

    這篇文章主要為大家詳細(xì)介紹了Java中超大型文件讀取的18種方法和性能對(duì)比,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Spring?Cloud詳細(xì)講解zuul集成Eureka流程

    Spring?Cloud詳細(xì)講解zuul集成Eureka流程

    這篇文章主要介紹了Spring?Cloud?zuul集成Eureka,Eureka?Client中內(nèi)置一個(gè)負(fù)載均衡器,用來進(jìn)行基本的負(fù)載均衡,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • SpringBoot 自動(dòng)掃描第三方包及spring.factories失效的問題解決

    SpringBoot 自動(dòng)掃描第三方包及spring.factories失效的問題解決

    這篇文章主要介紹了SpringBoot 自動(dòng)掃描第三方包及spring.factories失效的問題,本文給大家分享最新解決方法,需要的朋友可以參考下
    2023-05-05
  • Java線程的并發(fā)工具類實(shí)現(xiàn)原理解析

    Java線程的并發(fā)工具類實(shí)現(xiàn)原理解析

    本文給大家講解Java線程的并發(fā)工具類的一些知識(shí),通過適用場(chǎng)景分析大數(shù)據(jù)量統(tǒng)計(jì)類任務(wù)的實(shí)現(xiàn)原理和封裝,多個(gè)示例代碼講解的非常詳細(xì),對(duì)java線程并發(fā)工具類相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)下吧
    2021-06-06
  • 基于SpringBoot實(shí)現(xiàn)大文件分塊上傳功能

    基于SpringBoot實(shí)現(xiàn)大文件分塊上傳功能

    這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)大文件分塊上傳功能,實(shí)現(xiàn)原理其實(shí)很簡單,核心就是客戶端把大文件按照一定規(guī)則進(jìn)行拆分,比如20MB為一個(gè)小塊,分解成一個(gè)一個(gè)的文件塊,然后把這些文件塊單獨(dú)上傳到服務(wù)端,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

澳门| 连城县| 保德县| 镇坪县| 长泰县| 田林县| 永平县| 密云县| 成安县| 柏乡县| 栾城县| 左权县| 房产| 富阳市| 廉江市| 美姑县| 越西县| 昌平区| 堆龙德庆县| 富平县| 自治县| 海城市| 株洲县| 郑州市| 襄樊市| 灯塔市| 萨嘎县| 吉首市| 安国市| 白玉县| 龙口市| 清水河县| 家居| 峡江县| 普兰店市| 潼南县| 杭州市| 咸阳市| 沾化县| 静乐县| 仪征市|