1. 程式人生 > >linux+java+ffmpeg 實現音視訊轉碼技術

linux+java+ffmpeg 實現音視訊轉碼技術

linux+java+ffmpeg 實現音視訊轉碼技術

 執行命令 
 1.安裝lame-3.1.0
                tar -zvxf  lame-3.1.0.tar.gz       //解壓 
                cd lame-3.1                        //進入解壓後的檔案
                ./configure                        //配置
                make                               //編譯
                make install                       //安裝

//下載地址   http://download.csdn.net/download/qq_33563609/10107483

2.安裝yasm   
                tar -zvxf  yasm-1.3.0.tar.gz       
                cd yasm-1.3                       
                ./configure                       
                make                              
                make install                     

//下載地址  http://download.csdn.net/download/qq_33563609/10107517


 3.安裝ffmpeg  
                tar -zvxf  ffmpeg-3.4.tar.gz
                cd ffmpeg-3.4
                ./configure --enable-shared --enable-libmp3lame                      
                make                               
                make install                       
//下載地址  http://download.csdn.net/download/qq_33563609/10107527

 4.全部安裝後  執行   
                ffmpeg  --version  檢視是否安裝成功
                正常情況下會報錯 找不到 lame的啟動路徑  錯誤程式碼  0  或者 57  等等
                在檔案路徑   /etc/ld.so.conf   這個檔案 編輯這個檔案 
                此檔案預設內容是   include ld.so.conf.d/*.conf
                在檔案中 換行加入  /usr/local/lib  這段路徑然後儲存  並執行/sbin/ldconfig 來更新當前修改
                注意 編輯檔案應在root許可權下, su 回車 輸入密碼,密碼不顯示  許可權由$符號變為#代表權限改變了

                在執行  
                ffmpeg  -version  檢視是否安裝成功

5.執行        
                ffmepg -i input.wav -f mp3 -acodec libmp3lame -y output.mp3
                           輸入檔案                               輸出檔案
                           路徑名稱                               路徑名稱

6.maven中匯入jar包   jar包為  jave-1.0.2.jar
                maven本地匯入方法為   cmd 命令
                mvn install:install-file 
                    -Dfile=E:\jave-1.0.2.jar    //包的輸入路徑 
                    -DgroupId=jave 
                    -DartifactId=jave 
                    -Dversion=1.0.2 
                    -Dpackaging=jar 
                //執行完成後 jar 會放入maven 倉庫中  maven/repository/jave/jave/1.0.2/
                pom.xml檔案配置為
                <dependency>
                    <groupId>jave</groupId>
                    <artifactId>jave</artifactId>
                    <version>1.0.2</version>
                 </dependency>
//下載地址             http://download.csdn.net/download/qq_33563609/10107555

7.java程式碼    方案一
 /*  sources      輸入檔案的路徑和名稱
       *      desFileName  輸出檔案的路徑和名稱
       */
    public static File execute(String sources, String desFileName)
            throws Exception {
            File source=new File(sources);
            File target = new File(desFileName);
            AudioAttributes audio = new AudioAttributes();
            audio.setCodec("libmp3lame");               //編解碼器
            audio.setBitRate(new Integer(192000));      //音訊比率 MP3預設是128000kb  位元率   96000 128000 160000 192000 256000 384000 512000 1024000 1500000 2048000 4096000
            audio.setChannels(new Integer(2));          //聲道
            audio.setSamplingRate(new Integer(48000));  //取樣率
            //audio.setVolume(16);                      //音量
            EncodingAttributes attrs = new EncodingAttributes();
            attrs.setFormat("mp3");
            attrs.setAudioAttributes(audio);
            Encoder encoder = new Encoder();
            encoder.encode(source, target, attrs);
            return target;
 }   

8.java程式碼    方案二
public static void MavToMp3(String sources,String desFileName){
            List<String> commend = new ArrayList<String>();
            commend.add("/usr/local/bin/ffmpeg");
            commend.add("-i");
            commend.add(sources);
            commend.add("-f");
            commend.add("mp3");
            commend.add("-acodec");
            commend.add("libmp3lame");
            commend.add("-y");
            commend.add(desFileName);
            StringBuffer test=new StringBuffer();
            for(int i=0;i<commend.size();i++)
                    test.append(commend.get(i)+" ");
            System.out.println(test);
            ProcessBuilder builder = new ProcessBuilder();
            builder.command(commend);
            try {
                    builder.redirectErrorStream(true);
                    builder.start();
            } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }
            System.out.println("音訊轉換成功");
 }