Эта статья разделяет конкретный код для преобразования формата видео Java для вашей ссылки. Конкретный контент заключается в следующем
Ядро состоит в том, чтобы использовать FFMPEG для преобразования видео. Мы сами не пишем код для конвертации видео, а просто называем FFMPEG, что поможет нам завершить конверсию видео. Типы, поддерживаемые FFMPEG: ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV и т. Д. Эти типы могут быть непосредственно преобразованы с использованием FFMPEG. Типы, которые FFMPEG не поддерживает: WMV9, RM, RMVB и т. Д.
Я не скажу много чепухи. Прежде всего, мне нужно подготовить соответствующие библиотеки и видео, которые будут преобразованы, как показано на следующем рисунке
Ниже приводится кодовая часть
пакет com.sino.test; Импорт java.io.bufferedReader; Импорт java.io.file; импортировать java.io.ioexception; импортировать java.io.inputstream; Импорт java.io.inputStreamReader; импортировать java.util.arraylist; импортировать java.util.list; /** * Java реализует преобразование видео -формата * @author liuyazhuang * */public class changevideo {public static void main (string [] args) {changevideo.convert ("d: //myeclipse//aa.avi", "d: //myeclipse//bb.mp4"); } / ** * @param inputfile: видео, которые необходимо преобразовать * @param outputfile: видео после преобразования w * @return * / public static boolean convert (string input -file, string output -file) {if (! CheckFile (inputFile)) {System.out.println (inputFile + "IS nokt file"); вернуть ложь; } if (process (inputfile, outputfile)) {System.out.println ("ok"); вернуть истину; } вернуть false; } // Проверьте, существует ли файл частным статическим логическим контролем (String Path) {file file = new File (path); if (! file.isfile ()) {return false; } вернуть true; } / ** * @param inputfile * @param outputfile * @return * конвертировать видеофайл * / private Static Boolean Process (String Inputfile, String outputFile) {int type = checkContentType (inputFile); логический статус = false; if (type == 0) {status = processflv (inputFile, outputFile); // преобразовать AVI в FLV -файл напрямую} else if (type == 1) {String avifilePath = processaVi (type, input -file); if (avifilepath == null) return false; // avi -файл не получает status = processflv (avifilepath, outputfile); // преобразовать AVI в FLV} Статус возврата; } 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 ("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; } // Форматы файлов, которые не могут быть проанализированы для FFMPEG (WMV9, RM, RMVB и т. Д.), // Вы можете сначала использовать другой инструмент (Mencoder) для преобразования в формат AVI (ffmpeg parsable). иначе if (type.equals ("wmv9")) {return 1; } else if (type.equals ("rm")) {return 1; } else if (type.equals ("rmvb")) {return 1; } return 9; } // Форматы, которые pfmpeg parsable: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV и т. Д.) Прямо преобразуются в целевое видео частное статическое логическое процесс ProcessFlv (String inputfile, String outputfile) {if (! Checkfile (inputfile)) {System.out.println (! вернуть ложь; } 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"); // высококачественный комментарий.add ("-Qscale"); Comment.Add ("6"); // низкое качество /// cramend.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 (crape.get (i)+""); } System.out.println (тест); try {processbuilder builder = new ProcessBuilder (); builder.command (похвалы); Builder.Start (); вернуть истину; } catch (Exception e) {e.printstackTrace (); вернуть ложь; }} // Форматы файлов, которые не могут быть проанализированы для FFMPEG (WMV9, RM, RMVB и т. Д.), // Вы можете сначала использовать другие инструменты (Mencoder) для преобразования в AVI (FFMPEG может анализировать). Private Static String ProcessAVI (int type, string inputFile) {file file = new File (constants.avifilePath); if (file.exists ()) file.delete (); Список <string> comment = new ArrayList <string> (); Comment.Add (constants.mencoderpath); Comment.Add (inputFile); Comment.Add ("-OAC"); Comment.Add ("mp3lame"); Comment.Add ("-Lameopts"); Comment.Add ("preset = 64"); Comment.Add ("-OVC"); Comment.Add ("xvid"); Comment.Add ("-xvidencopts"); Comment.Add ("bitate = 600"); Comment.Add ("-of"); Comment.Add ("avi"); Comment.Add ("-O"); Comment.Add (Constants.AvifilePath); StringBuffer test = new StringBuffer (); for (int i = 0; i <comment.size (); i ++) {test.append (crape.get (i)+""); } System.out.println (тест); try {processbuilder builder = new ProcessBuilder (); builder.command (похвалы); Process P = Builder.Start (); окончательный входной is1 = p.getinputstream (); окончательный inputstream is2 = p.geterrorsream (); 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 (); } } } }.начинать(); 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 (); } } }.начинать(); // ждать, пока процесс Mencoder завершит преобразование, затем вызовите процесс FFMEPG p.waitfor (); System.out.println («Кто заботится»); вернуть константы.avifilepath; } catch (Exception e) {System.err.println (e); вернуть ноль; }}} Изменение Video-подобного в основном преобразует видео форматы
пакет com.sino.test; /** * Постоянный класс, в основном устанавливает местоположение исполняемых программ, библиотеки динамических ссылок и временные видеофайлы, сгенерированные во время процесса преобразования * @author liuyazhuang * */public class Constants {// Path, хранящийся FFMPEG Public Static Final String ffmpegpath = "d: //myeclipse//ffmpeg.exe"; // Путь, хранящийся Mencoder Public Static Final String Mencoderpath = "d: //myeclipse//mencoder.exe"; // путь хранения AVI, преобразованный через Mencoder Public Static Final String AvifilePath = "d: //myeclipse//temp.avi"; } Константы, которые в основном устанавливают местоположение исполняемых программ, библиотеки динамических ссылок и временные видеофайлы, генерируемые в процессе преобразования.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.