【发布时间】:2015-04-08 05:00:30
【问题描述】:
我正在研究 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 failed 异常
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)
【问题讨论】:
-
您好 navya 我的命令中有问题
-
@AnandMakwana 是的先生..但我没有找到我做错的地方
-
"检查输入文件是否存在:/storage/emulated/0/MicDroid/recordings/video.wav"
-
(你忘了写@slhck)你可以使用Java检查文件是否存在。你为什么认为文件在那里?你确定在你指定的位置有
video.wav吗?
标签: android audio video ffmpeg