Cet article partage le code spécifique de la conversion de format vidéo Java pour votre référence. Le contenu spécifique est le suivant
Le noyau consiste à utiliser FFMPEG pour convertir des vidéos. Nous n'écrivons pas le code pour convertir nous-mêmes des vidéos, mais appelons simplement FFMPEG, ce qui nous aidera à terminer la conversion vidéo. Les types pris en charge par FFMPEG sont: ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, etc. Ces types peuvent être directement convertis à l'aide de FFMPEG. Les types que FFMPEG ne prend pas en charge sont: WMV9, RM, RMVB, etc. Ces types doivent être convertis au format AVI (FFMPEG peuvent analyser) en utilisant d'abord à l'aide d'autres outils (Mencoder).
Je ne dirai pas beaucoup de bêtises. Tout d'abord, je dois préparer les bibliothèques et vidéos pertinentes à convertir, comme indiqué dans la figure suivante
Ce qui suit est la partie de code
package com.sino.test; Importer java.io.bufferedReader; Importer java.io.file; Importer java.io.ioException; import java.io.inputStream; Importer java.io.inputStreamReader; import java.util.arraylist; Importer java.util.list; / ** * Java implémente la conversion du format vidéo * @author liuyazhuang * * / classe publique Changevideo {public static void main (String [] args) {changevideo.convert ("d: //myeclipse//aa.avi", "d: //myeclips/bb.mp4"); } / ** * @param inputfile: vidéos qui doivent être converties * @param outputFile: vidéos après conversion w * @return * / public static boolean convert (string inputfile, string outputLile) {if (! checkFile (inputfile)) {system.out.println (inputfile + "is nokt file"); retourne false; } if (process (inputFile, outputFile)) {System.out.println ("OK"); Retour Vrai; } return false; } // Vérifiez si le fichier existe un fichier statique privé statique chèque (String path) {file file = new file (path); if (! file.isfile ()) {return false; } return true; } / ** * @param inputfile * @param outputfile * @return * convertir le fichier vidéo * / processus booléen statique privé (chaîne inputfile, string outputFile) {int type = checkContentType (inputFile); Statut booléen = false; if (type == 0) {status = processflv (inputFile, outputFile); // converti Avi en fichier flv directement} else if (type == 1) {String AviFilePath = processAvi (type, inputFile); if (AviFilePath == null) return false; // Avi File n'a pas status = processflv (aviFilePath, OutputFile); // converti Avi en FLV} Return Status; } private static int checkContentType (String inputFile) {String type = inputFile.SubString (inputFile.LastIndexof (".") + 1, inputFile.Length ()). TolowerCase (); // Formats que ffmpeg peut analyser: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, avi, flv, etc.) 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; } // Formats de fichiers qui ne peuvent pas être analysés pour ffmpeg (WMV9, RM, RMVB, etc.), // Vous pouvez d'abord utiliser un autre outil (Mencoder) pour convertir au format AVI (FFMPEG PISMABLE). else if (type.equals ("wmv9")) {return 1; } else if (type.equals ("rm")) {return 1; } else if (type.equals ("rmvb")) {return 1; } return 9; } // Les formats que FFMPEG est possible: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, etc.) sont directement convertis en vidéo cible Video Private Static Boolean ProcessFlv (String InputFile, String OutputFile) {If (! CheckFile (EntingFile)) {System.out. retourne false; } List <string> comment = new ArrayList <string> (); comment.add (constants.ffmpegpath); comment.add ("- i"); comment.add (inputfile); comment.add ("- ab"); comment.add ("128"); comment.add ("- acdec"); comment.add ("libmp3lame"); comment.add ("- ac"); comment.add ("1"); comment.add ("- ar"); comment.add ("22050"); comment.add ("- r"); comment.add ("29.97"); // commentaire de haute qualité.add ("- qscale"); comment.add ("6"); // de basse qualité /// wentd.add ("- b"); //comMend.add("512 "); comment.add ("- y"); comment.Add (OutputFile); StringBuffer test = new StringBuffer (); for (int i = 0; i <comment.size (); i ++) {test.append (endarmed.get (i) + ""); } System.out.println (test); try {processBuilder builder = new ProcessBuilder (); builder.command (félicitation); builder.start (); Retour Vrai; } catch (exception e) {e.printStackTrace (); retourne false; }} // Formats de fichiers qui ne peuvent pas être analysés pour ffmpeg (WMV9, RM, RMVB, etc.), // Vous pouvez d'abord utiliser d'autres outils (Mencoder) pour convertir au format Avi (ffmpeg Can Ansed). String statique privé processAvi (int type, chaîne inputfile) {file file = new File (constants.avifilepath); if (file.exists ()) file.delete (); List <string> commentaire = new ArrayList <string> (); comment.add (constantes.MencoderPath); comment.add (inputfile); comment.add ("- oac"); comment.add ("mp3lame"); comment.add ("- lameopts"); comment.add ("préset = 64"); comment.add ("- ovc"); comment.add ("xvid"); comment.add ("- xvidencopts"); comment.add ("bitate = 600"); comment.add ("- de"); comment.add ("avi"); comment.add ("- o"); comment.add (constantes.avifilepath); StringBuffer test = new StringBuffer (); for (int i = 0; i <comment.size (); i ++) {test.append (endarmed.get (i) + ""); } System.out.println (test); try {processBuilder builder = new ProcessBuilder (); builder.command (félicitation); Processus p = builder.start (); Final InputStream IS1 = P.GetInputStream (); Final InputStream IS2 = P.GetErRorStream (); nouveau thread () {public void run () {buffereDReader br = new buttereDreader (new inputStreamReader (is1)); essayez {String lineb = null; while ((lineB = br.readline ())! = null) {if (lineB! = null) System.out.println (lineB); }} catch (ioException e) {e.printStackTrace (); } } } }.commencer(); nouveau thread () {public void run () {bufferedReader BR2 = new BufferedReader (new inputStreamReader (is2)); essayez {String linec = null; while ((linec = br2.readline ())! = null) {if (linec! = null) System.out.println (linec); }} catch (ioException e) {e.printStackTrace (); } } }.commencer(); // attendez que le processus Mencoder termine la conversion, puis appelez le processus ffMepg P.WaitFor (); System.out.println ("Who se soucie"); RETOUR CONSTANTS.AVIFILEPATH; } catch (exception e) {System.err.println (e); retourner null; }}} ChangeVideo-like convertit principalement les formats vidéo
package com.sino.test; / ** * Classe constante, définit principalement l'emplacement des programmes exécutables, des bibliothèques de liens dynamiques et des fichiers vidéo temporaires générés pendant le processus de conversion * @author liuyazhuang * * / des constantes de classe publique {// Path stocké par ffmpeg public static final string ffmpegpath = "d: //mieclips/ffmpeg.exe"; // Chemin stocké par Mencoder public static final String MencoderPath = "d: //myeclipse//mencoder.exe"; // Chemin de stockage AVI converti via Mencoder public static final String AviFilePath = "d: //myeclipse//temp.avi"; } Les constantes, qui définissent principalement l'emplacement des programmes exécutables, des bibliothèques de liens dynamiques et des fichiers vidéo temporaires générés pendant le processus de conversion.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.