2015-04-08 146 views
0

我正在FFMPEG庫,其中我合併音頻(.wav文件)與視頻(.mp4文件),該iam使用下面的命令在這裏:Android ffmpeg無法合併音頻(.wav文件)與視頻(.mp4文件)

*String commandStr= "ffmpeg,-y,-i,mnt/sdcard/Scatta/Scattatemp.mp4,-i,/storage/emulated/0/MicDroid/recordings/video.wav ,-strict,experimental,-map,0:0,-map,1:0,-vcodec,mpeg4,-vb,15496k,-ab,128k,-ac,2,-ar,22050,-shortest,mnt/sdcard/Scatta/mergedFile.mp4"; 

爲我用下面的代碼,但我的命令不能正常工作,我得到Commandvalidation未能例外

GeneralUtils.deleteFileUtil(workFolder + "/vk.log"); 

     PowerManager powerManager = (PowerManager)_act.getSystemService(Activity.POWER_SERVICE); 
     WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VK_LOCK"); 
     Log.d("Prefs.TAG", "Acquire wake lock"); 
     wakeLock.acquire(); 
String commandStr= "ffmpeg,-y,-i,mnt/sdcard/Scatta/Scattatemp.mp4,-i,/storage/emulated/0/MicDroid/recordings/video.wav ,-strict,experimental,-map,0:0,-map,1:0,-vcodec,mpeg4,-vb,15496k,-ab,128k,-ac,2,-ar,22050,-shortest,mnt/sdcard/Scatta/mergedFile.mp4" ; 

LoadJNI vk = new LoadJNI(); 
     try { 

      vk.run(GeneralUtils.utilConvertToComplex(commandStr), workFolder, getApplicationContext()); 
      GeneralUtils.copyFileToFolder(vkLogPath, demoVideoFolder); 

     } catch (CommandValidationException e) { 
      Log.e("Prefs.TAG", "vk run exeption.", e); 
      commandValidationFailedFlag = true; 
     } catch (Throwable e) { 
      Log.e("Prefs.TAG", "vk run exeption.", e); 
     } 
     finally { 
      if (wakeLock.isHeld()) 
       wakeLock.release(); 
      else{ 
       Log.i("Prefs.TAG", "Wake lock is already released, doing nothing"); 
      } 
     } 
     Log.i("Prefs.TAG", "doInBackground finished"); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
     System.out.println(".exception"+e.toString()); 
    } 

我得到以下異常

04-08 10:00:38.891: D/ffmpeg4android(7781): deleteing: /data/data/org.scatta.androidclient/files//vk.log isdeleted: false 
04-08 10:00:38.891: D/Prefs.TAG(7781): Acquire wake lock 
04-08 10:00:38.896: I/System.out(7781): <--- command strffmpeg -i mnt/sdcard/Scatta/Scattatemp.mp4 -i /storage/emulated/0/MicDroid/recordings/video.wav -acodec copy mnt/sdcard/Scatta/mergedFile.mp4 
04-08 10:00:38.896: E/ffmpeg4android(7781): Command validation failed. 
04-08 10:00:38.896: E/ffmpeg4android(7781): Check if input file exists: /storage/emulated/0/MicDroid/recordings/video.wav 
    04-08 10:00:38.896: E/Prefs.TAG(7781): vk run exeption. 
    04-08 10:00:38.896: E/Prefs.TAG(7781): com.netcompss.ffmpeg4android.CommandValidationException 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at com.netcompss.loader.LoadJNI.run(LoadJNI.java:26) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at com.scatta.androidclient.ui.PlaybackScreen$TranscdingBackground.doInBackground(PlaybackScreen.java:159) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at com.scatta.androidclient.ui.PlaybackScreen$TranscdingBackground.doInBackground(PlaybackScreen.java:1) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
    04-08 10:00:38.896: E/Prefs.TAG(7781): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
04-08 10:00:38.896: E/Prefs.TAG(7781):  at java.lang.Thread.run(Thread.java:856) 
+0

您好navya我的問題在您的命令 –

+0

@AnandMakwana是先生..但我沒有得到我在做錯的地方 – User11

+0

「檢查輸入文件是否存在:/storage/emulated/0/MicDroid/recordings/video.wav 「 – slhck

回答

0

- 你可以看到有錯誤呼叫檢查你的文件,所以首先檢查你的文件真的存在或不是你想要合併。

另一件事是檢查你的命令

Check here

-Above是相關的鏈接你的答案的感謝!

+0

但這不起作用 – User11

相關問題