Artikel ini membagikan kode spesifik untuk konversi format video Java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Inti adalah menggunakan FFMPEG untuk mengonversi video. Kami tidak menulis kode untuk mengonversi video sendiri, tetapi hubungi saja FFMPEG, yang akan membantu kami menyelesaikan konversi video. Jenis yang didukung oleh FFMPEG adalah: ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, dll. Jenis -jenis ini dapat langsung dikonversi menggunakan FFMPEG. Jenis yang tidak didukung FFMPEG adalah: WMV9, RM, RMVB, dll. Jenis -jenis ini perlu dikonversi menjadi format AVI (FFMPEG dapat menguraikan) terlebih dahulu menggunakan alat lain (Mencoder).
Saya tidak akan mengatakan banyak omong kosong. Pertama -tama, saya perlu menyiapkan perpustakaan dan video yang relevan untuk dikonversi, seperti yang ditunjukkan pada gambar berikut
Berikut ini adalah bagian kode
paket com.sino.test; impor java.io.bufferedReader; impor java.io.file; impor java.io.ioException; impor java.io.inputstream; impor java.io.inputStreamReader; impor java.util.arraylist; impor java.util.list; /** * Java mengimplementasikan konversi format video * @author liUyazhuang * */kelas publik changevideo {public static void main (string [] args) {changevideo.convert ("d: //myeclipse/aa.avi", "d: //myece/myeclipse/aa.avi", "d: //myece/myeclipse/aa.avi", "d: //myece/myeclipse/aa.avi"; } /** * @param inputFile: Videos that need to be converted* @param outputFile: Videos after conversion w * @return */ public static boolean convert(String inputFile, String outputFile) { if (!checkfile(inputFile)) { System.out.println(inputFile + " is nokt file"); mengembalikan false; } if (proses (inputFile, outputFile)) {System.out.println ("ok"); Kembali Benar; } return false; } // Periksa apakah file ada boolean statis privat (path string) {file file = file baru (path); if (! file.isfile ()) {return false; } return true; } / ** * @param inputFile * @param outputFile * @return * Konversi file video * / proses boolean statis privat (string inputFile, string outputFile) {int type = checkContentType (inputFile); status boolean = false; if (type == 0) {status = processFlv (inputFile, outputFile); // Konversi file AVI ke flv langsung} lain jika (type == 1) {string avifilePath = processAvi (type, inputFile); if (avifilePath == null) return false; // file avi tidak mendapatkan status = prosesflv (avifilePath, outputFile); // konversi avi ke flv} status pengembalian; } private static int checkContentType (string inputFile) {string type = inputFile.subString (inputFile.LastIndexOf (".") + 1, inputFile.length ()). tolowerCase (); // Format yang dapat diurai oleh FFMPEG: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, dll.) Jika (type.equals ("avi")) {return 0; } lain jika (type.equals ("mpg")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } lain jika (type.equals ("wmv")) {return 0; } (type.equals ("3gp")) {return 0; } lain jika (type.equals ("mov")) {return 0; } lain jika (type.equals ("mp4")) {return 0; } lain jika (type.equals ("asf")) {return 0; } lain jika (type.equals ("asx")) {return 0; } lain jika (type.equals ("flv")) {return 0; } // Format file yang tidak dapat diuraikan untuk FFMPEG (WMV9, RM, RMVB, dll.), // Anda pertama -tama dapat menggunakan alat lain (Mencoder) untuk mengonversi ke format AVI (FFMPEG parsable). lain jika (type.equals ("wmv9")) {return 1; } lain jika (type.equals ("rm")) {return 1; } lain jika (type.equals ("rmvb")) {return 1; } return 9; } // Format yang dapat diurai FFMPEG: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, dll.) Secara langsung dikonversi ke target video private static boolean prosesflv (inputfile, string outputFile) {if (! Checkfile (inputFile) {iSput. mengembalikan false; } Daftar <String> Komentar = ArrayList baru <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"); // komentar berkualitas tinggi ("-qscale"); Comment.Add ("6"); // kualitas rendah /// comend.add ("-b"); //commend.add("512 "); Comment.add ("-y"); Comment.Add (OutputFile); StringBuffer test = new StringBuffer (); untuk (int i = 0; i <comment.size (); i ++) {test.append (commend.get (i)+""); } System.out.println (tes); coba {ProcessBuilder Builder = new ProcessBuilder (); builder.command (comend); builder.start (); Kembali Benar; } catch (Exception e) {E.PrintStackTrace (); mengembalikan false; }} // Format file yang tidak dapat diuraikan untuk FFMPEG (WMV9, RM, RMVB, dll.), // Anda dapat menggunakan alat lain terlebih dahulu (Mencoder) untuk mengonversi ke format AVI (FFMPEG dapat diuraikan). Private Static String ProcessAvi (tipe int, String inputFile) {file file = file baru (constants.avifilePath); if (file.exists ()) file.delete (); Daftar <String> Komentar = ArrayList baru <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 (); untuk (int i = 0; i <comment.size (); i ++) {test.append (commend.get (i)+""); } System.out.println (tes); coba {ProcessBuilder Builder = new ProcessBuilder (); builder.command (comend); Proses p = builder.start (); InputStream akhir IS1 = P.GetInputStream (); inputStream final IS2 = p.getErrorStream (); utas baru () {public void run () {bufferedReader br = new buferedReader (inputStreamReader baru (IS1)); coba {string lineb = null; while ((lineB = br.readline ())! = null) {if (lineb! = null) system.out.println (lineb); }} catch (ioException e) {E.PrintStackTrace (); } } } }.awal(); utas baru () {public void run () {bufferedReader br2 = new buferedReader (new InputStreamReader (IS2)); coba {string linec = null; while ((linec = br2.readline ())! = null) {if (linec! = null) system.out.println (linec); }} catch (ioException e) {E.PrintStackTrace (); } } }.awal(); // Tunggu proses Mencoder untuk menyelesaikan konversi, lalu hubungi proses FFMEPG P.Waitfor (); System.out.println ("Who Cares"); Return Constants.Avifilepath; } catch (Exception e) {System.err.println (e); kembali nol; }}} Changevideo-Like Terutama mengonversi format video
paket com.sino.test; /** * Constant class, mainly sets the location of executable programs, dynamic link libraries, and temporary video files generated during the conversion process* @author liuyazhuang * */ public class Constants { // path stored by ffmpeg public static final String ffmpegPath = "d://myeclipse//ffmpeg.exe"; // path disimpan oleh Mencoder public static final string mesencoderpath = "d: //myeclipse//mencoder.exe"; // AVI Path Storage dikonversi melalui Mencoder public static final string avifilePath = "d: //myeclipse//temp.avi"; } Konstanta, yang terutama menetapkan lokasi program yang dapat dieksekusi, pustaka tautan dinamis, dan file video sementara yang dihasilkan selama proses konversi.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.