zoukankan      html  css  js  c++  java
  • Java调用linux命令ffmpeg视频转码

    mport java.io.*;
    import java.lang.*;
    import java.util.*;
    import java.text.*;
    import java.net.*;
    public class MediocreExecJavac
    {
    //运行命令
    public void runCmd(String command){
    try
    {           
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(command);
    InputStream stderr = proc.getErrorStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    System.out.println("<ERROR>");
    while ( (line = br.readLine()) != null)
    System.out.println(line);
    System.out.println("</ERROR>");
    int exitVal = proc.waitFor();
    System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }

    //视频转码,infile输入文件(包括完整路径),outfile输出文件
    public boolean transfer(String infile,String outfile){
    String avitoflv = "ffmpeg -i "+infile+" -ar 22050 -ab 56 -f flv -y -s 320x240 "+outfile;
    String flvto3gp = "ffmpeg -i " + infile + " -ar 8000 -ac 1 -acodec amr_nb -vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 " + outfile;
    String avito3gp = "ffmpeg -i " + infile + " -ar 8000 -ac 1 -acodec amr_nb -vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 " + outfile;
    //avi -> jpg
    String avitojpg = "ffmpeg -i " + infile + " -y -f image2 -ss 00:00:10 -t 00:00:01 -s 350x240 " + outfile;
    try
    {           
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(avitoflv);
    InputStream stderr = proc.getErrorStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    System.out.println("<ERROR>");
    while ( (line = br.readLine()) != null)
    System.out.println(line);
    System.out.println("</ERROR>");
    int exitVal = proc.waitFor();
    System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    return false;
    }
    return true;
    }

    //读取文件,fileName输入文件,id行数
    public static String readFile(String fileName,int id)
    {
    String dataStr = "";
    FileInputStream fis = null;
    try
    {
    FileReader file = new FileReader(fileName);//建立FileReader对象,并实例化为fr
    BufferedReader br=new BufferedReader(file);//建立BufferedReader对象,并实例化为br
    int i=1;
    String Line=br.readLine();//从文件读取一行字符串
    //System.out.println("Line1="+Line+"="+Line);
    //判断读取到的字符串是否不为空
    //while(Line!=null){
    //System.out.println(Line + "<br>");//输出从文件中读取的数据
    //if(i==line){dataStr=Line;break;}else{i=i+1;}
    //Line=br.readLine();//从文件中继续读取一行数据
    //}
    dataStr=Line;
    br.close();//关闭BufferedReader对象
    }
    catch(Exception e){
    }finally{
    try
    {
    if(fis!=null)
    fis.close();
    }catch(Exception e){}
    }
    return dataStr;
    }

       //读时长信息
    public String readtime(String file)
    {
    String str="/opt/cgogo/test/info.txt";
    String timelen = "";
    String cmd = "timelen "+file;
    runCmd(cmd);
    timelen=readFile(str,1);

      return timelen;
    }

        public static void main(String args[])
    {
    MediocreExecJavac me = new MediocreExecJavac();
    String infile = "/opt/cgogo/test/02.avi";
    String outfile = "01.flv";

    //时长
    String timelen = me.readtime(infile);
    System.out.println("02.avi timelen is :" + timelen);
    //转码
    if(me.transfer(infile,outfile)){
    System.out.println("the transfer is ok!");
    }else{
    System.out.println("the transfer is error!");
    }
    }
    }
  • 相关阅读:
    494. Target Sum 添加标点符号求和
    636. Exclusive Time of Functions 进程的执行时间
    714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
    377. Combination Sum IV 返回符合目标和的组数
    325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组
    275. H-Index II 递增排序后的论文引用量
    274. H-Index论文引用量
    RabbitMQ学习之HelloWorld(1)
    java之struts2的数据处理
    java之struts2的action的创建方式
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400495.html
Copyright © 2011-2022 走看看