一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java調用ffmpeg實現視頻轉換的方法

java調用ffmpeg實現視頻轉換的方法

2019-12-20 14:26飛天小豬豬 JAVA教程

這篇文章主要介紹了java調用ffmpeg實現視頻轉換的方法,較為詳細分析了java視頻格式轉換所需要的步驟及具體實現技巧,需要的朋友可以參考下

本文實例講述了java調用ffmpeg實現視頻轉換的方法。分享給大家供大家參考。具體分析如下:

這里環境我是在windows平臺下測試的。。。

需要在e:\下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll共4個文件。
 
還要在e:\input下放各種文件名為a的以下各種視頻文件;還要e:\output;java程序執行后能得到一個a.flv的已轉換的文件。

ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)

對ffmpeg.exe無法解析的文件格式(wmv9,rm,rmvb等),可以先用別的工具(mencoder)轉換為avi(ffmpeg能解析的)格式;

mencoder.exe;drv43260.dll;pncrt.dll這3個文件是為文件格式(wmv9,rm,rmvb等)轉換為avi(ffmpeg能解析的)格式準備的;

再把轉換好的avi文件再用ffmpeg.exe轉換成flv格式的視頻文件。。。
 
java文件的內容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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);// 直接將文件轉為flv文件
    } 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");
    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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美日韩不卡一区二区三区 | 精品亚洲一区二区三区在线播放 | 亚洲国产AV一区二区三区四区 | 91香蕉小视频 | 成人网18免费网 | 黑人粗长大战亚洲女 | 日本春菜花在线中文字幕 | 免费片在线观看 | 成人在线一区二区 | 国产专区日韩精品欧美色 | 日本中文字幕在线精品 | 亚洲欧美日韩特级毛片 | se综合| 免费日本视频 | 色综合合久久天天综合绕视看 | 久久免费看少妇高潮A片特爽 | 国产精品第页 | 日韩精选在线 | 亚欧成人中文字幕一区 | 久久国产精品永久免费网站 | 久久精品无码人妻无码AV蜜臀 | 日韩一区二区三区四区五区 | 国产麻豆剧果冻传媒影视4934 | 猛h辣h高h文湿校园1v1 | 日本孕妇大胆孕交 | 啪一啪在线视频 | 日本粉色视频 | 岛国在线播放v片免费 | 国产高清在线播放免费观看 | 久久精品热在线观看30 | 日本午夜vr影院新入口 | 201天天爱天天做 | 精品视频在线免费播放 | 九九在线精品亚洲国产 | 国产清纯91天堂在线观看 | 日本国产成人精品视频 | 美女被绑着吸下部的故事 | 成人一级黄色大片 | 91欧美秘密入口 | 四虎影视在线影院在线观看观看 | 高清麻生希在线 |