Dieser Artikel teilt den spezifischen Code für die Konvertierung von Java -Videoformat für Ihre Referenz. Der spezifische Inhalt ist wie folgt
Der Kern besteht darin, FFMPEG zum Konvertieren von Videos zu verwenden. Wir schreiben den Code nicht, um Videos selbst zu konvertieren, sondern rufen Sie einfach FFMPEG an, was uns hilft, die Videokonvertierung abzuschließen. Die von FFMPEG unterstützten Typen sind: ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV usw. Diese Typen können direkt mit FFMPEG konvertiert werden. Die Typen, die FFMPEG nicht unterstützt, sind: WMV9, RM, RMVB usw. Diese Typen müssen zuerst in AVI (FFMPEG CAN CAHR analysieren) mit anderen Tools (Mencoder) konvertiert werden.
Ich werde nicht viel Unsinn sagen. Zunächst muss ich die relevanten Bibliotheken und Videos vorbereiten, die konvertiert werden sollen, wie in der folgenden Abbildung gezeigt
Das Folgende ist der Code -Teil
Paket com.sino.test; Import Java.io.BufferedReader; Import Java.io.file; importieren java.io.ioException; importieren java.io.inputstream; importieren java.io.inputStreamReader; Import Java.util.ArrayList; importieren java.util.list; /** * Java implementiert die Umwandlung des Videoformates * @Author liuyazhuang * */public class Changevideo {public static void main (String [] args) {Changevideo.convert ("D: //myeclipse//aa.avi", "D: //myeclipse/bbb4"). } / ** * @param inputFile: Videos, die konvertiert werden müssen false zurückgeben; } if (prozess (inputFile, outputFile)) {System.out.println ("OK"); zurückkehren; } return false; } // Überprüfen Sie, ob die Datei eine private statische boolean checkfile (String -Pfad) {Datei Datei = neue Datei (Pfad); if (! file.isfile ()) {return false; } Return true; } / ** * @param inputFile * @param outputFile * @return * Videodatei konvertieren * / private statische boolean -Prozess (String InputFile, String OutputFile) {int type = preokContentType (InputFile); boolescher Status = Falsch; if (type == 0) {status = processFlv (inputFile, outputFile); // AVI in FLV -Datei direkt konvertieren} else if (type == 1) {String avifilepath = processavi (type, inputFile); if (avifilepath == null) return false; // AVI -Datei erhält nicht status = processFlv (avifilepath, outputFile); // AVI in Flv} Rückgabestatus konvertieren; } private static int checkContentType (String InputFile) {String type = inputFile.substring (inputFile.lastIndexof (".") + 1, inputFile.length ()). TOLOWERCASE (); // Formate, die FFMPEG analysieren kann: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV usw.) if (type.equals ("avi") {return 0; } else if (type.equals ("mpg")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } else if (type.equals ("wmv")) {return 0; } (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; } // Dateiformate, die nicht für FFMPEG (WMV9, RM, RMVB usw.) analysiert werden können, // können zuerst ein anderes Tool (Mencoder) verwenden, um in AVI (FFMPEG Parsable) -Format umzuwandeln. else if (type.equals ("wmv9")) {return 1; } else if (type.equals ("rm")) {return 1; } else if (type.equals ("rmvb")) {return 1; } return 9; } // Die Formate, die ffmpeg parserable: (Asx, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV usw.) werden direkt in Zielvideo -privates statisches booleaner Prozessflv (String InputFile, String OutputFile) {if (! Checkfile (InputFile)) {System.out.out.Out.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.OUT.PRINTLURTEDRABEN. false zurückgeben; } List <string> comment = new ArrayList <string> (); comment.add (Constants.ffmpegPath); comment.add ("-i"); comment.Add (InputFile); comment.add ("-ab"); comment.add ("128"); comment.add ("-acodec"); comment.add ("libmp3lame"); comment.add ("-ac"); comment.add ("1"); comment.add ("-ar"); comment.add ("22050"); comment.add ("-r"); comment.add ("29.97"); // hochwertige Kommentar.Add ("-Qscale"); comment.add ("6"); // niedrige Qualität /// commend.add ("-b"); //commend.add("512 "); comment.add ("-y"); comment.add (outputFile); StringBuffer test = new StringBuffer (); für (int i = 0; i <comment.size (); i ++) {test.Append (empfohlen.get (i)+""); } System.out.println (Test); try {processBuilder builder = new ProcessBuilder (); Builder.Command (empfehlen); Builder.Start (); zurückkehren; } catch (Ausnahme e) {e.printstacktrace (); false zurückgeben; }} // Dateiformate, die nicht für FFMPEG (WMV9, RM, RMVB usw.) analysiert werden können, // können zuerst andere Tools (Mencoder) verwenden, um in das Format von AVI (FFMPEG CAN CAN CANSED) zu konvertieren. private static String processavi (int type, string inputFile) {file file = new Datei (constants.avifilepath); if (file.exists ()) file.delete (); Liste <String> comment = new ArrayList <string> (); comment.Add (Constants.MencoderPath); comment.Add (InputFile); comment.add ("-oac"); comment.add ("mp3lame"); comment.add ("-lameopts"); comment.add ("voreinstieg = 64"); comment.add ("-ovc"); comment.add ("xvid"); comment.add ("-xvidencopts"); comment.add ("bitate = 600"); comment.add ("-von"); comment.add ("avi"); comment.add ("-o"); comment.add (Constants.avifilepath); StringBuffer test = new StringBuffer (); für (int i = 0; i <comment.size (); i ++) {test.Append (empfohlen.get (i)+""); } System.out.println (Test); try {processBuilder builder = new ProcessBuilder (); Builder.Command (empfehlen); Prozess p = builder.start (); Final InputStream is1 = p.getInputStream (); Final InputStream IS2 = P.GetErrorStream (); neuer Thread () {public void run () {bufferedReader BR = New BufferedReader (neuer InputStreamReader (IS1)); try {string lineB = null; while ((lineB = br.readline ())! = null) {if (lineB! = null) system.out.println (lineB); }} catch (ioException e) {e.printstacktrace (); } } } }.Start(); neuer Thread () {public void run () {bufferedReader BR2 = neuer BufferedReader (neuer InputStreamReader (IS2)); try {string linec = null; while ((linec = br2.readline ())! = null) {if (linec! = null) system.out.println (linec); }} catch (ioException e) {e.printstacktrace (); } } }.Start(); // Warten Sie, bis der Mencoder -Prozess die Konvertierung abgeschlossen hat, und rufen Sie dann den FFMEPG -Prozess an. System.out.println ("Who Cares"); Rücklaufkonstanten.Avifilepath; } catch (Ausnahme e) {System.err.println (e); null zurückkehren; }}} Changevideo-ähnlich konvertiert hauptsächlich Videoformate
Paket com.sino.test; /** * Konstante Klasse legt hauptsächlich den Speicherort ausführbarer Programme, dynamische Linkbibliotheken und temporäre Videodateien fest, die während des Konvertierungsprozesses generiert werden. // Pfad gespeichert von Mencoder Public Static Final String mencoderpath = "D: //myeclipse//mencoder.exe"; // AVI -Speicherpfad, der über MenCoder Public static Final String Avifilepath = "D: //myeclipse//temp.avi" konvertiert wurde; }
Konstanten, die hauptsächlich den Speicherort von ausführbaren Programmen, dynamischen Linkbibliotheken und temporären Videodateien festlegen, die während des Konvertierungsprozesses generiert werden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.