2012-12-11 119 views
4

我成功地從android.now中使用javacv從圖像序列中獲取視頻我有問題是如何將音頻合併到新創建的video.is它可能在android或javacv集成?如何合併音頻文件與新的視頻文件?它可能在android?

Here is my code, 


      String path ="/mnt/sdcard/Video_images"; 



    File folder = new File(path); 


    File[] listOfFiles = folder.listFiles(); 
     if(listOfFiles.length>0) 
     { 


     iplimage = new opencv_core.IplImage[listOfFiles.length]; 


     for (int j = 0; j < listOfFiles.length; j++) { 

     String files="";  

     if (listOfFiles[j].isFile()) 
     { 
     files = listOfFiles[j].getName(); 
     System.out.println(" j " +j + listOfFiles[j]); 
     } 


     String[] tokens = files.split("\\.(?=[^\\.]+$)"); 
     String name=tokens[0]; 

    Toast.makeText(getBaseContext(), "size"+listOfFiles.length, Toast.LENGTH_SHORT).show();  




     iplimage[j]=cvLoadImage("/mnt/sdcard/Video_images/"+name+".jpg"); 


     } 

    } 

//   


           FFmpegFrameRecorder recorder = new  
        FFmpegFrameRecorder("/mnt/sdcard/Video_images  

        /output"+System.currentTimeMillis()+".mp4",200,150);                      

     try { 
      recorder.setVideoCodec(a); //CODEC_ID_MPEG4 //CODEC_ID_MPEG1VIDEO 

      recorder.setFrameRate(24);      
      recorder.setPixelFormat(PIX_FMT_YUV420P); //PIX_FMT_YUV420P 


      recorder.start(); 


      for (int i=0;i<iplimage.length;i++) 

       { 

       recorder.record(iplimage[i]); 



       } 
      recorder.stop(); 
      } 
     catch (Exception e){ 
      e.printStackTrace(); 
      } 

在這段代碼中,如何合併我的音頻文件?

+0

你做了合併嗎? –

回答

0

Android沒有合併視頻文件。如果您需要在設備上執行此操作,您需要找到一些可以爲您處理此問題的Java JAR。

+0

hi commonsware.did你有任何樣本或鏈接有關嗎? – rams

+0

@rams:不,對不起。 – CommonsWare

+0

@CommonsWare自2012年以來有關此主題的任何更新?我知道有'MediaMuxer',但只有API> 18,它不會做編解碼器轉換... – ChristopheCVB

0

應該可以使用最新版本的javacv,它可以從here下載。

這裏,如果你想在你創建你的MP4合併與視頻音頻的代碼會喜歡什麼想法:

FFmpegFrameGrabber grabber1 = new FFmpegFrameGrabber("song.mp3"); 
    grabber1.start(); 
    FFmpegFrameRecorder recorder = new  
    FFmpegFrameRecorder("/mnt/sdcard/Video_images/output"+System.currentTimeMillis()+".mp4",200,150, grabber1.getAudioChannels()); 

    try { 
     recorder.setVideoCodec(a); //CODEC_ID_MPEG4 //CODEC_ID_MPEG1VIDEO 
     recorder.setFrameRate(24);      
     recorder.setPixelFormat(PIX_FMT_YUV420P); //PIX_FMT_YUV420P    
     recorder.start(); 

     com.googlecode.javacv.Frame frame1 = new com.googlecode.javacv.Frame(); 
     for (int i=0;i<iplimage.length;i++) 
     { 
      frame1 = grabber1.grabFrame(); 
      recorder.record(frame1); 
      recorder.record(iplimage[i]); 
     } 
     recorder.stop(); 
     grabber1.stop(); 

這可能不是100%正確的,但應該是一個不錯的出發地。當然,你想確保你的frame1在你嘗試記錄之前不是空的。

+0

第一行顯示targetInovationError。如何解決此問題? –

相關問題