欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java視頻格式轉(zhuǎn)化的實(shí)現(xiàn)方法

本文實(shí)例為大家分享了Java視頻格式轉(zhuǎn)化的具體代碼,供大家參考,具體內(nèi)容如下

在新縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷,外貿(mào)網(wǎng)站制作,新縣網(wǎng)站建設(shè)費(fèi)用合理。

核心是利用ffmpeg進(jìn)行視頻轉(zhuǎn)換,我們自己并不寫轉(zhuǎn)換視頻的代碼,只是調(diào)用ffmpeg,它會幫我們完成視頻的轉(zhuǎn)換。ffmpeg支持的類型有:asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等,這些類型,可以利用ffmpeg進(jìn)行直接轉(zhuǎn)換。ffmpeg不支持的類型有:wmv9,rm,rmvb等,這些類型需要先用別的工具(mencoder)轉(zhuǎn)換為avi(ffmpeg能解析的)格式。

廢話不大多說了,首先要把相關(guān)的庫和要轉(zhuǎn)化的視頻準(zhǔn)備好,如下圖

 Java視頻格式轉(zhuǎn)化的實(shí)現(xiàn)方法

下面就是代碼部分了   

package com.sino.test; 
 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 
 
/** 
 * java實(shí)現(xiàn)視頻格式的轉(zhuǎn)化 
 * @author liuyazhuang 
 * 
 */ 
public class ChangeVideo { 
  public static void main(String[] args) { 
    ChangeVideo.convert("d:\\myeclipse\\aa.avi", "d:\\myeclipse\\bb.mp4"); 
  } 
 
  /** 
   * @param inputFile:需要轉(zhuǎn)換的視頻 
   * @param outputFile:轉(zhuǎn)換后的視頻w 
   * @return 
   */ 
  public static boolean convert(String inputFile, String outputFile) { 
    if (!checkfile(inputFile)) { 
      System.out.println(inputFile + " is nokt file"); 
      return false; 
    } 
    if (process(inputFile, outputFile)) { 
      System.out.println("ok"); 
      return true; 
    } 
    return false; 
  } 
 
  // 檢查文件是否存在 
  private static boolean checkfile(String path) { 
    File file = new File(path); 
    if (!file.isFile()) { 
      return false; 
    } 
    return true; 
  } 
 
  /** 
   * @param inputFile 
   * @param outputFile 
   * @return 
   * 轉(zhuǎn)換視頻文件 
   */ 
  private static boolean process(String inputFile, String outputFile) { 
    int type = checkContentType(inputFile); 
    boolean status = false; 
    if (type == 0) { 
      status = processFLV(inputFile, outputFile);// 直接將文件轉(zhuǎn)為flv文件 
    } else if (type == 1) { 
      String avifilepath = processAVI(type, inputFile); 
      if (avifilepath == null) 
        return false;// avi文件沒有得到 
      status = processFLV(avifilepath, outputFile);// 將avi轉(zhuǎn)為flv 
    } 
    return status; 
  } 
 
  private static int checkContentType(String inputFile) { 
    String type = inputFile.substring(inputFile.lastIndexOf(".") + 1, 
        inputFile.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; 
  } 
  // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)直接轉(zhuǎn)換為目標(biāo)視頻 
  private static boolean processFLV(String inputFile, String outputFile) { 
    if (!checkfile(inputFile)) { 
      System.out.println(inputFile + " is not file"); 
      return false; 
    } 
    List<String> commend = new ArrayList<String>(); 
     
    commend.add(Constants.ffmpegPath); 
    commend.add("-i"); 
    commend.add(inputFile); 
    commend.add("-ab"); 
    commend.add("128"); 
    commend.add("-acodec"); 
    commend.add("libmp3lame"); 
    commend.add("-ac"); 
    commend.add("1"); 
    commend.add("-ar"); 
    commend.add("22050"); 
    commend.add("-r"); 
    commend.add("29.97"); 
    //高品質(zhì)  
    commend.add("-qscale"); 
    commend.add("6"); 
    //低品質(zhì) 
//   commend.add("-b"); 
//   commend.add("512"); 
    commend.add("-y"); 
     
    commend.add(outputFile); 
    StringBuffer test = new StringBuffer(); 
    for (int i = 0; i < commend.size(); i++) { 
      test.append(commend.get(i) + " "); 
    } 
 
    System.out.println(test); 
 
    try { 
      ProcessBuilder builder = new ProcessBuilder(); 
      builder.command(commend); 
      builder.start(); 
      return true; 
    } catch (Exception e) { 
      e.printStackTrace(); 
      return false; 
    } 
  } 
  // 對ffmpeg無法解析的文件格式(wmv9,rm,rmvb等), 
  // 可以先用別的工具(mencoder)轉(zhuǎn)換為avi(ffmpeg能解析的)格式. 
  private static String processAVI(int type, String inputFile) { 
    File file = new File(Constants.avifilepath); 
    if (file.exists()) 
      file.delete(); 
    List<String> commend = new ArrayList<String>(); 
    commend.add(Constants.mencoderPath); 
    commend.add(inputFile); 
    commend.add("-oac"); 
    commend.add("mp3lame"); 
    commend.add("-lameopts"); 
    commend.add("preset=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(Constants.avifilepath); 
    StringBuffer test = new StringBuffer(); 
    for (int i = 0; i < commend.size(); i++) { 
      test.append(commend.get(i) + " "); 
    } 
 
    System.out.println(test); 
    try { 
      ProcessBuilder builder = new ProcessBuilder(); 
      builder.command(commend); 
      Process p = builder.start(); 
 
      final InputStream is1 = p.getInputStream(); 
      final InputStream is2 = p.getErrorStream(); 
      new Thread() { 
        public void run() { 
          BufferedReader br = new BufferedReader( 
              new InputStreamReader(is1)); 
          try { 
            String lineB = null; 
            while ((lineB = br.readLine()) != null) { 
              if (lineB != null) 
                System.out.println(lineB); 
            } 
          } catch (IOException e) { 
            e.printStackTrace(); 
          } 
        } 
      }.start(); 
      new Thread() { 
        public void run() { 
          BufferedReader br2 = new BufferedReader( 
              new InputStreamReader(is2)); 
          try { 
            String lineC = null; 
            while ((lineC = br2.readLine()) != null) { 
              if (lineC != null) 
                System.out.println(lineC); 
            } 
          } catch (IOException e) { 
            e.printStackTrace(); 
          } 
        } 
      }.start(); 
 
      // 等Mencoder進(jìn)程轉(zhuǎn)換結(jié)束,再調(diào)用ffmepg進(jìn)程 
      p.waitFor(); 
      System.out.println("who cares"); 
      return Constants.avifilepath; 
    } catch (Exception e) { 
      System.err.println(e); 
      return null; 
    } 
  } 
} 

 類ChangeVideo主要進(jìn)行視頻格式的轉(zhuǎn)化

package com.sino.test; 
 
/** 
 * 常量類,主要設(shè)置可執(zhí)行程序和動態(tài)鏈接庫以及轉(zhuǎn)化過程中生成的臨時視頻文件的位置 
 * @author liuyazhuang 
 * 
 */ 
public class Constants { 
  //ffmpeg存放的路徑 
  public static final String ffmpegPath = "d:\\myeclipse\\ffmpeg.exe"; 
  //mencoder存放的路徑 
  public static final String mencoderPath = "d:\\myeclipse\\mencoder.exe"; 
  //通過mencoder轉(zhuǎn)換成的avi存放路徑 
  public static final String avifilepath = "d:\\myeclipse\\temp.avi"; 
} 

常量類Constants ,主要設(shè)置可執(zhí)行程序和動態(tài)鏈接庫以及轉(zhuǎn)化過程中生成的臨時視頻文件的位置。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

當(dāng)前標(biāo)題:Java視頻格式轉(zhuǎn)化的實(shí)現(xiàn)方法
網(wǎng)站路徑:http://aaarwkj.com/article18/peicdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、微信公眾號、商城網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
免费观看在线视频午夜| 日本人妻伦理在线播放| 日韩一区二区三级电影| 国产亚洲精品久久综合阿香| 国产精品中文字幕第一区| 国产成人精品久久一区二区三区| 久久综合午夜福利视频| 中文字幕免费日本在线| 日韩精品国产一区二区在线观看| 久久99热这里只频精品| 亚洲国产日韩精品自拍av| 日本师生三片在线观看| 成熟性性生活免费视频| 日韩一区中文字幕久久| 久久婷婷精品国产亚洲av| 国产精品一区二区精品| 自拍偷拍一区蜜桃视频| 热久久这里只有精品视频| 成年人免费观看黄色片| 精品成人在线一区二区| 国产精品人妻在线av| 日本视频一曲二曲三曲四曲| 亚洲综合一区二区三区不卡| 亚洲理论电影在线观看| 色欧美在线视频观看日韩| 未满十八禁在线观看免费| 欧美丰满人妻少妇视频在线| 亚洲日本成人av在线观看| 高清免费国产日日操夜夜草| 免费看男人添女人无遮挡| 人妻天天爽夜夜爽欧美色| 国产亚洲国产av网站在线| 亚洲偷拍自拍在线观看| 国产成人亚洲精品乱码| 国产综合中文字幕不卡| 日韩高清精品一区二区| 亚洲综合国产一二三四五区| 亚洲一区二区三区日韩欧美| 麻豆精东传媒一区二区| 日本一道本不卡一区二区| 国产亚洲精品女人久久久|