Este artigo compartilha o código específico para conversão de formato de vídeo Java para sua referência. O conteúdo específico é o seguinte
O núcleo é usar o FFMPEG para converter vídeos. Não escrevemos o código para converter vídeos, mas basta ligar para o FFMPEG, o que nos ajudará a concluir a conversão de vídeo. Os tipos suportados pelo FFMPEG são: ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, etc. Esses tipos podem ser diretamente convertidos usando FFMPEG. Os tipos que o FFMPEG não suporta são: WMV9, RM, RMVB, etc. Esses tipos precisam ser convertidos para o AVI (FFMPEG pode analisar) primeiro usando outras ferramentas (Mencoder).
Não vou dizer muita bobagem. Primeiro de tudo, preciso preparar as bibliotecas e vídeos relevantes para serem convertidos, como mostrado na figura a seguir
A seguir é a parte do código
pacote com.sino.test; importar java.io.bufferedReader; importar java.io.file; importar java.io.ioException; importar java.io.inputStream; importar java.io.inputStreamReader; importar java.util.arraylist; importar java.util.list; /** * java implements the conversion of video format* @author liuyazhuang * */ public class ChangeVideo { public static void main(String[] args) { ChangeVideo.convert("d://myeclipse//aa.avi", "d://myeclipse//bb.mp4"); } / ** * @param inputFile: Vídeos que precisam ser convertidos * @param OutputFile: Vídeos após conversão w * @return * / public static boolean convert (string inputfile, string outputfile) {if (! retornar falso; } if (process (inputFile, outputFile)) {System.out.println ("ok"); retornar true; } retornar false; } // Verifique se o arquivo existe private estático booleano de verificação (caminho da string) {arquivo file = new File (caminho); if (! file.isfile ()) {return false; } retornar true; } / ** * @param inputFile * @param outputfile * @return * Converta arquivo de vídeo * / Processo booleano estático privado (string inputFile, string outputfile) {int tipo = checkContentType (inputFile); status booleano = false; if (type == 0) {status = processflv (inputFile, outputFile); // Converte AVI em arquivo FLV diretamente} else if (type == 1) {string avifilePath = processavi (tipo, inputFile); if (avifilepath == null) retornar false; // o arquivo AVI não obtém status = processflv (avifilepath, saída de saída); // converte avi para flv} retornar status; } private static int checkContentType (string inputFile) {string type = inputfile.substring (inputFile.LastIndexof (".") + 1, inputFile.Length ()). TolowerCase (); // formatos que FFMPEG podem analisar: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, ETC.) se (tipo.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; } // Formatos de arquivo que não podem ser analisados para FFMPEG (WMV9, RM, RMVB, etc.), // Você pode primeiro usar outra ferramenta (mencoder) para converter para o formato Avi (FFMPEG Parsable). caso contrário, if (type.equals ("wmv9")) {return 1; } else if (type.equals ("rm")) {return 1; } else if (type.equals ("rmvb")) {return 1; } retornar 9; } // Os formatos que FFMPEG Parsable: (ASX, ASF, MPG, WMV, 3GP, MP4, MOV, AVI, FLV, ETC.) são diretamente convertidos em vídeo estático privado Processfile (string inputFile, stringfile) {if (! retornar falso; } List <string> comentário = new ArrayList <String> (); comentário.add (constantes.ffmpegPath); comentário.add ("-i"); comentário.add (inputfile); comentário.add ("-ab"); comentário.add ("128"); comentário.add ("-acodec"); comentário.add ("libmp3Lame"); comentário.add ("-AC"); comentário.add ("1"); comentário.add ("-ar"); comentário.add ("22050"); comentário.add ("-r"); comentário.add ("29.97"); // comentário de alta qualidade.add ("-QSCale"); comentário.add ("6"); // baixa qualidade /// elogia.add ("-b"); //commend.add("512 "); comentário.add ("-y"); comentário.add (saída de saída); StringBuffer test = new StringBuffer (); for (int i = 0; i <comment.size (); i ++) {test.append (elogio.get (i)+""); } System.out.println (teste); tente {ProcessBuilder Builder = new ProcessBuilder (); construtor.Command (elogio); construtor.start (); retornar true; } catch (Exceção e) {e.printStackTrace (); retornar falso; }} // Formatos de arquivo que não podem ser analisados para FFMPEG (WMV9, RM, RMVB, etc.), // Você pode primeiro usar outras ferramentas (mencoder) para converter para o AVI (FFMPEG pode analisar). String estática privada Processavi (int tipo, string inputFile) {arquivo file = new File (constantes.avifilepath); if (file.exists ()) file.delete (); List <String> Comentário = new ArrayList <String> (); comentário.add (constantes.mencoderPath); comentário.add (inputfile); comentário.add ("-oac"); comentário.add ("mp3Lame"); comentário.add ("-LameOpts"); comentário.add ("predefinição = 64"); comentário.add ("-OVC"); comentário.add ("xvid"); comentário.add ("-xvideNCOPTS"); comentário.add ("bitate = 600"); comentário.add ("-de"); comentário.add ("Avi"); comentário.add ("-o"); comentário.add (constantes.avifilepath); StringBuffer test = new StringBuffer (); for (int i = 0; i <comment.size (); i ++) {test.append (elogio.get (i)+""); } System.out.println (teste); tente {ProcessBuilder Builder = new ProcessBuilder (); construtor.Command (elogio); Processo p = construtor.start (); InputStream final is1 = p.getInputStream (); Final inputStream is2 = p.getErrorStream (); new Thread () {public void run () {bufferredader Br = new BufferredReader (new InputStreamReader (IS1)); tente {string lineb = null; while ((lineb = Br.readline ())! = null) {if (lineb! = null) system.out.println (lineb); }} catch (ioexception e) {e.printStackTrace (); } } } }.começar(); novo thread () {public void run () {bufferredader Br2 = new BufferredReader (new InputStreamReader (IS2)); tente {string linec = null; while ((linec = Br2.readline ())! = null) {if (linec! = null) system.out.println (linec); }} catch (ioexception e) {e.printStackTrace (); } } }.começar(); // Aguarde o processo mencoder para concluir a conversão e ligue para o processo FFMEPG P.WaitFor (); System.out.println ("quem se importa"); constantes de retorno.avifilepath; } catch (Exceção e) {System.err.println (e); retornar nulo; }}} ChangeVideo converte principalmente formatos de vídeo
pacote com.sino.test; /** * Classe constante, define principalmente a localização de programas executáveis, bibliotecas de links dinâmicos e arquivos de vídeo temporários gerados durante o processo de conversão * @Author Liuyazhuang * */public class Constants {// PATH SERUGADO PELO FFMPEG Public Static Final String Ffmpeg = "D: //myeclipse/ffmpeg public static string ffmpeg =" d: //myeclipse/fmpeg // Caminho armazenado por mencoder public static final string mencoderpath = "d: //myeclipse//mencoder.exe"; // caminho de armazenamento AVI convertido através da string final do mencoder estática final AvifilePath = "d: //myeclipse//temp.avi"; } Constantes, que definem principalmente a localização de programas executáveis, bibliotecas de links dinâmicos e arquivos de vídeo temporários gerados durante o processo de conversão.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.