合并音频和图像,并使用ffmpeg android创建视频

时间:2013-06-05 12:18:55

标签: android ffmpeg java-io

我想合并IMAGE + AUDIO并使用FFMPEG库将它们转换为视频,我成功编译了库,并获得了libfmpeg.so.但是通过java代码执行ffmpeg命令时出现问题。这是我正在使用的命令...“ffmpeg -i image8.jpg -i file.m4a -acodec copy test.mp4”如果我通过CMD执行此ffmpeg命令,我的video.mp4文件已成功创建,但如果通过我的Activity执行相同的命令,则不会创建任何文件。

我使用了代码:

public class Mpeg extends Activity {
static {

System.loadLibrary("ffmpeg");

}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mpeg);
File mf = Environment.getExternalStorageDirectory();

String livestream = mf.getAbsoluteFile()+"smile.png";

String folderpth = mf.getAbsoluteFile()+"RABBA.MP3";

//String output="/home/saicomputer/game.mp4";

String output = new File(Environment.getExternalStorageDirectory(), "video.mp4").getAbsolutePath();
Log.i("Test", "Let's set output to " + output);

String cmd="ffmpeg -i "+ livestream +" -i "+ folderpth +" -acodec copy "+ output;

 Log.e("chck plzzzzz", "after "+ cmd);

//String jaiho="ffmpeg -i image8.jpg -i file.m4a -acodec copy test.mp4";

try{

Process p = Runtime.getRuntime().exec(cmd);

}
catch(Exception e)
{
    System.out.println("exception"+e);
}

并且logcat是

06-05 17:58:10.686: D/dalvikvm(1189): Trying to load lib  /data/data/com.example.myfmpeg/lib/libffmpeg.so 0x412a5cf0
06-05 17:58:10.756: I/dalvikvm(1189): threadid=3: reacting to signal 3
06-05 17:58:10.955: D/dalvikvm(1189): Added shared lib /data/data/com.example.myfmpeg/lib/libffmpeg.so 0x412a5cf0
06-05 17:58:10.955: D/dalvikvm(1189): No JNI_OnLoad found in /data/data/com.example.myfmpeg/lib/libffmpeg.so 0x412a5cf0, skipping init
06-05 17:58:11.024: I/dalvikvm(1189): Wrote stack traces to '/data/anr/traces.txt'
06-05 17:58:11.215: I/dalvikvm(1189): threadid=3: reacting to signal 3
06-05 17:58:11.326: I/dalvikvm(1189): Wrote stack traces to '/data/anr/traces.txt'
06-05 17:58:11.466: E/image(1189): imageeeeeeeee /mnt/sdcard/smile.png
06-05 17:58:11.466: E/Test(1189): songggggggggg /mnt/sdcard/RABBA.MP3
06-05 17:58:11.476: E/Test(1189): outputttttt /mnt/sdcard/video.mp4
06-05 17:58:11.476: E/chck plzzzzz(1189): after ffmpeg -i /mnt/sdcard/smile.png -i /mnt/sdcard/RABBA.MP3 -acodec copy /mnt/sdcard/video.mp4
06-05 17:58:11.896: E/AndroidRuntime(1189): FATAL EXCEPTION: main
06-05 17:58:11.896: E/AndroidRuntime(1189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfmpeg/com.example.myfmpeg.Mpeg}: java.lang.RuntimeException: java.io.IOException: Error running exec(). Command: [ffmpeg, -i, /mnt/sdcard/smile.png, -i, /mnt/sdcard/RABBA.MP3, -acodec, copy, /mnt/sdcard/video.mp4]    Working Directory: null Environment: null
06-05 17:58:11.896: E/AndroidRuntime(1189):     at     android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at    android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.os.Looper.loop(Looper.java:137)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.main(ActivityThread.java:4424)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at java.lang.reflect.Method.invokeNative(Native Method)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at java.lang.reflect.Method.invoke(Method.java:511)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at dalvik.system.NativeStart.main(Native Method)
06-05 17:58:11.896: E/AndroidRuntime(1189): Caused by: java.lang.RuntimeException: java.io.IOException: Error running exec(). Command: [ffmpeg, -i, /mnt/sdcard/smile.png, -i, /mnt/sdcard/RABBA.MP3, -acodec, copy, /mnt/sdcard/video.mp4] Working Directory: null Environment: null

我不知道从java运行时的错误是什么。任何帮助????

0 个答案:

没有答案